For ADSP, only a limited number of FastRPC context banks (CBs) are available. Each CB supports a single session, which means only a few processes can run on ADSP simultaneously. If all sessions are consumed by fastrpc daemons, no session remains available when a user application starts, causing the application to fail.
To work around this, some DT set: qcom,nsessions = <5>; which duplicated sessions inline during context bank initialisation. Upstream feedback indicated that this policy does not belong in DT and should be handled at the driver level instead. This series iterates over CB child nodes directly and synchronously, replacing of_platform_populate() and of_platform_depopulate(), and moves the ADSP session duplication to the driver. The qcom,nsessions binding is deprecated in the same series. Signed-off-by: Vinayak Katoch <[email protected]> --- Changes in v6: - Drop unused dev_set_drvdata() from fastrpc_cb_init() - Use device_for_each_child_reverse() to destroy CB devices - Return -ENODEV when of_platform_device_create() fails - Add a comment for FASTRPC_DUP_SESSIONS - Link to v5: https://lore.kernel.org/r/[email protected] Changes in v5: - Introduce fastrpc_cb_devices_create() and fastrpc_cb_devices_destroy() for symmetric CB device lifecycle management in probe and remove. - Replace module_init/exit pair with module_rpmsg_driver(). - Link to v4: https://lore.kernel.org/r/[email protected] Changes in v4: - Rebased on latest linux-next (a8406e6c0b79, 2026-08-25) - Link to v3: https://lore.kernel.org/r/[email protected] Changes in v3: - Add patch to fix async probe race with of_platform_populate(). - Rename fastrpc_cb_probe() to fastrpc_cb_init(). - Reorder series: sync fix, nsessions, binding. - Collect Reviewed-by tags. - Link to v2: https://lore.kernel.org/r/[email protected] Changes in v2: - Added patch to deprecate the qcom,nsessions dt-binding. - Kept the logic unchanged; only split into two patches. - Link to v1: https://lore.kernel.org/r/[email protected] --- Vinayak Katoch (3): misc: fastrpc: iterate CB nodes manually instead of of_platform_populate misc: fastrpc: move ADSP duplicate session creation to the driver dt-bindings: misc: qcom,fastrpc: deprecate qcom,nsessions .../devicetree/bindings/misc/qcom,fastrpc.yaml | 2 + drivers/misc/fastrpc.c | 128 ++++++++++----------- 2 files changed, 64 insertions(+), 66 deletions(-) --- base-commit: 8f7df005a7564bd7ffa75da9c3085d5b996f1e16 change-id: 20260609-dup-sessions-ea2acaac1994 Best regards, -- Vinayak Katoch <[email protected]>
