Re: [PATCH] interconnect: qcom: Skip get_bw on QoS programming providers
From: Bartosz Golaszewski
Date: Tue Sep 22 2026 - 05:06:01 EST
On Tue, 22 Sep 2026 04:06:23 +0200, Shawn Guo
<shengchao.guo@xxxxxxxxxxxxxxxx> said:
> Programming the static QoS configuration in qcom_icc_rpmh_probe()
> touches NoC registers directly, and nothing in that path clocks or
> powers the NoC first. It has been working only because the
> interconnect core used to vote every node to INT_MAX while adding it,
> and that vote stays in hardware until sync_state.
>
> Reading the boot-time AMC votes back from RPMh removed that implicit
> guarantee: a NoC whose BCMs come out of the bootloader unvoted is now
> left unclocked, and the first QoS register access aborts. On Qualcomm
> Nord SoC, the MMSS NoC dies while programming qnm_camnoc_hf, taking the
> board down before rootfs:
>
> Internal error: synchronous external abort: 0000000096001610
> regmap_mmio_read32le+0xc/0xa4
> regmap_update_bits_base+0x64/0x98
> qcom_icc_rpmh_probe+0x44c/0x540
>
> Only install the get_bw() callback for providers that do not program
> QoS, i.e. those without a regmap config. Providers that do program
> QoS keep the previous INT_MAX initial votes, so their register
> accesses stay safe, and the rest keep the benefit of honouring the
> boot-time votes.
>
> Reported-by: Bartosz Golaszewski <brgl@xxxxxxxxxx>
> Fixes: 11a44c6087c6 ("interconnect: qcom: implement get_bw with rpmh_read")
> Assisted-by: LLM
> Signed-off-by: Shawn Guo <shengchao.guo@xxxxxxxxxxxxxxxx>
> ---
Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxxxxxxxx>
Tested-by: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxxxxxxxx>