* [PATCH 0/4] Switch Nord CDSPs onto NMXC power domain
@ 2026-08-26 10:27 Shawn Guo
2026-08-26 10:27 ` [PATCH 1/4] dt-bindings: power: qcom,rpmhpd: Add NMXC power domain index Shawn Guo
` (3 more replies)
0 siblings, 4 replies; 13+ messages in thread
From: Shawn Guo @ 2026-08-26 10:27 UTC (permalink / raw)
To: Ulf Hansson, Bjorn Andersson
Cc: Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Konrad Dybcio, Dmitry Baryshkov, Abel Vesa, Bartosz Golaszewski,
Anurag Pateriya, linux-arm-msm, linux-remoteproc, devicetree,
linux-pm, linux-kernel, Shawn Guo
The Nord CDSP subsystems do not take their memory rail from the shared
MX rail like all other Qualcomm SoCs, but from a dedicated NMXC RPMh
resource. Nord's initial PAS support was merged with "mx" in the proxy
power domain list, which leaves CDSPs relying on other components to
vote on NMXC rail.
The first two pmdomain patches add the NMXC domain index and register
the nmxc.lvl resource in the Nord rpmhpd table. The other two remoteproc
patches correct the Nord PAS binding and driver to name "nmxc" instead of
"mx" for CDSPs, so that the right rail is held during PAS authentication
and boot.
The pmdomain and remoteproc changes can be applied independently -- only
the power domain name string changes on the remoteproc side, so there is
no build dependency between the two halves. I send them as one series to
demonstrate this is fixing "one problem". I can split if needed.
There is no ABI concern: no in-tree device tree references the Nord CDSPs
yet.
Anurag Pateriya (3):
dt-bindings: power: qcom,rpmhpd: Add NMXC power domain index
pmdomain: qcom: rpmhpd: Add NMXC power domain for Nord
remoteproc: qcom: pas: Switch Nord CDSPs from MX to NMXC
Shawn Guo (1):
dt-bindings: remoteproc: qcom,nord-pas: Switch CDSPs to NMXC rail
.../bindings/remoteproc/qcom,nord-pas.yaml | 28 +++++++++++--------
drivers/pmdomain/qcom/rpmhpd.c | 6 ++++
drivers/remoteproc/qcom_q6v5_pas.c | 8 +++---
include/dt-bindings/power/qcom,rpmhpd.h | 1 +
4 files changed, 27 insertions(+), 16 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 1/4] dt-bindings: power: qcom,rpmhpd: Add NMXC power domain index
2026-08-26 10:27 [PATCH 0/4] Switch Nord CDSPs onto NMXC power domain Shawn Guo
@ 2026-08-26 10:27 ` Shawn Guo
2026-08-26 10:27 ` [PATCH 2/4] pmdomain: qcom: rpmhpd: Add NMXC power domain for Nord Shawn Guo
` (2 subsequent siblings)
3 siblings, 0 replies; 13+ messages in thread
From: Shawn Guo @ 2026-08-26 10:27 UTC (permalink / raw)
To: Ulf Hansson, Bjorn Andersson
Cc: Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Konrad Dybcio, Dmitry Baryshkov, Abel Vesa, Bartosz Golaszewski,
Anurag Pateriya, linux-arm-msm, linux-remoteproc, devicetree,
linux-pm, linux-kernel, Shawn Guo
From: Anurag Pateriya <anurag.pateriya@oss.qualcomm.com>
Nord routes the NSP (compute DSP) memory rail through a dedicated NMXC
resource instead of the shared MX rail. Add the index so device trees can
reference it.
Signed-off-by: Anurag Pateriya <anurag.pateriya@oss.qualcomm.com>
Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
---
include/dt-bindings/power/qcom,rpmhpd.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/dt-bindings/power/qcom,rpmhpd.h b/include/dt-bindings/power/qcom,rpmhpd.h
index 07bd2a7b0150..92c8408dbc57 100644
--- a/include/dt-bindings/power/qcom,rpmhpd.h
+++ b/include/dt-bindings/power/qcom,rpmhpd.h
@@ -32,6 +32,7 @@
#define RPMHPD_GBX 22
#define RPMHPD_NSP3 23
#define RPMHPD_GFX1 24
+#define RPMHPD_NMXC 25
/* RPMh Power Domain performance levels */
#define RPMH_REGULATOR_LEVEL_RETENTION 16
--
2.43.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 2/4] pmdomain: qcom: rpmhpd: Add NMXC power domain for Nord
2026-08-26 10:27 [PATCH 0/4] Switch Nord CDSPs onto NMXC power domain Shawn Guo
2026-08-26 10:27 ` [PATCH 1/4] dt-bindings: power: qcom,rpmhpd: Add NMXC power domain index Shawn Guo
@ 2026-08-26 10:27 ` Shawn Guo
2026-08-26 10:38 ` sashiko-bot
` (2 more replies)
2026-08-26 10:27 ` [PATCH 3/4] dt-bindings: remoteproc: qcom,nord-pas: Switch CDSPs to NMXC rail Shawn Guo
2026-08-26 10:27 ` [PATCH 4/4] remoteproc: qcom: pas: Switch Nord CDSPs from MX to NMXC Shawn Guo
3 siblings, 3 replies; 13+ messages in thread
From: Shawn Guo @ 2026-08-26 10:27 UTC (permalink / raw)
To: Ulf Hansson, Bjorn Andersson
Cc: Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Konrad Dybcio, Dmitry Baryshkov, Abel Vesa, Bartosz Golaszewski,
Anurag Pateriya, linux-arm-msm, linux-remoteproc, devicetree,
linux-pm, linux-kernel, Shawn Guo
From: Anurag Pateriya <anurag.pateriya@oss.qualcomm.com>
Add the nmxc.lvl RPMh resource and register it in the Nord power domain
table. Nord supplies the NSP memory rail from this dedicated resource
rather than from the shared MX rail, so consumers need it exposed as its
own power domain.
Signed-off-by: Anurag Pateriya <anurag.pateriya@oss.qualcomm.com>
Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
---
drivers/pmdomain/qcom/rpmhpd.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/pmdomain/qcom/rpmhpd.c b/drivers/pmdomain/qcom/rpmhpd.c
index 96e4bd2f5a14..717c44d1c39a 100644
--- a/drivers/pmdomain/qcom/rpmhpd.c
+++ b/drivers/pmdomain/qcom/rpmhpd.c
@@ -198,6 +198,11 @@ static struct rpmhpd mxc_ao = {
.res_name = "mxc.lvl",
};
+static struct rpmhpd nmxc = {
+ .pd = { .name = "nmxc", },
+ .res_name = "nmxc.lvl",
+};
+
static struct rpmhpd nsp = {
.pd = { .name = "nsp", },
.res_name = "nsp.lvl",
@@ -331,6 +336,7 @@ static struct rpmhpd *nord_rpmhpds[] = {
[RPMHPD_MX_AO] = &mx_ao,
[RPMHPD_MXC] = &mxc,
[RPMHPD_MXC_AO] = &mxc_ao,
+ [RPMHPD_NMXC] = &nmxc,
[RPMHPD_NSP0] = &nsp0,
[RPMHPD_NSP1] = &nsp1,
[RPMHPD_NSP2] = &nsp2,
--
2.43.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 3/4] dt-bindings: remoteproc: qcom,nord-pas: Switch CDSPs to NMXC rail
2026-08-26 10:27 [PATCH 0/4] Switch Nord CDSPs onto NMXC power domain Shawn Guo
2026-08-26 10:27 ` [PATCH 1/4] dt-bindings: power: qcom,rpmhpd: Add NMXC power domain index Shawn Guo
2026-08-26 10:27 ` [PATCH 2/4] pmdomain: qcom: rpmhpd: Add NMXC power domain for Nord Shawn Guo
@ 2026-08-26 10:27 ` Shawn Guo
2026-08-26 12:52 ` Konrad Dybcio
2026-08-26 10:27 ` [PATCH 4/4] remoteproc: qcom: pas: Switch Nord CDSPs from MX to NMXC Shawn Guo
3 siblings, 1 reply; 13+ messages in thread
From: Shawn Guo @ 2026-08-26 10:27 UTC (permalink / raw)
To: Ulf Hansson, Bjorn Andersson
Cc: Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Konrad Dybcio, Dmitry Baryshkov, Abel Vesa, Bartosz Golaszewski,
Anurag Pateriya, linux-arm-msm, linux-remoteproc, devicetree,
linux-pm, linux-kernel, Shawn Guo
Nord supplies the CDSP memory rail from a dedicated NMXC RPMh resource
instead of the shared MX rail, so the CDSPs have to reference "nmxc"
rather than "mx" as their second proxy power domain.
That makes the ADSP and CDSP name lists diverge at the second entry, so a
single top-level 'items' list can no longer describe both. Keep only the
item count at the top level and move the per-domain descriptions into the
respective branches of the existing conditional.
Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
---
.../bindings/remoteproc/qcom,nord-pas.yaml | 28 +++++++++++--------
1 file changed, 16 insertions(+), 12 deletions(-)
diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,nord-pas.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,nord-pas.yaml
index e90d2953ba69..b09b51f26afe 100644
--- a/Documentation/devicetree/bindings/remoteproc/qcom,nord-pas.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,nord-pas.yaml
@@ -24,17 +24,11 @@ properties:
power-domains:
minItems: 2
- items:
- - description: CX power domain
- - description: MX power domain
- - description: NSP power domain
+ maxItems: 3
power-domain-names:
minItems: 2
- items:
- - const: cx
- - const: mx
- - const: nsp
+ maxItems: 3
reg:
maxItems: 1
@@ -104,15 +98,25 @@ allOf:
then:
properties:
power-domains:
- maxItems: 2
+ items:
+ - description: CX power domain
+ - description: MX power domain
power-domain-names:
- maxItems: 2
+ items:
+ - const: cx
+ - const: mx
else:
properties:
power-domains:
- minItems: 3
+ items:
+ - description: CX power domain
+ - description: NMXC power domain
+ - description: NSP power domain
power-domain-names:
- minItems: 3
+ items:
+ - const: cx
+ - const: nmxc
+ - const: nsp
unevaluatedProperties: false
--
2.43.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 4/4] remoteproc: qcom: pas: Switch Nord CDSPs from MX to NMXC
2026-08-26 10:27 [PATCH 0/4] Switch Nord CDSPs onto NMXC power domain Shawn Guo
` (2 preceding siblings ...)
2026-08-26 10:27 ` [PATCH 3/4] dt-bindings: remoteproc: qcom,nord-pas: Switch CDSPs to NMXC rail Shawn Guo
@ 2026-08-26 10:27 ` Shawn Guo
2026-08-26 11:06 ` Abel Vesa
3 siblings, 1 reply; 13+ messages in thread
From: Shawn Guo @ 2026-08-26 10:27 UTC (permalink / raw)
To: Ulf Hansson, Bjorn Andersson
Cc: Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Konrad Dybcio, Dmitry Baryshkov, Abel Vesa, Bartosz Golaszewski,
Anurag Pateriya, linux-arm-msm, linux-remoteproc, devicetree,
linux-pm, linux-kernel, Shawn Guo
From: Anurag Pateriya <anurag.pateriya@oss.qualcomm.com>
The Nord CDSP subsystems keep their memory rail on the dedicated NMXC
resource, not on the shared MX rail. Replace "mx" with "nmxc" in the proxy
power domain list of all four CDSP resources so the correct rail is held
during PAS authentication and boot.
Signed-off-by: Anurag Pateriya <anurag.pateriya@oss.qualcomm.com>
Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
---
drivers/remoteproc/qcom_q6v5_pas.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c
index ca8e61254c44..5dd954b57852 100644
--- a/drivers/remoteproc/qcom_q6v5_pas.c
+++ b/drivers/remoteproc/qcom_q6v5_pas.c
@@ -1469,7 +1469,7 @@ static const struct qcom_pas_data nord_cdsp0_resource = {
.auto_boot = true,
.proxy_pd_names = (char*[]){
"cx",
- "mx",
+ "nmxc",
"nsp",
NULL
},
@@ -1490,7 +1490,7 @@ static const struct qcom_pas_data nord_cdsp1_resource = {
.auto_boot = true,
.proxy_pd_names = (char*[]){
"cx",
- "mx",
+ "nmxc",
"nsp",
NULL
},
@@ -1511,7 +1511,7 @@ static const struct qcom_pas_data nord_cdsp2_resource = {
.auto_boot = true,
.proxy_pd_names = (char*[]){
"cx",
- "mx",
+ "nmxc",
"nsp",
NULL
},
@@ -1532,7 +1532,7 @@ static const struct qcom_pas_data nord_cdsp3_resource = {
.auto_boot = true,
.proxy_pd_names = (char*[]){
"cx",
- "mx",
+ "nmxc",
"nsp",
NULL
},
--
2.43.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 2/4] pmdomain: qcom: rpmhpd: Add NMXC power domain for Nord
2026-08-26 10:27 ` [PATCH 2/4] pmdomain: qcom: rpmhpd: Add NMXC power domain for Nord Shawn Guo
@ 2026-08-26 10:38 ` sashiko-bot
2026-08-26 11:05 ` Abel Vesa
2026-08-26 13:04 ` Konrad Dybcio
2 siblings, 0 replies; 13+ messages in thread
From: sashiko-bot @ 2026-08-26 10:38 UTC (permalink / raw)
To: Shawn Guo; +Cc: devicetree, robh, conor+dt
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues:
- [High] Missing cleanup of previously initialized genpds on error paths in rpmhpd_probe() leading to Use-After-Free list corruption.
--
commit fffeb8f7d724849238dff1efcb31a1c3a8c540a4
Author: Anurag Pateriya <anurag.pateriya@oss.qualcomm.com>
pmdomain: qcom: rpmhpd: Add NMXC power domain for Nord
Add the nmxc.lvl RPMh resource and register it in the Nord power domain
table. Nord supplies the NSP memory rail from this dedicated resource
rather than from the shared MX rail, so consumers need it exposed as its
own power domain.
> diff --git a/drivers/pmdomain/qcom/rpmhpd.c b/drivers/pmdomain/qcom/rpmhpd.c
> index 90743275942db..28cc8825eee45 100644
> --- a/drivers/pmdomain/qcom/rpmhpd.c
> +++ b/drivers/pmdomain/qcom/rpmhpd.c
> @@ -198,6 +198,11 @@ static struct rpmhpd mxc_ao = {
> .res_name = "mxc.lvl",
> };
>
> +static struct rpmhpd nmxc = {
> + .pd = { .name = "nmxc", },
> + .res_name = "nmxc.lvl",
> +};
> +
> static struct rpmhpd nsp = {
> .pd = { .name = "nsp", },
> .res_name = "nsp.lvl",
> @@ -327,6 +332,7 @@ static struct rpmhpd *nord_rpmhpds[] = {
> [RPMHPD_MX_AO] = &mx_ao,
> [RPMHPD_MXC] = &mxc,
> [RPMHPD_MXC_AO] = &mxc_ao,
> + [RPMHPD_NMXC] = &nmxc,
[Severity: High]
This is a pre-existing issue, but I noticed a potential use-after-free issue
in the error paths of rpmhpd_probe() when adding new power domains.
If rpmhpd_probe() fails midway during its initialization loop:
rpmhpd_probe() {
for (i = 0; i < num_pds; i++) {
...
ret = rpmhpd_update_level_mapping(rpmhpds[i]);
if (ret)
return ret;
...
pm_genpd_init(&rpmhpds[i]->pd, NULL, true);
...
}
}
Or if it fails at the very end when registering the provider:
return of_genpd_add_provider_onecell(pdev->dev.of_node, data);
The function directly returns an error without calling pm_genpd_remove() for
the previously initialized domains. Because pm_genpd_init() links the
statically allocated domain structures into the global genpd list, does this
leave dangling pointers?
Since this driver can be built as a module, if the module is unloaded after a
probe failure, its data section is freed. Could this result in the global
list pointing to freed memory, causing a crash the next time the list is
traversed?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260826102746.633076-1-shengchao.guo@oss.qualcomm.com?part=2
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/4] pmdomain: qcom: rpmhpd: Add NMXC power domain for Nord
2026-08-26 10:27 ` [PATCH 2/4] pmdomain: qcom: rpmhpd: Add NMXC power domain for Nord Shawn Guo
2026-08-26 10:38 ` sashiko-bot
@ 2026-08-26 11:05 ` Abel Vesa
2026-08-26 13:04 ` Konrad Dybcio
2 siblings, 0 replies; 13+ messages in thread
From: Abel Vesa @ 2026-08-26 11:05 UTC (permalink / raw)
To: Shawn Guo
Cc: Ulf Hansson, Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio,
Dmitry Baryshkov, Bartosz Golaszewski, Anurag Pateriya,
linux-arm-msm, linux-remoteproc, devicetree, linux-pm,
linux-kernel
On 26-08-26 18:27:44, Shawn Guo wrote:
> From: Anurag Pateriya <anurag.pateriya@oss.qualcomm.com>
>
> Add the nmxc.lvl RPMh resource and register it in the Nord power domain
> table. Nord supplies the NSP memory rail from this dedicated resource
> rather than from the shared MX rail, so consumers need it exposed as its
> own power domain.
>
> Signed-off-by: Anurag Pateriya <anurag.pateriya@oss.qualcomm.com>
> Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 4/4] remoteproc: qcom: pas: Switch Nord CDSPs from MX to NMXC
2026-08-26 10:27 ` [PATCH 4/4] remoteproc: qcom: pas: Switch Nord CDSPs from MX to NMXC Shawn Guo
@ 2026-08-26 11:06 ` Abel Vesa
0 siblings, 0 replies; 13+ messages in thread
From: Abel Vesa @ 2026-08-26 11:06 UTC (permalink / raw)
To: Shawn Guo
Cc: Ulf Hansson, Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Konrad Dybcio,
Dmitry Baryshkov, Bartosz Golaszewski, Anurag Pateriya,
linux-arm-msm, linux-remoteproc, devicetree, linux-pm,
linux-kernel
On 26-08-26 18:27:46, Shawn Guo wrote:
> From: Anurag Pateriya <anurag.pateriya@oss.qualcomm.com>
>
> The Nord CDSP subsystems keep their memory rail on the dedicated NMXC
> resource, not on the shared MX rail. Replace "mx" with "nmxc" in the proxy
> power domain list of all four CDSP resources so the correct rail is held
> during PAS authentication and boot.
>
> Signed-off-by: Anurag Pateriya <anurag.pateriya@oss.qualcomm.com>
> Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 3/4] dt-bindings: remoteproc: qcom,nord-pas: Switch CDSPs to NMXC rail
2026-08-26 10:27 ` [PATCH 3/4] dt-bindings: remoteproc: qcom,nord-pas: Switch CDSPs to NMXC rail Shawn Guo
@ 2026-08-26 12:52 ` Konrad Dybcio
2026-08-26 13:31 ` Shawn Guo
0 siblings, 1 reply; 13+ messages in thread
From: Konrad Dybcio @ 2026-08-26 12:52 UTC (permalink / raw)
To: Shawn Guo, Ulf Hansson, Bjorn Andersson
Cc: Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Dmitry Baryshkov, Abel Vesa, Bartosz Golaszewski, Anurag Pateriya,
linux-arm-msm, linux-remoteproc, devicetree, linux-pm,
linux-kernel
On 8/26/26 12:27 PM, Shawn Guo wrote:
> Nord supplies the CDSP memory rail from a dedicated NMXC RPMh resource
> instead of the shared MX rail, so the CDSPs have to reference "nmxc"
> rather than "mx" as their second proxy power domain.
>
> That makes the ADSP and CDSP name lists diverge at the second entry, so a
> single top-level 'items' list can no longer describe both. Keep only the
> item count at the top level and move the per-domain descriptions into the
> respective branches of the existing conditional.
>
> Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
> ---
Is the name of the input not "mx" at the rproc anyway?
Konrad
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/4] pmdomain: qcom: rpmhpd: Add NMXC power domain for Nord
2026-08-26 10:27 ` [PATCH 2/4] pmdomain: qcom: rpmhpd: Add NMXC power domain for Nord Shawn Guo
2026-08-26 10:38 ` sashiko-bot
2026-08-26 11:05 ` Abel Vesa
@ 2026-08-26 13:04 ` Konrad Dybcio
2026-08-26 13:14 ` Shawn Guo
2 siblings, 1 reply; 13+ messages in thread
From: Konrad Dybcio @ 2026-08-26 13:04 UTC (permalink / raw)
To: Shawn Guo, Ulf Hansson, Bjorn Andersson
Cc: Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Dmitry Baryshkov, Abel Vesa, Bartosz Golaszewski, Anurag Pateriya,
linux-arm-msm, linux-remoteproc, devicetree, linux-pm,
linux-kernel
On 8/26/26 12:27 PM, Shawn Guo wrote:
> From: Anurag Pateriya <anurag.pateriya@oss.qualcomm.com>
>
> Add the nmxc.lvl RPMh resource and register it in the Nord power domain
> table. Nord supplies the NSP memory rail from this dedicated resource
> rather than from the shared MX rail, so consumers need it exposed as its
> own power domain.
>
> Signed-off-by: Anurag Pateriya <anurag.pateriya@oss.qualcomm.com>
> Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
> ---
> drivers/pmdomain/qcom/rpmhpd.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/pmdomain/qcom/rpmhpd.c b/drivers/pmdomain/qcom/rpmhpd.c
> index 96e4bd2f5a14..717c44d1c39a 100644
> --- a/drivers/pmdomain/qcom/rpmhpd.c
> +++ b/drivers/pmdomain/qcom/rpmhpd.c
> @@ -198,6 +198,11 @@ static struct rpmhpd mxc_ao = {
> .res_name = "mxc.lvl",
> };
>
> +static struct rpmhpd nmxc = {
> + .pd = { .name = "nmxc", },
> + .res_name = "nmxc.lvl",
The commandDB sources suggest this shouls be nspmxc.lvl instead..
Can you dump /sys/kernel/debug/cmd-db?
Konrad
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/4] pmdomain: qcom: rpmhpd: Add NMXC power domain for Nord
2026-08-26 13:04 ` Konrad Dybcio
@ 2026-08-26 13:14 ` Shawn Guo
2026-08-26 13:17 ` Konrad Dybcio
0 siblings, 1 reply; 13+ messages in thread
From: Shawn Guo @ 2026-08-26 13:14 UTC (permalink / raw)
To: Konrad Dybcio
Cc: Ulf Hansson, Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Dmitry Baryshkov, Abel Vesa,
Bartosz Golaszewski, Anurag Pateriya, linux-arm-msm,
linux-remoteproc, devicetree, linux-pm, linux-kernel
On Wed, Aug 26, 2026 at 03:04:33PM +0200, Konrad Dybcio wrote:
> On 8/26/26 12:27 PM, Shawn Guo wrote:
> > From: Anurag Pateriya <anurag.pateriya@oss.qualcomm.com>
> >
> > Add the nmxc.lvl RPMh resource and register it in the Nord power domain
> > table. Nord supplies the NSP memory rail from this dedicated resource
> > rather than from the shared MX rail, so consumers need it exposed as its
> > own power domain.
> >
> > Signed-off-by: Anurag Pateriya <anurag.pateriya@oss.qualcomm.com>
> > Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
> > ---
> > drivers/pmdomain/qcom/rpmhpd.c | 6 ++++++
> > 1 file changed, 6 insertions(+)
> >
> > diff --git a/drivers/pmdomain/qcom/rpmhpd.c b/drivers/pmdomain/qcom/rpmhpd.c
> > index 96e4bd2f5a14..717c44d1c39a 100644
> > --- a/drivers/pmdomain/qcom/rpmhpd.c
> > +++ b/drivers/pmdomain/qcom/rpmhpd.c
> > @@ -198,6 +198,11 @@ static struct rpmhpd mxc_ao = {
> > .res_name = "mxc.lvl",
> > };
> >
> > +static struct rpmhpd nmxc = {
> > + .pd = { .name = "nmxc", },
> > + .res_name = "nmxc.lvl",
>
> The commandDB sources suggest this shouls be nspmxc.lvl instead..
>
> Can you dump /sys/kernel/debug/cmd-db?
root@qcom-armv8a:~# cat /sys/kernel/debug/cmd-db
Command DB DUMP
Slave ARC (v16.0)
-------------------------
0x30000: cx.lvl [00 00 10 00 10 00 c0 00 00 01 80 01 a0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
0x30004: cx.tmr
0x30010: mx.lvl [00 00 10 00 c0 00 00 01 80 01 a0 01 b0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
0x30014: mx.tmr
0x30020: ebi.lvl [00 00 10 00 c0 00 00 01 80 01 a0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
0x30024: ebi.tmr
0x30030: gfx.lvl [00 00 01 00 c0 00 00 01 80 01 a0 01 b0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
0x30034: gfx.tmr
0x30040: ddr.lvl [00 00 20 00 80 00 a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
0x30044: ddr.tmr
0x30050: mmcx.lvl [00 00 01 00 c0 00 00 01 80 01 a0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
0x30054: mmcx.tmr
0x30060: nsp0.lvl [00 00 01 00 c0 00 00 01 80 01 a0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
0x30064: nsp0.tmr
0x30070: mxc.lvl [00 00 10 00 c0 00 00 01 80 01 a0 01 b0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
0x30074: mxc.tmr
0x30080: nsp1.lvl [00 00 01 00 c0 00 00 01 80 01 a0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
0x30084: nsp1.tmr
0x30090: nsp2.lvl [00 00 01 00 c0 00 00 01 80 01 a0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
0x30094: nsp2.tmr
0x300a0: nsp3.lvl [00 00 01 00 c0 00 00 01 80 01 a0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
0x300a4: nsp3.tmr
0x300b0: nmxc.lvl [00 00 10 00 c0 00 00 01 80 01 a0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
0x300b4: nmxc.tmr
0x300c0: gic.lvl [00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
0x300c4: gic.tmr
0x300d0: ds.lvl [00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
0x300d4: ds.tmr
0x300e0: gfx1.lvl [00 00 01 00 c0 00 00 01 80 01 a0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
0x300e4: gfx1.tmr
0x300f0: xo.lvl [00 00 20 00 50 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
0x300f4: xo.tmr
Slave ARC (v16.0)
-------------------------
0x00000: cx.mol [80 00]
0x00000: mx.mol [c0 00]
0x00000: ebi.mol [c0 00]
0x00000: gfx.mol [80 00]
0x00000: ddr.mol [a0 00]
0x00000: mmcx.mol [80 00]
0x00000: nsp0.mol [80 00]
0x00000: mxc.mol [c0 00]
0x00000: nsp1.mol [80 00]
0x00000: nsp2.mol [80 00]
0x00000: nsp3.mol [80 00]
0x00000: nmxc.mol [c0 00]
0x00000: gic.mol [20 00]
0x00000: ds.mol [20 00]
0x00000: gfx1.mol [80 00]
0x00000: xo.mol [80 00]
Slave BCM (v16.0)
-------------------------
0x50000: MC0 [40 d0 1b 01 40 00 00 00]
0x50094: MC1 [40 d0 1b 01 40 00 00 00]
0x5009c: MC2 [40 d0 1b 01 40 00 00 00]
0x50080: MC3 [40 d0 1b 01 40 00 00 00]
0x50004: SH0 [c0 ea 21 01 00 01 01 00]
0x50008: SH1 [c0 ea 21 01 00 01 01 00]
0x50098: SH2 [c0 ea 21 01 00 01 01 00]
0x50084: SH3 [c0 ea 21 01 00 01 01 00]
0x50010: SN0 [10 e4 1f 00 40 00 03 00]
0x50014: SN1 [10 e4 1f 00 40 00 03 00]
0x50018: SN2 [10 e4 1f 00 10 00 03 00]
0x5001c: SN3 [10 e4 1f 00 10 00 03 00]
0x50024: SN4 [10 e4 1f 00 10 00 03 00]
0x50028: MM0 [b0 db 23 00 40 00 04 00]
0x5002c: MM1 [b0 db 23 00 40 00 04 00]
0x50030: CN0 [e0 22 02 00 04 00 05 00]
0x50034: CN1 [e0 22 02 00 04 00 05 00]
0x50038: CE0 [fc 5c 00 00 08 00 06 00]
0x50070: CE1 [fc 5c 00 00 08 00 06 00]
0x50074: CE2 [fc 5c 00 00 08 00 06 00]
0x5003c: IP0 [28 00 00 00 08 00 07 00]
0x50040: QUP0 [14 00 00 00 04 00 08 00]
0x50044: QUP1 [14 00 00 00 04 00 08 00]
0x50048: QUP2 [14 00 00 00 04 00 08 00]
0x50068: QUP3 [14 00 00 00 04 00 08 00]
0x5004c: C0N0 [60 b7 47 00 40 00 09 00]
0x50050: C1N0 [60 b7 47 00 40 00 0a 00]
0x50054: C2N0 [60 b7 47 00 40 00 0b 00]
0x50058: C3N0 [60 b7 47 00 40 00 0c 00]
0x5005c: CP0 [30 75 00 00 04 00 0d 00]
0x50060: DCP0 [30 75 00 00 04 00 0e 00]
0x50064: DTP0 [80 38 01 00 04 00 0f 00]
0x5006c: ALC [01 00 00 00 00 00 11 00]
0x50088: ACV [01 00 00 00 00 00 12 00]
Slave VRM (v1.0)
-------------------------
0x4d000: vrm.aoss [03 da 00 00]
0x4d004: vrm.ds [03 da 00 00]
0x40200: S1A_E0 [01 0b 00 00]
0x40300: S3A_E0 [01 0d 00 00]
0x40000: S5A_E0 [01 11 00 00]
0x40400: S6A_E0 [01 13 00 00]
0x40500: S8A_E0 [01 17 00 00]
0x40500: vrm.ebi [01 17 00 00]
0x40600: L4A_E0 [01 49 00 00]
0x40700: L6A_E0 [01 4b 00 00]
0x40800: L7A_E0 [01 4c 00 00]
0x40b00: L8A_E0 [01 4d 00 00]
0x4a000: C1A_E0 [02 69 00 00]
0x4a000: vrm.xob [02 69 00 00]
0x4a100: C2A_E0 [02 6a 00 00]
0x4a100: lnbclka2 [02 6a 00 00]
0x4a200: C3A_E0 [02 6b 00 00]
0x4a200: lnbclka3 [02 6b 00 00]
0x4a300: C4A_E0 [02 6c 00 00]
0x4a300: divclka1 [02 6c 00 00]
0x40c00: S1E_E0 [01 1b 00 00]
0x40c00: vrm.nsp3 [01 1b 00 00]
0x40d00: S7E_E0 [01 1d 00 00]
0x40d00: vrm.mx [01 1d 00 00]
0x40e00: L1E_E0 [01 4f 00 00]
0x40f00: L2E_E0 [01 50 00 00]
0x41600: L3E_E0 [01 51 00 00]
0x41700: S1F_E0 [01 1f 00 00]
0x41700: vrm.nsp1 [01 1f 00 00]
0x40100: S7F_E0 [01 21 00 00]
0x41800: S8F_E0 [01 23 00 00]
0x41000: L1F_E0 [01 52 00 00]
0x41900: L3F_E0 [01 54 00 00]
0x41a00: S1G_E0 [01 25 00 00]
0x41a00: vrm.nsp0 [01 25 00 00]
0x41b00: S5G_E0 [01 27 00 00]
0x41100: L2G_E0 [01 56 00 00]
0x41c00: S1H_E0 [01 2b 00 00]
0x41c00: vrm.nsp2 [01 2b 00 00]
0x41d00: S5H_E0 [01 2d 00 00]
0x41d00: vrm.mxc [01 2d 00 00]
0x41200: L1H_E0 [01 58 00 00]
0x40900: L2H_E0 [01 59 00 00]
0x41e00: S2I_E0 [01 31 00 00]
0x41e00: vrm.gfx [01 31 00 00]
0x41f00: S7I_E0 [01 00 00 00]
0x41f00: vrm.mmcx [01 00 00 00]
0x41300: L1I_E0 [01 5b 00 00]
0x40a00: L2I_E0 [01 5c 00 00]
0x42000: L3I_E0 [01 5d 00 00]
0x42100: S7J_E0 [01 00 00 00]
0x42100: vrm.gfx1 [01 00 00 00]
0x41400: L1K_E0 [01 61 00 00]
0x41500: L2K_E0 [01 62 00 00]
0x42200: L3K_E0 [01 63 00 00]
0x42300: S1L_E0 [01 00 00 00]
0x42300: vrm.nmxc [01 00 00 00]
0x42400: S2L_E0 [01 45 00 00]
0x42400: vrm.cx [01 45 00 00]
0x42500: L3L_E0 [01 66 00 00]
0x4a400: vrm.sail [02 67 00 00]
Shawn
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/4] pmdomain: qcom: rpmhpd: Add NMXC power domain for Nord
2026-08-26 13:14 ` Shawn Guo
@ 2026-08-26 13:17 ` Konrad Dybcio
0 siblings, 0 replies; 13+ messages in thread
From: Konrad Dybcio @ 2026-08-26 13:17 UTC (permalink / raw)
To: Shawn Guo
Cc: Ulf Hansson, Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Dmitry Baryshkov, Abel Vesa,
Bartosz Golaszewski, Anurag Pateriya, linux-arm-msm,
linux-remoteproc, devicetree, linux-pm, linux-kernel
On 8/26/26 3:14 PM, Shawn Guo wrote:
> On Wed, Aug 26, 2026 at 03:04:33PM +0200, Konrad Dybcio wrote:
>> On 8/26/26 12:27 PM, Shawn Guo wrote:
>>> From: Anurag Pateriya <anurag.pateriya@oss.qualcomm.com>
>>>
>>> Add the nmxc.lvl RPMh resource and register it in the Nord power domain
>>> table. Nord supplies the NSP memory rail from this dedicated resource
>>> rather than from the shared MX rail, so consumers need it exposed as its
>>> own power domain.
>>>
>>> Signed-off-by: Anurag Pateriya <anurag.pateriya@oss.qualcomm.com>
>>> Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
>>> ---
>>> drivers/pmdomain/qcom/rpmhpd.c | 6 ++++++
>>> 1 file changed, 6 insertions(+)
>>>
>>> diff --git a/drivers/pmdomain/qcom/rpmhpd.c b/drivers/pmdomain/qcom/rpmhpd.c
>>> index 96e4bd2f5a14..717c44d1c39a 100644
>>> --- a/drivers/pmdomain/qcom/rpmhpd.c
>>> +++ b/drivers/pmdomain/qcom/rpmhpd.c
>>> @@ -198,6 +198,11 @@ static struct rpmhpd mxc_ao = {
>>> .res_name = "mxc.lvl",
>>> };
>>>
>>> +static struct rpmhpd nmxc = {
>>> + .pd = { .name = "nmxc", },
>>> + .res_name = "nmxc.lvl",
>>
>> The commandDB sources suggest this shouls be nspmxc.lvl instead..
>>
>> Can you dump /sys/kernel/debug/cmd-db?
>
> root@qcom-armv8a:~# cat /sys/kernel/debug/cmd-db
[...]
> 0x300a0: nsp3.lvl [00 00 01 00 c0 00 00 01 80 01 a0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
> 0x300a4: nsp3.tmr
> 0x300b0: nmxc.lvl [00 00 10 00 c0 00 00 01 80 01 a0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
> 0x300b4: nmxc.tmr
Alright then
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Konrad
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 3/4] dt-bindings: remoteproc: qcom,nord-pas: Switch CDSPs to NMXC rail
2026-08-26 12:52 ` Konrad Dybcio
@ 2026-08-26 13:31 ` Shawn Guo
0 siblings, 0 replies; 13+ messages in thread
From: Shawn Guo @ 2026-08-26 13:31 UTC (permalink / raw)
To: Konrad Dybcio
Cc: Ulf Hansson, Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Dmitry Baryshkov, Abel Vesa,
Bartosz Golaszewski, Anurag Pateriya, linux-arm-msm,
linux-remoteproc, devicetree, linux-pm, linux-kernel
On Wed, Aug 26, 2026 at 02:52:55PM +0200, Konrad Dybcio wrote:
> On 8/26/26 12:27 PM, Shawn Guo wrote:
> > Nord supplies the CDSP memory rail from a dedicated NMXC RPMh resource
> > instead of the shared MX rail, so the CDSPs have to reference "nmxc"
> > rather than "mx" as their second proxy power domain.
> >
> > That makes the ADSP and CDSP name lists diverge at the second entry, so a
> > single top-level 'items' list can no longer describe both. Keep only the
> > item count at the top level and move the per-domain descriptions into the
> > respective branches of the existing conditional.
> >
> > Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
> > ---
>
> Is the name of the input not "mx" at the rproc anyway?
Ah, good point! We only need to wire RPMHPD_NMXC up to "mx" in DT.
Thank you for the comment, Konrad!
Shawn
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2026-08-26 13:31 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-26 10:27 [PATCH 0/4] Switch Nord CDSPs onto NMXC power domain Shawn Guo
2026-08-26 10:27 ` [PATCH 1/4] dt-bindings: power: qcom,rpmhpd: Add NMXC power domain index Shawn Guo
2026-08-26 10:27 ` [PATCH 2/4] pmdomain: qcom: rpmhpd: Add NMXC power domain for Nord Shawn Guo
2026-08-26 10:38 ` sashiko-bot
2026-08-26 11:05 ` Abel Vesa
2026-08-26 13:04 ` Konrad Dybcio
2026-08-26 13:14 ` Shawn Guo
2026-08-26 13:17 ` Konrad Dybcio
2026-08-26 10:27 ` [PATCH 3/4] dt-bindings: remoteproc: qcom,nord-pas: Switch CDSPs to NMXC rail Shawn Guo
2026-08-26 12:52 ` Konrad Dybcio
2026-08-26 13:31 ` Shawn Guo
2026-08-26 10:27 ` [PATCH 4/4] remoteproc: qcom: pas: Switch Nord CDSPs from MX to NMXC Shawn Guo
2026-08-26 11:06 ` Abel Vesa
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox