Skip to content

Add poll mode support for improved fastrpc performance#258

Open
ekanshibu wants to merge 1 commit intoqualcomm:developmentfrom
ekanshibu:set_option
Open

Add poll mode support for improved fastrpc performance#258
ekanshibu wants to merge 1 commit intoqualcomm:developmentfrom
ekanshibu:set_option

Conversation

@ekanshibu
Copy link
Contributor

For any remote call to DSP, after sending an invocation message, fastRPC driver waits for glink response and during this time the CPU can go into low power modes. With polling mode support fastRPC driver can poll continuously on a memory after sending a message to remote subsystem which will eliminate CPU wakeup and scheduling latencies and reduce fastRPC overhead. With this change, DSP always sends a glink response which will get ignored if polling mode didn't time out.

Steps to enable polling mode:

** Remote control structure **:

typedef enum remote_rpc_latency_flags {
RPC_DISABLE_QOS = 0,
RPC_PM_QOS,
RPC_ADAPTIVE_QOS,
RPC_POLL_QOS,
} remote_rpc_control_latency_t;

struct remote_rpc_control_latency {
remote_rpc_control_latency_t enable;
uint32_t latency;
};

** Application code **:

struct remote_rpc_control_latency data;
data.enable = RPC_POLL_QOS;
err = remote_handle64_control(h, DSPRPC_CONTROL_LATENCY, (void*)&data, sizeof(data));

@ekanshibu ekanshibu force-pushed the set_option branch 2 times, most recently from b31eda1 to 09efec3 Compare November 28, 2025 04:55
@github-actions
Copy link

This pull request has been marked as stale due to 60 days of inactivity.

@github-actions github-actions bot added the Stale label Jan 28, 2026
For any remote call to DSP, after sending an invocation message,
fastRPC driver waits for glink response and during this time the
CPU can go into low power modes. With polling mode support fastRPC
driver can poll continuously on a memory after sending a message
to remote subsystem which will eliminate CPU wakeup and scheduling
latencies and reduce fastRPC overhead. With this change, DSP always
sends a glink response which will get ignored if polling mode didn't
time out.

Steps to enable polling mode:

** Remote control structure **:

typedef enum remote_rpc_latency_flags {
  RPC_DISABLE_QOS = 0,
  RPC_PM_QOS,
  RPC_ADAPTIVE_QOS,
  RPC_POLL_QOS,
} remote_rpc_control_latency_t;

struct remote_rpc_control_latency {
  remote_rpc_control_latency_t enable;
  uint32_t latency;
};

** Application code **:

struct remote_rpc_control_latency data;
data.enable = RPC_POLL_QOS;
err = remote_handle64_control(h, DSPRPC_CONTROL_LATENCY, (void*)&data, sizeof(data));

Signed-off-by: Ekansh Gupta <[email protected]>
@github-actions
Copy link

qualcomm/fastrpc.triage This pull request has been marked as stale due to 30 days of inactivity.

@github-actions github-actions bot added the Stale label Mar 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant