On Fri, Aug 28, 2026 at 11:43:10PM +0530, Mukesh Ojha wrote:
> When qcom_pas_attach() is called (subsystem already running at kernel
> probe time), it sets handover_issued = true before enabling the handover
> IRQ. The handover line may be high already (from bootloader boot), causing
> the IRQ to fire immediately. Since proxy resources were never acquired via
> qcom_pas_pds_enable() in the attach path, the resulting handover callback
> calls pm_runtime_put() on proxy power domains with usage count = 0:
>
> genpd genpd:0:d00000.remoteproc: Runtime PM usage count underflow!
> genpd genpd:1:d00000.remoteproc: Runtime PM usage count underflow!
>
> Also, because the old code left handover_irq_enabled = false after attach
> (fixed separately), the handover IRQ was never disabled inside the handler,
> allowing it to fire repeatedly and generating multiple underflows.
>
> Fix by recording whether handover_issued was already set before the IRQ
> fires and skipping the handover callback in that case. The callback
> releases proxy resources that are only held when the normal start path
> ran qcom_pas_pds_enable(); if handover was already marked as issued,
> those resources were never acquired and must not be released.
>
> Fixes: 16472c99f469 ("remoteproc: qcom: pas: Add late attach support for
> subsystems")
> Signed-off-by: Mukesh Ojha <[email protected]>
Shawn sent the same patch already and the same comment applies here:
https://lore.kernel.org/linux-arm-msm/[email protected]/
v2 fixes it properly:
https://lore.kernel.org/linux-arm-msm/[email protected]/
Thanks,
Stephan