Re: [PATCH v9 4/4] misc: fastrpc: Add polling mode support for fastRPC driver

From: Dmitry Baryshkov

Date: Thu Apr 23 2026 - 06:17:53 EST


On Thu, Apr 23, 2026 at 02:07:23PM +0530, Ekansh Gupta wrote:
> On 22-04-2026 21:17, Dmitry Baryshkov wrote:
> > On Wed, Apr 22, 2026 at 02:54:09PM +0530, Ekansh Gupta wrote:
> >> 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. This adds latency to overall fastrpc
> >> call as CPU wakeup and scheduling latencies are included. Add polling
> >> mode support with which fastRPC driver will poll continuously on a
> >> memory after sending a message to remote subsystem which will eliminate
> >> CPU wakeup and scheduling latencies and reduce fastRPC overhead. In case
> >> poll timeout happens, the call will fallback to normal RPC mode. Poll
> >> mode can be enabled by user by using FASTRPC_IOCTL_SET_OPTION ioctl
> >> request with FASTRPC_POLL_MODE request id.
> >>
> >> Signed-off-by: Ekansh Gupta <ekansh.gupta@xxxxxxxxxxxxxxxx>
> >> ---
> >> drivers/misc/fastrpc.c | 148 ++++++++++++++++++++++++++++++++++--
> >> include/uapi/misc/fastrpc.h | 25 ++++++
> >> 2 files changed, 166 insertions(+), 7 deletions(-)
> >>
> >> @@ -2331,6 +2446,22 @@ static const struct fastrpc_soc_data default_soc_data = {
> >> .dma_addr_bits_default = 32,
> >> };
> >>
> >> +/*
> >> + * Older platforms that use default_soc_data but whose DSP firmware
> >> + * supports the FastRPC polling mode.
> >
> > There should be a comment, "don't add more platforms to this list".
> What if in future any platform is enabled that is based on older archs,
> i.e. doesn't use kaanapali compatible but supports polling mode. In that
> case this list might require an addition.

No. New platforms can get a platform-specific compat.

> >
> >> + */
> >> +static const struct of_device_id fastrpc_poll_supported_machines[] __maybe_unused = {
> >> + { .compatible = "qcom,qcs8300" },
> >> + { .compatible = "qcom,qcs9100" },
> >
> > Use qcom,sa8775p instead. See sa8775p-ride boards.
> > What about qcom,sar2130p?
> > qcom,sc8280xp?
> > qcom,milos?
> I'm checking for these platforms also. Will add if these are supporting
> polling mode.

Thanks.

>
> //Ekansh
> >
> >> + { .compatible = "qcom,sm8450" },
> >> + { .compatible = "qcom,sm8550" },
> >> + { .compatible = "qcom,sm8650" },
> >> + { .compatible = "qcom,sm8750" },
> >> + { .compatible = "qcom,x1e80100" },
> >> + { .compatible = "qcom,x1p42100" },
> >> + {},
> >> +};
> >> +
> >> static int fastrpc_rpmsg_probe(struct rpmsg_device *rpdev)
> >> {
> >> struct device *rdev = &rpdev->dev;
> >
>

--
With best wishes
Dmitry