* [PATCH v3 0/5] Add initial remoteproc support for Kaanapali SoC
@ 2025-12-23 9:13 Jingyi Wang
2025-12-23 9:13 ` [PATCH v3 1/5] dt-bindings: remoteproc: qcom,sm8550-pas: Add Kaanapali ADSP Jingyi Wang
` (4 more replies)
0 siblings, 5 replies; 22+ messages in thread
From: Jingyi Wang @ 2025-12-23 9:13 UTC (permalink / raw)
To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam
Cc: aiqun.yu, tingwei.zhang, trilok.soni, yijie.yang, linux-arm-msm,
linux-remoteproc, devicetree, linux-kernel, Jingyi Wang,
Sibi Sankar, Gokul krishna Krishnakumar
Add initial support for remoteprocs including ADSP and CDSP on Qualcomm
Kaanapali platform which are compatible with ealier Platforms with minor
difference. And add initial support for SoC Control Processor (SoCCP)
which is loaded by bootloader. PAS loader will check the state of the
subsystem, and set the status "attached" if ping the subsystem
successfully.
Signed-off-by: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
---
Signed-off-by: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
---
Changes in v3:
- Drop Glymur ADSP/CDSP binding
- Extend the "interrupts" and "interrupt-names" properties in the pas-common
- add missing IPCC_MPROC_SOCCP definition
- fix complie err caused by qcom_q6v5_wcss.c
- code clean up for late attach feature
- call rproc_report_crash() instead of set RPROC_CRASHED state
- fix q6v5.running and q6v5.handover_issued state handling
- if wait_for_completion_timeout return 0, set RPROC_OFFLINE for PAS loader
- Only ping the subsystem if ready_state is set
- Link to v1: https://lore.kernel.org/r/20251029-knp-remoteproc-v2-0-6c81993b52ea@oss.qualcomm.com
Changes in v2:
- Drop MPSS change
- pick Glymur changes from https://lore.kernel.org/linux-arm-msm/20250924183726.509202-1-sibi.sankar@oss.qualcomm.com
- Drop redundant adsp bindings - Dmitry
- Clarify Kaanapali CDSP compatible in commit msg - Krzysztof
- include pas-common.yaml in soccp yaml and extend the common part - Krzysztof
- Clear early_boot flag in the adsp stop callback - Dmitry
- Use .mbn in soccp driver node - Konrad
- Link to v1: https://lore.kernel.org/r/20250924-knp-remoteproc-v1-0-611bf7be8329@oss.qualcomm.com
---
Gokul krishna Krishnakumar (1):
remoteproc: qcom: pas: Add late attach support for subsystems
Jingyi Wang (4):
dt-bindings: remoteproc: qcom,sm8550-pas: Add Kaanapali ADSP
dt-bindings: remoteproc: qcom,sm8550-pas: Add Kaanapali CDSP
dt-bindings: remoteproc: qcom,pas: Document pas for SoCCP on Kaanapali and Glymur platforms
remoteproc: qcom_q6v5_pas: Add SoCCP node on Kaanapali
.../remoteproc/qcom,kaanapali-soccp-pas.yaml | 134 +++++++++++++++++++++
.../bindings/remoteproc/qcom,pas-common.yaml | 28 +++--
.../bindings/remoteproc/qcom,sm8550-pas.yaml | 10 +-
drivers/remoteproc/qcom_q6v5.c | 87 ++++++++++++-
drivers/remoteproc/qcom_q6v5.h | 11 +-
drivers/remoteproc/qcom_q6v5_adsp.c | 2 +-
drivers/remoteproc/qcom_q6v5_mss.c | 2 +-
drivers/remoteproc/qcom_q6v5_pas.c | 115 +++++++++++++++++-
drivers/remoteproc/qcom_q6v5_wcss.c | 2 +-
9 files changed, 377 insertions(+), 14 deletions(-)
---
base-commit: cc3aa43b44bdb43dfbac0fcb51c56594a11338a8
change-id: 20251223-knp-remoteproc-f6ba30baa06d
Best regards,
--
Jingyi Wang <jingyi.wang@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH v3 1/5] dt-bindings: remoteproc: qcom,sm8550-pas: Add Kaanapali ADSP
2025-12-23 9:13 [PATCH v3 0/5] Add initial remoteproc support for Kaanapali SoC Jingyi Wang
@ 2025-12-23 9:13 ` Jingyi Wang
2025-12-23 13:02 ` Krzysztof Kozlowski
2025-12-23 9:13 ` [PATCH v3 2/5] dt-bindings: remoteproc: qcom,sm8550-pas: Add Kaanapali CDSP Jingyi Wang
` (3 subsequent siblings)
4 siblings, 1 reply; 22+ messages in thread
From: Jingyi Wang @ 2025-12-23 9:13 UTC (permalink / raw)
To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam
Cc: aiqun.yu, tingwei.zhang, trilok.soni, yijie.yang, linux-arm-msm,
linux-remoteproc, devicetree, linux-kernel, Jingyi Wang
Document compatible for Qualcomm Kaanapali SoC ADSP PAS which looks fully
compatible with SM8750, which can fallback to SM8550 except for one more
interrupt ("shutdown-ack").
Signed-off-by: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
---
Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml
index 2dd479cf4821..31dffd02125a 100644
--- a/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml
@@ -28,7 +28,9 @@ properties:
- qcom,x1e80100-adsp-pas
- qcom,x1e80100-cdsp-pas
- items:
- - const: qcom,sm8750-adsp-pas
+ - enum:
+ - qcom,kaanapali-adsp-pas
+ - qcom,sm8750-adsp-pas
- const: qcom,sm8550-adsp-pas
- items:
- const: qcom,sm8750-cdsp-pas
@@ -95,6 +97,7 @@ allOf:
compatible:
contains:
enum:
+ - qcom,kaanapali-adsp-pas
- qcom,sm8750-adsp-pas
then:
properties:
--
2.25.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v3 2/5] dt-bindings: remoteproc: qcom,sm8550-pas: Add Kaanapali CDSP
2025-12-23 9:13 [PATCH v3 0/5] Add initial remoteproc support for Kaanapali SoC Jingyi Wang
2025-12-23 9:13 ` [PATCH v3 1/5] dt-bindings: remoteproc: qcom,sm8550-pas: Add Kaanapali ADSP Jingyi Wang
@ 2025-12-23 9:13 ` Jingyi Wang
2025-12-23 13:07 ` Krzysztof Kozlowski
2025-12-23 9:13 ` [PATCH v3 3/5] dt-bindings: remoteproc: qcom,pas: Document pas for SoCCP on Kaanapali and Glymur platforms Jingyi Wang
` (2 subsequent siblings)
4 siblings, 1 reply; 22+ messages in thread
From: Jingyi Wang @ 2025-12-23 9:13 UTC (permalink / raw)
To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam
Cc: aiqun.yu, tingwei.zhang, trilok.soni, yijie.yang, linux-arm-msm,
linux-remoteproc, devicetree, linux-kernel, Jingyi Wang
Add remote processor PAS loader for Kaanapali CDSP processor, compatible
with earlier SM8550 with minor difference: one more sixth "shutdown-ack"
interrupt. It is not compatible with SM8650 because one memory region
"global_sync_mem" is not managed by kernel on Kaanapali so it is removed
in the remoteproc cdsp node.
Signed-off-by: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
---
Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml
index 31dffd02125a..3b66bd106737 100644
--- a/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml
@@ -35,6 +35,10 @@ properties:
- items:
- const: qcom,sm8750-cdsp-pas
- const: qcom,sm8650-cdsp-pas
+ - items:
+ - enum:
+ - qcom,kaanapali-cdsp-pas
+ - const: qcom,sm8550-cdsp-pas
reg:
maxItems: 1
@@ -98,6 +102,7 @@ allOf:
contains:
enum:
- qcom,kaanapali-adsp-pas
+ - qcom,kaanapali-cdsp-pas
- qcom,sm8750-adsp-pas
then:
properties:
--
2.25.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v3 3/5] dt-bindings: remoteproc: qcom,pas: Document pas for SoCCP on Kaanapali and Glymur platforms
2025-12-23 9:13 [PATCH v3 0/5] Add initial remoteproc support for Kaanapali SoC Jingyi Wang
2025-12-23 9:13 ` [PATCH v3 1/5] dt-bindings: remoteproc: qcom,sm8550-pas: Add Kaanapali ADSP Jingyi Wang
2025-12-23 9:13 ` [PATCH v3 2/5] dt-bindings: remoteproc: qcom,sm8550-pas: Add Kaanapali CDSP Jingyi Wang
@ 2025-12-23 9:13 ` Jingyi Wang
2025-12-23 13:29 ` Krzysztof Kozlowski
2025-12-23 9:13 ` [PATCH v3 4/5] remoteproc: qcom: pas: Add late attach support for subsystems Jingyi Wang
2025-12-23 9:13 ` [PATCH v3 5/5] remoteproc: qcom_q6v5_pas: Add SoCCP node on Kaanapali Jingyi Wang
4 siblings, 1 reply; 22+ messages in thread
From: Jingyi Wang @ 2025-12-23 9:13 UTC (permalink / raw)
To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam
Cc: aiqun.yu, tingwei.zhang, trilok.soni, yijie.yang, linux-arm-msm,
linux-remoteproc, devicetree, linux-kernel, Jingyi Wang,
Sibi Sankar
Document the component used to boot SoCCP on Kaanapali SoC and add
compatible for Glymur SoCCP which could fallback to Kaanapali. Extend
the "qcom,smem-states", "qcom,smem-state-names", "interrupts" and
"interrupt-names" properties in the pas-common.
Co-developed-by: Sibi Sankar <sibi.sankar@oss.qualcomm.com>
Signed-off-by: Sibi Sankar <sibi.sankar@oss.qualcomm.com>
Signed-off-by: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
---
.../remoteproc/qcom,kaanapali-soccp-pas.yaml | 134 +++++++++++++++++++++
.../bindings/remoteproc/qcom,pas-common.yaml | 28 +++--
2 files changed, 155 insertions(+), 7 deletions(-)
diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,kaanapali-soccp-pas.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,kaanapali-soccp-pas.yaml
new file mode 100644
index 000000000000..bd94ab9a3da4
--- /dev/null
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,kaanapali-soccp-pas.yaml
@@ -0,0 +1,134 @@
+# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/remoteproc/qcom,kaanapali-soccp-pas.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Kaanapali SoCCP Peripheral Authentication Service
+
+maintainers:
+ - Jingyi Wang <jingyi.wang@oss.qualcomm.com>
+
+description:
+ The SoC Control Processor (SoCCP) is small RISC-V MCU that controls USB
+ Type-C, battery charging and various other functions on Qualcomm SoCs, somewhat
+ analogous to traditional PC Embedded Controllers. This document describes
+ the Peripheral Authentication Service loads and boots firmware for SoCCP.
+
+properties:
+ compatible:
+ oneOf:
+ - items:
+ - enum:
+ - qcom,glymur-soccp-pas
+ - const: qcom,kaanapali-soccp-pas
+ - enum:
+ - qcom,kaanapali-soccp-pas
+
+ reg:
+ maxItems: 1
+
+ clocks:
+ items:
+ - description: XO clock
+
+ clock-names:
+ items:
+ - const: xo
+
+ power-domains:
+ items:
+ - description: CX power domain
+ - description: MX power domain
+
+ power-domain-names:
+ items:
+ - const: cx
+ - const: mx
+
+ firmware-name:
+ items:
+ - description: Firmware name of the Hexagon core
+ - description: Firmware name of the Hexagon Devicetree
+
+ memory-region:
+ items:
+ - description: Memory region for main Firmware authentication
+ - description: Memory region for Devicetree Firmware authentication
+
+required:
+ - compatible
+ - reg
+ - memory-region
+ - power-domains
+ - power-domain-names
+
+allOf:
+ - $ref: /schemas/remoteproc/qcom,pas-common.yaml#
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/clock/qcom,rpmh.h>
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+ #include <dt-bindings/interrupt-controller/irq.h>
+ #include <dt-bindings/mailbox/qcom-ipcc.h>
+ #include <dt-bindings/power/qcom-rpmpd.h>
+ #define IPCC_MPROC_SOCCP
+
+ remoteproc@d00000 {
+ compatible = "qcom,kaanapali-soccp-pas";
+ reg = <0x00d00000 0x200000>;
+
+ clocks = <&rpmhcc RPMH_CXO_CLK>;
+ clock-names = "xo";
+
+ interrupts-extended = <&intc GIC_SPI 167 IRQ_TYPE_EDGE_RISING>,
+ <&soccp_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
+ <&soccp_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
+ <&soccp_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
+ <&soccp_smp2p_in 3 IRQ_TYPE_EDGE_RISING>,
+ <&soccp_smp2p_in 9 IRQ_TYPE_EDGE_RISING>,
+ <&soccp_smp2p_in 10 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "wdog",
+ "fatal",
+ "ready",
+ "handover",
+ "stop-ack",
+ "pong",
+ "wake-ack";
+
+ memory-region = <&soccp_mem>,
+ <&soccp_dtb_mem_mem>;
+
+ firmware-name = "qcom/kaanapali/soccp.mbn",
+ "qcom/kaanapali/soccp_dtb.mbn";
+
+ power-domains = <&rpmhpd RPMHPD_CX>,
+ <&rpmhpd RPMHPD_MX>;
+ power-domain-names = "cx",
+ "mx";
+
+ qcom,smem-states = <&soccp_smp2p_out 0>,
+ <&soccp_smp2p_out 10>,
+ <&soccp_smp2p_out 9>,
+ <&soccp_smp2p_out 8>;
+ qcom,smem-state-names = "stop",
+ "wakeup",
+ "sleep",
+ "ping";
+
+ glink-edge {
+ interrupts-extended = <&ipcc IPCC_MPROC_SOCCP
+ IPCC_MPROC_SIGNAL_GLINK_QMP
+ IRQ_TYPE_EDGE_RISING>;
+ mboxes = <&ipcc IPCC_MPROC_SOCCP
+ IPCC_MPROC_SIGNAL_GLINK_QMP>;
+
+ label = "soccp";
+ qcom,remote-pid = <19>;
+
+ /* ... */
+ };
+ };
diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml
index 63a82e7a8bf8..149e993282bb 100644
--- a/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml
@@ -33,16 +33,22 @@ properties:
- description: Handover interrupt
- description: Stop acknowledge interrupt
- description: Shutdown acknowledge interrupt
+ - description: Pong interrupt
+ - description: Wake acknowledge interrupt
interrupt-names:
minItems: 5
+ maxItems: 7
items:
- - const: wdog
- - const: fatal
- - const: ready
- - const: handover
- - const: stop-ack
- - const: shutdown-ack
+ enum:
+ - wdog
+ - fatal
+ - ready
+ - handover
+ - stop-ack
+ - shutdown-ack
+ - pong
+ - wake-ack
power-domains:
minItems: 1
@@ -55,13 +61,21 @@ properties:
qcom,smem-states:
$ref: /schemas/types.yaml#/definitions/phandle-array
description: States used by the AP to signal the Hexagon core
+ minItems: 1
items:
- - description: Stop the modem
+ - description: Stop the remoteproc
+ - description: Wake up the remoteproc
+ - description: Make the remoteproc sleep
+ - description: Ping the remoteproc
qcom,smem-state-names:
description: The names of the state bits used for SMP2P output
+ minItems: 1
items:
- const: stop
+ - const: wakeup
+ - const: sleep
+ - const: ping
smd-edge:
$ref: /schemas/remoteproc/qcom,smd-edge.yaml#
--
2.25.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v3 4/5] remoteproc: qcom: pas: Add late attach support for subsystems
2025-12-23 9:13 [PATCH v3 0/5] Add initial remoteproc support for Kaanapali SoC Jingyi Wang
` (2 preceding siblings ...)
2025-12-23 9:13 ` [PATCH v3 3/5] dt-bindings: remoteproc: qcom,pas: Document pas for SoCCP on Kaanapali and Glymur platforms Jingyi Wang
@ 2025-12-23 9:13 ` Jingyi Wang
2025-12-23 20:15 ` Dmitry Baryshkov
` (2 more replies)
2025-12-23 9:13 ` [PATCH v3 5/5] remoteproc: qcom_q6v5_pas: Add SoCCP node on Kaanapali Jingyi Wang
4 siblings, 3 replies; 22+ messages in thread
From: Jingyi Wang @ 2025-12-23 9:13 UTC (permalink / raw)
To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam
Cc: aiqun.yu, tingwei.zhang, trilok.soni, yijie.yang, linux-arm-msm,
linux-remoteproc, devicetree, linux-kernel, Jingyi Wang,
Gokul krishna Krishnakumar
From: Gokul krishna Krishnakumar <gokul.krishnakumar@oss.qualcomm.com>
Subsystems can be brought out of reset by entities such as bootloaders.
As the irq enablement could be later than subsystem bring up, the state
of subsystem should be checked by reading SMP2P bits and performing ping
test.
A new qcom_pas_attach() function is introduced. if a crash state is
detected for the subsystem, rproc_report_crash() is called. If the
subsystem is ready either at the first check or within a 5-second timeout
and the ping is successful, it will be marked as "attached". The ready
state could be set by either ready interrupt or handover interrupt.
If "early_boot" is set by kernel but "subsys_booted" is not completed
within the timeout, It could be the early boot feature is not supported
by other entities. In this case, the state will be marked as RPROC_OFFLINE
so that the PAS driver can load the firmware and start the remoteproc. As
the running state is set once attach function is called, the watchdog or
fatal interrupt received can be handled correctly.
Signed-off-by: Gokul krishna Krishnakumar <gokul.krishnakumar@oss.qualcomm.com>
Co-developed-by: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
Signed-off-by: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
---
drivers/remoteproc/qcom_q6v5.c | 87 ++++++++++++++++++++++++++++++++-
drivers/remoteproc/qcom_q6v5.h | 11 ++++-
drivers/remoteproc/qcom_q6v5_adsp.c | 2 +-
drivers/remoteproc/qcom_q6v5_mss.c | 2 +-
drivers/remoteproc/qcom_q6v5_pas.c | 97 ++++++++++++++++++++++++++++++++++++-
drivers/remoteproc/qcom_q6v5_wcss.c | 2 +-
6 files changed, 195 insertions(+), 6 deletions(-)
diff --git a/drivers/remoteproc/qcom_q6v5.c b/drivers/remoteproc/qcom_q6v5.c
index 58d5b85e58cd..3f451e5db381 100644
--- a/drivers/remoteproc/qcom_q6v5.c
+++ b/drivers/remoteproc/qcom_q6v5.c
@@ -20,6 +20,7 @@
#define Q6V5_LOAD_STATE_MSG_LEN 64
#define Q6V5_PANIC_DELAY_MS 200
+#define Q6V5_PING_TIMEOUT_MS 500
static int q6v5_load_state_toggle(struct qcom_q6v5 *q6v5, bool enable)
{
@@ -94,6 +95,9 @@ static irqreturn_t q6v5_wdog_interrupt(int irq, void *data)
size_t len;
char *msg;
+ if (q6v5->early_boot)
+ complete(&q6v5->subsys_booted);
+
/* Sometimes the stop triggers a watchdog rather than a stop-ack */
if (!q6v5->running) {
complete(&q6v5->stop_done);
@@ -118,6 +122,9 @@ static irqreturn_t q6v5_fatal_interrupt(int irq, void *data)
size_t len;
char *msg;
+ if (q6v5->early_boot)
+ complete(&q6v5->subsys_booted);
+
if (!q6v5->running)
return IRQ_HANDLED;
@@ -139,6 +146,9 @@ static irqreturn_t q6v5_ready_interrupt(int irq, void *data)
complete(&q6v5->start_done);
+ if (q6v5->early_boot)
+ complete(&q6v5->subsys_booted);
+
return IRQ_HANDLED;
}
@@ -172,6 +182,9 @@ static irqreturn_t q6v5_handover_interrupt(int irq, void *data)
if (q6v5->handover)
q6v5->handover(q6v5);
+ if (q6v5->early_boot)
+ complete(&q6v5->subsys_booted);
+
icc_set_bw(q6v5->path, 0, 0);
q6v5->handover_issued = true;
@@ -234,6 +247,74 @@ unsigned long qcom_q6v5_panic(struct qcom_q6v5 *q6v5)
}
EXPORT_SYMBOL_GPL(qcom_q6v5_panic);
+static irqreturn_t q6v5_pong_interrupt(int irq, void *data)
+{
+ struct qcom_q6v5 *q6v5 = data;
+
+ complete(&q6v5->ping_done);
+
+ return IRQ_HANDLED;
+}
+
+int qcom_q6v5_ping_subsystem(struct qcom_q6v5 *q6v5)
+{
+ int ret;
+ int ping_failed = 0;
+
+ reinit_completion(&q6v5->ping_done);
+
+ /* Set master kernel Ping bit */
+ ret = qcom_smem_state_update_bits(q6v5->ping_state,
+ BIT(q6v5->ping_bit), BIT(q6v5->ping_bit));
+ if (ret) {
+ dev_err(q6v5->dev, "Failed to update ping bits\n");
+ return ret;
+ }
+
+ ret = wait_for_completion_timeout(&q6v5->ping_done, msecs_to_jiffies(Q6V5_PING_TIMEOUT_MS));
+ if (!ret) {
+ ping_failed = -ETIMEDOUT;
+ dev_err(q6v5->dev, "Failed to get back pong\n");
+ }
+
+ /* Clear ping bit master kernel */
+ ret = qcom_smem_state_update_bits(q6v5->ping_state, BIT(q6v5->ping_bit), 0);
+ if (ret) {
+ dev_err(q6v5->dev, "Failed to clear master kernel bits\n");
+ return ret;
+ }
+
+ return ping_failed;
+}
+EXPORT_SYMBOL_GPL(qcom_q6v5_ping_subsystem);
+
+int qcom_q6v5_ping_subsystem_init(struct qcom_q6v5 *q6v5, struct platform_device *pdev)
+{
+ int ret = -ENODEV;
+
+ q6v5->ping_state = devm_qcom_smem_state_get(&pdev->dev, "ping", &q6v5->ping_bit);
+ if (IS_ERR(q6v5->ping_state)) {
+ dev_err(&pdev->dev, "Failed to acquire smem state %ld\n",
+ PTR_ERR(q6v5->ping_state));
+ return PTR_ERR(q6v5->ping_state);
+ }
+
+ init_completion(&q6v5->ping_done);
+
+ q6v5->pong_irq = platform_get_irq_byname(pdev, "pong");
+ if (q6v5->pong_irq < 0)
+ return q6v5->pong_irq;
+
+ ret = devm_request_threaded_irq(&pdev->dev, q6v5->pong_irq, NULL,
+ q6v5_pong_interrupt, IRQF_TRIGGER_RISING | IRQF_ONESHOT,
+ "q6v5 pong", q6v5);
+ if (ret)
+ dev_err(&pdev->dev, "Failed to acquire pong IRQ\n");
+
+ return ret;
+}
+EXPORT_SYMBOL_GPL(qcom_q6v5_ping_subsystem_init);
+
/**
* qcom_q6v5_init() - initializer of the q6v5 common struct
* @q6v5: handle to be initialized
@@ -247,7 +328,7 @@ EXPORT_SYMBOL_GPL(qcom_q6v5_panic);
*/
int qcom_q6v5_init(struct qcom_q6v5 *q6v5, struct platform_device *pdev,
struct rproc *rproc, int crash_reason, const char *load_state,
- void (*handover)(struct qcom_q6v5 *q6v5))
+ bool early_boot, void (*handover)(struct qcom_q6v5 *q6v5))
{
int ret;
@@ -255,10 +336,14 @@ int qcom_q6v5_init(struct qcom_q6v5 *q6v5, struct platform_device *pdev,
q6v5->dev = &pdev->dev;
q6v5->crash_reason = crash_reason;
q6v5->handover = handover;
+ q6v5->early_boot = early_boot;
init_completion(&q6v5->start_done);
init_completion(&q6v5->stop_done);
+ if (early_boot)
+ init_completion(&q6v5->subsys_booted);
+
q6v5->wdog_irq = platform_get_irq_byname(pdev, "wdog");
if (q6v5->wdog_irq < 0)
return q6v5->wdog_irq;
diff --git a/drivers/remoteproc/qcom_q6v5.h b/drivers/remoteproc/qcom_q6v5.h
index 5a859c41896e..f500518136ae 100644
--- a/drivers/remoteproc/qcom_q6v5.h
+++ b/drivers/remoteproc/qcom_q6v5.h
@@ -17,22 +17,27 @@ struct qcom_q6v5 {
struct rproc *rproc;
struct qcom_smem_state *state;
+ struct qcom_smem_state *ping_state;
struct qmp *qmp;
struct icc_path *path;
unsigned stop_bit;
+ unsigned int ping_bit;
int wdog_irq;
int fatal_irq;
int ready_irq;
int handover_irq;
int stop_irq;
+ int pong_irq;
bool handover_issued;
struct completion start_done;
struct completion stop_done;
+ struct completion subsys_booted;
+ struct completion ping_done;
int crash_reason;
@@ -40,11 +45,13 @@ struct qcom_q6v5 {
const char *load_state;
void (*handover)(struct qcom_q6v5 *q6v5);
+
+ bool early_boot;
};
int qcom_q6v5_init(struct qcom_q6v5 *q6v5, struct platform_device *pdev,
struct rproc *rproc, int crash_reason, const char *load_state,
- void (*handover)(struct qcom_q6v5 *q6v5));
+ bool early_boot, void (*handover)(struct qcom_q6v5 *q6v5));
void qcom_q6v5_deinit(struct qcom_q6v5 *q6v5);
int qcom_q6v5_prepare(struct qcom_q6v5 *q6v5);
@@ -52,5 +59,7 @@ int qcom_q6v5_unprepare(struct qcom_q6v5 *q6v5);
int qcom_q6v5_request_stop(struct qcom_q6v5 *q6v5, struct qcom_sysmon *sysmon);
int qcom_q6v5_wait_for_start(struct qcom_q6v5 *q6v5, int timeout);
unsigned long qcom_q6v5_panic(struct qcom_q6v5 *q6v5);
+int qcom_q6v5_ping_subsystem(struct qcom_q6v5 *q6v5);
+int qcom_q6v5_ping_subsystem_init(struct qcom_q6v5 *q6v5, struct platform_device *pdev);
#endif
diff --git a/drivers/remoteproc/qcom_q6v5_adsp.c b/drivers/remoteproc/qcom_q6v5_adsp.c
index b5c8d6d38c9c..15b3cdf8c157 100644
--- a/drivers/remoteproc/qcom_q6v5_adsp.c
+++ b/drivers/remoteproc/qcom_q6v5_adsp.c
@@ -712,7 +712,7 @@ static int adsp_probe(struct platform_device *pdev)
goto disable_pm;
ret = qcom_q6v5_init(&adsp->q6v5, pdev, rproc, desc->crash_reason_smem,
- desc->load_state, qcom_adsp_pil_handover);
+ desc->load_state, false, qcom_adsp_pil_handover);
if (ret)
goto disable_pm;
diff --git a/drivers/remoteproc/qcom_q6v5_mss.c b/drivers/remoteproc/qcom_q6v5_mss.c
index 91940977ca89..2129064147d6 100644
--- a/drivers/remoteproc/qcom_q6v5_mss.c
+++ b/drivers/remoteproc/qcom_q6v5_mss.c
@@ -2143,7 +2143,7 @@ static int q6v5_probe(struct platform_device *pdev)
qproc->has_mba_logs = desc->has_mba_logs;
ret = qcom_q6v5_init(&qproc->q6v5, pdev, rproc, MPSS_CRASH_REASON_SMEM, "modem",
- qcom_msa_handover);
+ false, qcom_msa_handover);
if (ret)
goto detach_proxy_pds;
diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c
index 52680ac99589..7e890e18dd82 100644
--- a/drivers/remoteproc/qcom_q6v5_pas.c
+++ b/drivers/remoteproc/qcom_q6v5_pas.c
@@ -35,6 +35,8 @@
#define MAX_ASSIGN_COUNT 3
+#define EARLY_ATTACH_TIMEOUT_MS 5000
+
struct qcom_pas_data {
int crash_reason_smem;
const char *firmware_name;
@@ -59,6 +61,7 @@ struct qcom_pas_data {
int region_assign_count;
bool region_assign_shared;
int region_assign_vmid;
+ bool early_boot;
};
struct qcom_pas {
@@ -326,6 +329,7 @@ static int qcom_pas_start(struct rproc *rproc)
}
ret = qcom_q6v5_wait_for_start(&pas->q6v5, msecs_to_jiffies(5000));
+
if (ret == -ETIMEDOUT) {
dev_err(pas->dev, "start timed out\n");
qcom_scm_pas_shutdown(pas->pas_id);
@@ -409,6 +413,8 @@ static int qcom_pas_stop(struct rproc *rproc)
if (pas->smem_host_id)
ret = qcom_smem_bust_hwspin_lock_by_host(pas->smem_host_id);
+ pas->q6v5.early_boot = false;
+
return ret;
}
@@ -434,6 +440,85 @@ static unsigned long qcom_pas_panic(struct rproc *rproc)
return qcom_q6v5_panic(&pas->q6v5);
}
+static int qcom_pas_attach(struct rproc *rproc)
+{
+ int ret;
+ struct qcom_pas *pas = rproc->priv;
+ bool ready_state;
+ bool crash_state;
+
+ pas->q6v5.running = true;
+ ret = irq_get_irqchip_state(pas->q6v5.fatal_irq,
+ IRQCHIP_STATE_LINE_LEVEL, &crash_state);
+
+ if (ret)
+ goto disable_running;
+
+ if (crash_state) {
+ dev_err(pas->dev, "Sub system has crashed before driver probe\n");
+ rproc_report_crash(rproc, RPROC_FATAL_ERROR);
+ ret = -EINVAL;
+ goto disable_running;
+ }
+
+ ret = irq_get_irqchip_state(pas->q6v5.ready_irq,
+ IRQCHIP_STATE_LINE_LEVEL, &ready_state);
+
+ if (ret)
+ goto disable_running;
+
+ enable_irq(pas->q6v5.handover_irq);
+
+ if (unlikely(!ready_state)) {
+ /* Set a 5 seconds timeout in case the early boot is delayed */
+ ret = wait_for_completion_timeout(&pas->q6v5.subsys_booted,
+ msecs_to_jiffies(EARLY_ATTACH_TIMEOUT_MS));
+
+ /*
+ * The bootloader may not support early boot, mark the state as
+ * RPROC_OFFLINE so that the PAS driver can load the firmware and
+ * start the remoteproc.
+ */
+ if (!ret) {
+ dev_err(pas->dev, "Timeout on waiting for subsystem interrupt\n");
+ pas->rproc->state = RPROC_OFFLINE;
+ ret = -ETIMEDOUT;
+ goto disable_handover;
+ }
+
+ /* Only ping the subsystem if ready_state is set */
+ ret = irq_get_irqchip_state(pas->q6v5.ready_irq,
+ IRQCHIP_STATE_LINE_LEVEL, &ready_state);
+
+ if (ret)
+ goto disable_handover;
+
+ if (!ready_state) {
+ ret = -EINVAL;
+ goto disable_handover;
+ }
+ }
+
+ ret = qcom_q6v5_ping_subsystem(&pas->q6v5);
+
+ if (ret) {
+ dev_err(pas->dev, "Failed to ping subsystem, assuming device crashed\n");
+ rproc_report_crash(rproc, RPROC_FATAL_ERROR);
+ goto disable_handover;
+ }
+
+ pas->q6v5.handover_issued = true;
+
+ return 0;
+
+disable_handover:
+ disable_irq(pas->q6v5.handover_irq);
+disable_running:
+ pas->q6v5.running = false;
+
+ return ret;
+}
+
static const struct rproc_ops qcom_pas_ops = {
.unprepare = qcom_pas_unprepare,
.start = qcom_pas_start,
@@ -442,6 +527,7 @@ static const struct rproc_ops qcom_pas_ops = {
.parse_fw = qcom_register_dump_segments,
.load = qcom_pas_load,
.panic = qcom_pas_panic,
+ .attach = qcom_pas_attach,
};
static const struct rproc_ops qcom_pas_minidump_ops = {
@@ -746,7 +832,7 @@ static int qcom_pas_probe(struct platform_device *pdev)
pas->proxy_pd_count = ret;
ret = qcom_q6v5_init(&pas->q6v5, pdev, rproc, desc->crash_reason_smem,
- desc->load_state, qcom_pas_handover);
+ desc->load_state, desc->early_boot, qcom_pas_handover);
if (ret)
goto detach_proxy_pds;
@@ -760,6 +846,15 @@ static int qcom_pas_probe(struct platform_device *pdev)
}
qcom_add_ssr_subdev(rproc, &pas->ssr_subdev, desc->ssr_name);
+
+ if (pas->q6v5.early_boot) {
+ ret = qcom_q6v5_ping_subsystem_init(&pas->q6v5, pdev);
+ if (ret)
+ dev_warn(&pdev->dev, "Falling back to firmware load\n");
+ else
+ pas->rproc->state = RPROC_DETACHED;
+ }
+
ret = rproc_add(rproc);
if (ret)
goto remove_ssr_sysmon;
diff --git a/drivers/remoteproc/qcom_q6v5_wcss.c b/drivers/remoteproc/qcom_q6v5_wcss.c
index c27200159a88..859141589ed7 100644
--- a/drivers/remoteproc/qcom_q6v5_wcss.c
+++ b/drivers/remoteproc/qcom_q6v5_wcss.c
@@ -1011,7 +1011,7 @@ static int q6v5_wcss_probe(struct platform_device *pdev)
if (ret)
return ret;
- ret = qcom_q6v5_init(&wcss->q6v5, pdev, rproc, desc->crash_reason_smem, NULL, NULL);
+ ret = qcom_q6v5_init(&wcss->q6v5, pdev, rproc, desc->crash_reason_smem, NULL, false, NULL);
if (ret)
return ret;
--
2.25.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v3 5/5] remoteproc: qcom_q6v5_pas: Add SoCCP node on Kaanapali
2025-12-23 9:13 [PATCH v3 0/5] Add initial remoteproc support for Kaanapali SoC Jingyi Wang
` (3 preceding siblings ...)
2025-12-23 9:13 ` [PATCH v3 4/5] remoteproc: qcom: pas: Add late attach support for subsystems Jingyi Wang
@ 2025-12-23 9:13 ` Jingyi Wang
2025-12-23 20:15 ` Dmitry Baryshkov
4 siblings, 1 reply; 22+ messages in thread
From: Jingyi Wang @ 2025-12-23 9:13 UTC (permalink / raw)
To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam
Cc: aiqun.yu, tingwei.zhang, trilok.soni, yijie.yang, linux-arm-msm,
linux-remoteproc, devicetree, linux-kernel, Jingyi Wang
The SoC Control Processor (SoCCP) is small RISC-V MCU that controls
USB Type-C, battery charging and various other functions on Qualcomm SoCs.
It provides a solution for control-plane processing, reducing per-subsystem
microcontroller reinvention. Add support for SoCCP PAS loader on Kaanapali
platform.
Signed-off-by: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
---
drivers/remoteproc/qcom_q6v5_pas.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c
index 7e890e18dd82..e0028143377a 100644
--- a/drivers/remoteproc/qcom_q6v5_pas.c
+++ b/drivers/remoteproc/qcom_q6v5_pas.c
@@ -1530,7 +1530,25 @@ static const struct qcom_pas_data sm8750_mpss_resource = {
.region_assign_vmid = QCOM_SCM_VMID_MSS_MSA,
};
+static const struct qcom_pas_data kaanapali_soccp_resource = {
+ .crash_reason_smem = 656,
+ .firmware_name = "soccp.mbn",
+ .dtb_firmware_name = "soccp_dtb.mbn",
+ .pas_id = 51,
+ .dtb_pas_id = 0x41,
+ .proxy_pd_names = (char*[]){
+ "cx",
+ "mx",
+ NULL
+ },
+ .ssr_name = "soccp",
+ .sysmon_name = "soccp",
+ .auto_boot = true,
+ .early_boot = true,
+};
+
static const struct of_device_id qcom_pas_of_match[] = {
+ { .compatible = "qcom,kaanapali-soccp-pas", .data = &kaanapali_soccp_resource},
{ .compatible = "qcom,milos-adsp-pas", .data = &sm8550_adsp_resource},
{ .compatible = "qcom,milos-cdsp-pas", .data = &milos_cdsp_resource},
{ .compatible = "qcom,milos-mpss-pas", .data = &sm8450_mpss_resource},
--
2.25.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [PATCH v3 1/5] dt-bindings: remoteproc: qcom,sm8550-pas: Add Kaanapali ADSP
2025-12-23 9:13 ` [PATCH v3 1/5] dt-bindings: remoteproc: qcom,sm8550-pas: Add Kaanapali ADSP Jingyi Wang
@ 2025-12-23 13:02 ` Krzysztof Kozlowski
0 siblings, 0 replies; 22+ messages in thread
From: Krzysztof Kozlowski @ 2025-12-23 13:02 UTC (permalink / raw)
To: Jingyi Wang
Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam,
aiqun.yu, tingwei.zhang, trilok.soni, yijie.yang, linux-arm-msm,
linux-remoteproc, devicetree, linux-kernel
On Tue, Dec 23, 2025 at 01:13:47AM -0800, Jingyi Wang wrote:
> Document compatible for Qualcomm Kaanapali SoC ADSP PAS which looks fully
> compatible with SM8750, which can fallback to SM8550 except for one more
> interrupt ("shutdown-ack").
>
> Signed-off-by: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
> ---
> Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 2/5] dt-bindings: remoteproc: qcom,sm8550-pas: Add Kaanapali CDSP
2025-12-23 9:13 ` [PATCH v3 2/5] dt-bindings: remoteproc: qcom,sm8550-pas: Add Kaanapali CDSP Jingyi Wang
@ 2025-12-23 13:07 ` Krzysztof Kozlowski
2025-12-24 2:44 ` Jingyi Wang
0 siblings, 1 reply; 22+ messages in thread
From: Krzysztof Kozlowski @ 2025-12-23 13:07 UTC (permalink / raw)
To: Jingyi Wang
Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam,
aiqun.yu, tingwei.zhang, trilok.soni, yijie.yang, linux-arm-msm,
linux-remoteproc, devicetree, linux-kernel
On Tue, Dec 23, 2025 at 01:13:48AM -0800, Jingyi Wang wrote:
> Add remote processor PAS loader for Kaanapali CDSP processor, compatible
> with earlier SM8550 with minor difference: one more sixth "shutdown-ack"
> interrupt. It is not compatible with SM8650 because one memory region
> "global_sync_mem" is not managed by kernel on Kaanapali so it is removed
> in the remoteproc cdsp node.
>
> Signed-off-by: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
> ---
> Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml
> index 31dffd02125a..3b66bd106737 100644
> --- a/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml
> +++ b/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml
> @@ -35,6 +35,10 @@ properties:
> - items:
> - const: qcom,sm8750-cdsp-pas
> - const: qcom,sm8650-cdsp-pas
> + - items:
> + - enum:
> + - qcom,kaanapali-cdsp-pas
> + - const: qcom,sm8550-cdsp-pas
This should be placed before list with "qcom,sm8650-cdsp-pas", because
we generally sort them by fallback.
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 3/5] dt-bindings: remoteproc: qcom,pas: Document pas for SoCCP on Kaanapali and Glymur platforms
2025-12-23 9:13 ` [PATCH v3 3/5] dt-bindings: remoteproc: qcom,pas: Document pas for SoCCP on Kaanapali and Glymur platforms Jingyi Wang
@ 2025-12-23 13:29 ` Krzysztof Kozlowski
2025-12-24 3:16 ` Jingyi Wang
0 siblings, 1 reply; 22+ messages in thread
From: Krzysztof Kozlowski @ 2025-12-23 13:29 UTC (permalink / raw)
To: Jingyi Wang
Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam,
aiqun.yu, tingwei.zhang, trilok.soni, yijie.yang, linux-arm-msm,
linux-remoteproc, devicetree, linux-kernel, Sibi Sankar
On Tue, Dec 23, 2025 at 01:13:49AM -0800, Jingyi Wang wrote:
> diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml
> index 63a82e7a8bf8..149e993282bb 100644
> --- a/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml
> +++ b/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml
> @@ -33,16 +33,22 @@ properties:
> - description: Handover interrupt
> - description: Stop acknowledge interrupt
> - description: Shutdown acknowledge interrupt
> + - description: Pong interrupt
> + - description: Wake acknowledge interrupt
>
> interrupt-names:
> minItems: 5
> + maxItems: 7
> items:
> - - const: wdog
> - - const: fatal
> - - const: ready
> - - const: handover
> - - const: stop-ack
> - - const: shutdown-ack
> + enum:
No, no. Stop doing random changes. NAK
Now you remove strict order (see writing bindings) and claim every
device like SM8550 ADSP PAS has any order.
And it is now de-synced with interrupts. Read writing bindings - this is
clearly described there at line 90!
You can only grow existing list.
> + - wdog
> + - fatal
> + - ready
> + - handover
> + - stop-ack
> + - shutdown-ack
> + - pong
> + - wake-ack
>
> power-domains:
> minItems: 1
> @@ -55,13 +61,21 @@ properties:
> qcom,smem-states:
> $ref: /schemas/types.yaml#/definitions/phandle-array
> description: States used by the AP to signal the Hexagon core
> + minItems: 1
> items:
> - - description: Stop the modem
> + - description: Stop the remoteproc
> + - description: Wake up the remoteproc
> + - description: Make the remoteproc sleep
> + - description: Ping the remoteproc
So every device like SM8550 PAS has now four smem states... without any
explanation. Read writing bindings - what does it say?
"... and define constraints specific to the device."
"DO define properties in terms of constraints. How many entries? What are
possible values? What is the order? All these constraints represent the ABI
as well."
It is your homework to read the docs. Not mine.
If you want to change common list you must define strict constraints for
EVERY user.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 4/5] remoteproc: qcom: pas: Add late attach support for subsystems
2025-12-23 9:13 ` [PATCH v3 4/5] remoteproc: qcom: pas: Add late attach support for subsystems Jingyi Wang
@ 2025-12-23 20:15 ` Dmitry Baryshkov
2025-12-24 3:20 ` Jingyi Wang
2025-12-23 22:15 ` Stephan Gerhold
2025-12-26 2:10 ` kernel test robot
2 siblings, 1 reply; 22+ messages in thread
From: Dmitry Baryshkov @ 2025-12-23 20:15 UTC (permalink / raw)
To: Jingyi Wang
Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam,
aiqun.yu, tingwei.zhang, trilok.soni, yijie.yang, linux-arm-msm,
linux-remoteproc, devicetree, linux-kernel,
Gokul krishna Krishnakumar
On Tue, Dec 23, 2025 at 01:13:50AM -0800, Jingyi Wang wrote:
> From: Gokul krishna Krishnakumar <gokul.krishnakumar@oss.qualcomm.com>
So, two names start from the capital letters and one from a downcase
one?
>
> Subsystems can be brought out of reset by entities such as bootloaders.
> As the irq enablement could be later than subsystem bring up, the state
> of subsystem should be checked by reading SMP2P bits and performing ping
> test.
>
> A new qcom_pas_attach() function is introduced. if a crash state is
> detected for the subsystem, rproc_report_crash() is called. If the
> subsystem is ready either at the first check or within a 5-second timeout
> and the ping is successful, it will be marked as "attached". The ready
> state could be set by either ready interrupt or handover interrupt.
>
> If "early_boot" is set by kernel but "subsys_booted" is not completed
> within the timeout, It could be the early boot feature is not supported
> by other entities. In this case, the state will be marked as RPROC_OFFLINE
> so that the PAS driver can load the firmware and start the remoteproc. As
> the running state is set once attach function is called, the watchdog or
> fatal interrupt received can be handled correctly.
>
> Signed-off-by: Gokul krishna Krishnakumar <gokul.krishnakumar@oss.qualcomm.com>
> Co-developed-by: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
> Signed-off-by: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
> ---
> drivers/remoteproc/qcom_q6v5.c | 87 ++++++++++++++++++++++++++++++++-
> drivers/remoteproc/qcom_q6v5.h | 11 ++++-
> drivers/remoteproc/qcom_q6v5_adsp.c | 2 +-
> drivers/remoteproc/qcom_q6v5_mss.c | 2 +-
> drivers/remoteproc/qcom_q6v5_pas.c | 97 ++++++++++++++++++++++++++++++++++++-
> drivers/remoteproc/qcom_q6v5_wcss.c | 2 +-
> 6 files changed, 195 insertions(+), 6 deletions(-)
> @@ -247,7 +328,7 @@ EXPORT_SYMBOL_GPL(qcom_q6v5_panic);
> */
> int qcom_q6v5_init(struct qcom_q6v5 *q6v5, struct platform_device *pdev,
> struct rproc *rproc, int crash_reason, const char *load_state,
> - void (*handover)(struct qcom_q6v5 *q6v5))
> + bool early_boot, void (*handover)(struct qcom_q6v5 *q6v5))
Separate lines
> {
> int ret;
>
> @@ -326,6 +329,7 @@ static int qcom_pas_start(struct rproc *rproc)
> }
>
> ret = qcom_q6v5_wait_for_start(&pas->q6v5, msecs_to_jiffies(5000));
> +
Nope, unnecessary empty line.
> if (ret == -ETIMEDOUT) {
> dev_err(pas->dev, "start timed out\n");
> qcom_scm_pas_shutdown(pas->pas_id);
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 5/5] remoteproc: qcom_q6v5_pas: Add SoCCP node on Kaanapali
2025-12-23 9:13 ` [PATCH v3 5/5] remoteproc: qcom_q6v5_pas: Add SoCCP node on Kaanapali Jingyi Wang
@ 2025-12-23 20:15 ` Dmitry Baryshkov
0 siblings, 0 replies; 22+ messages in thread
From: Dmitry Baryshkov @ 2025-12-23 20:15 UTC (permalink / raw)
To: Jingyi Wang
Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam,
aiqun.yu, tingwei.zhang, trilok.soni, yijie.yang, linux-arm-msm,
linux-remoteproc, devicetree, linux-kernel
On Tue, Dec 23, 2025 at 01:13:51AM -0800, Jingyi Wang wrote:
> The SoC Control Processor (SoCCP) is small RISC-V MCU that controls
> USB Type-C, battery charging and various other functions on Qualcomm SoCs.
> It provides a solution for control-plane processing, reducing per-subsystem
> microcontroller reinvention. Add support for SoCCP PAS loader on Kaanapali
> platform.
>
> Signed-off-by: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
> ---
> drivers/remoteproc/qcom_q6v5_pas.c | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 4/5] remoteproc: qcom: pas: Add late attach support for subsystems
2025-12-23 9:13 ` [PATCH v3 4/5] remoteproc: qcom: pas: Add late attach support for subsystems Jingyi Wang
2025-12-23 20:15 ` Dmitry Baryshkov
@ 2025-12-23 22:15 ` Stephan Gerhold
2025-12-24 4:43 ` Jingyi Wang
2025-12-26 2:10 ` kernel test robot
2 siblings, 1 reply; 22+ messages in thread
From: Stephan Gerhold @ 2025-12-23 22:15 UTC (permalink / raw)
To: Jingyi Wang
Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam,
aiqun.yu, tingwei.zhang, trilok.soni, yijie.yang, linux-arm-msm,
linux-remoteproc, devicetree, linux-kernel,
Gokul krishna Krishnakumar
On Tue, Dec 23, 2025 at 01:13:50AM -0800, Jingyi Wang wrote:
> From: Gokul krishna Krishnakumar <gokul.krishnakumar@oss.qualcomm.com>
>
> Subsystems can be brought out of reset by entities such as bootloaders.
> As the irq enablement could be later than subsystem bring up, the state
> of subsystem should be checked by reading SMP2P bits and performing ping
> test.
>
> A new qcom_pas_attach() function is introduced. if a crash state is
> detected for the subsystem, rproc_report_crash() is called. If the
> subsystem is ready either at the first check or within a 5-second timeout
> and the ping is successful, it will be marked as "attached". The ready
> state could be set by either ready interrupt or handover interrupt.
>
> If "early_boot" is set by kernel but "subsys_booted" is not completed
> within the timeout, It could be the early boot feature is not supported
> by other entities. In this case, the state will be marked as RPROC_OFFLINE
> so that the PAS driver can load the firmware and start the remoteproc. As
> the running state is set once attach function is called, the watchdog or
> fatal interrupt received can be handled correctly.
>
> Signed-off-by: Gokul krishna Krishnakumar <gokul.krishnakumar@oss.qualcomm.com>
> Co-developed-by: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
> Signed-off-by: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
> ---
> drivers/remoteproc/qcom_q6v5.c | 87 ++++++++++++++++++++++++++++++++-
> drivers/remoteproc/qcom_q6v5.h | 11 ++++-
> drivers/remoteproc/qcom_q6v5_adsp.c | 2 +-
> drivers/remoteproc/qcom_q6v5_mss.c | 2 +-
> drivers/remoteproc/qcom_q6v5_pas.c | 97 ++++++++++++++++++++++++++++++++++++-
> drivers/remoteproc/qcom_q6v5_wcss.c | 2 +-
> 6 files changed, 195 insertions(+), 6 deletions(-)
>
> [...]
> diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c
> index 52680ac99589..7e890e18dd82 100644
> --- a/drivers/remoteproc/qcom_q6v5_pas.c
> +++ b/drivers/remoteproc/qcom_q6v5_pas.c
> [...]
> @@ -434,6 +440,85 @@ static unsigned long qcom_pas_panic(struct rproc *rproc)
> return qcom_q6v5_panic(&pas->q6v5);
> }
>
> +static int qcom_pas_attach(struct rproc *rproc)
> +{
> + int ret;
> + struct qcom_pas *pas = rproc->priv;
> + bool ready_state;
> + bool crash_state;
> +
> + pas->q6v5.running = true;
> + ret = irq_get_irqchip_state(pas->q6v5.fatal_irq,
> + IRQCHIP_STATE_LINE_LEVEL, &crash_state);
> +
> + if (ret)
> + goto disable_running;
> +
> + if (crash_state) {
> + dev_err(pas->dev, "Sub system has crashed before driver probe\n");
> + rproc_report_crash(rproc, RPROC_FATAL_ERROR);
Have you tested this case? From quick review of the code in
remoteproc_core.c I'm skeptical if this will work correctly:
1. Remoteproc is in RPROC_DETACHED state during auto boot
2. qcom_pas_attach() runs and calls rproc_report_crash(), then fails so
RPROC_DETACHED state remains
3. rproc_crash_handler_work() sets RPROC_CRASHED and starts recovery
4. rproc_boot_recovery() calls rproc_stop()
5. rproc_stop() calls rproc_stop_subdevices(), but because the
remoteproc was never attached, the subdevices were never started.
In this situation, rproc_stop_subdevices() should not be called. I would
expect you will need to make some minor changes to the remoteproc_core
to support handling crashes during RPROC_DETACHED state.
I might be reading the code wrong, but please make sure that you
simulate this case at runtime and check that it works correctly.
> + ret = -EINVAL;
> + goto disable_running;
> + }
> +
> + ret = irq_get_irqchip_state(pas->q6v5.ready_irq,
> + IRQCHIP_STATE_LINE_LEVEL, &ready_state);
> +
> + if (ret)
> + goto disable_running;
> +
> + enable_irq(pas->q6v5.handover_irq);
> +
> + if (unlikely(!ready_state)) {
> + /* Set a 5 seconds timeout in case the early boot is delayed */
> + ret = wait_for_completion_timeout(&pas->q6v5.subsys_booted,
> + msecs_to_jiffies(EARLY_ATTACH_TIMEOUT_MS));
> +
Again, have you tested this case?
As I already wrote in v2, I don't see how this case will work reliably
in practice. How do you ensure that the handover resources will be kept
on during the Linux boot process until the remoteproc has completed
booting?
Also, above you enable the handover_irq. Let's assume a handover IRQ
does come in while you are waiting here. Then q6v5_handover_interrupt()
will call q6v5->handover(q6v5); to disable the handover resources
(clocks, power domains), but you never enabled those. I would expect
that you get some bad reference count warnings in the kernel log.
I would still suggest dropping this code entirely. As far as I
understand the response from Aiqun(Maria) Yu [1], there is no real use
case for this on current platforms. If you want to keep this, you would
need to vote for the handover resources during probe() (and perhaps
more, this case is quite tricky).
Please test all your changes carefully in v4.
Thanks,
Stephan
[1]: https://lore.kernel.org/linux-arm-msm/c15f083d-a2c1-462a-aad4-a72b36fbe1ac@oss.qualcomm.com/
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 2/5] dt-bindings: remoteproc: qcom,sm8550-pas: Add Kaanapali CDSP
2025-12-23 13:07 ` Krzysztof Kozlowski
@ 2025-12-24 2:44 ` Jingyi Wang
0 siblings, 0 replies; 22+ messages in thread
From: Jingyi Wang @ 2025-12-24 2:44 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam,
aiqun.yu, tingwei.zhang, trilok.soni, yijie.yang, linux-arm-msm,
linux-remoteproc, devicetree, linux-kernel
On 12/23/2025 9:07 PM, Krzysztof Kozlowski wrote:
> On Tue, Dec 23, 2025 at 01:13:48AM -0800, Jingyi Wang wrote:
>> Add remote processor PAS loader for Kaanapali CDSP processor, compatible
>> with earlier SM8550 with minor difference: one more sixth "shutdown-ack"
>> interrupt. It is not compatible with SM8650 because one memory region
>> "global_sync_mem" is not managed by kernel on Kaanapali so it is removed
>> in the remoteproc cdsp node.
>>
>> Signed-off-by: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
>> ---
>> Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml | 5 +++++
>> 1 file changed, 5 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml
>> index 31dffd02125a..3b66bd106737 100644
>> --- a/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml
>> +++ b/Documentation/devicetree/bindings/remoteproc/qcom,sm8550-pas.yaml
>> @@ -35,6 +35,10 @@ properties:
>> - items:
>> - const: qcom,sm8750-cdsp-pas
>> - const: qcom,sm8650-cdsp-pas
>> + - items:
>> + - enum:
>> + - qcom,kaanapali-cdsp-pas
>> + - const: qcom,sm8550-cdsp-pas
>
> This should be placed before list with "qcom,sm8650-cdsp-pas", because
> we generally sort them by fallback.
>
will fix this
Thanks,
Jingyi
> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
>
> Best regards,
> Krzysztof
>
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 3/5] dt-bindings: remoteproc: qcom,pas: Document pas for SoCCP on Kaanapali and Glymur platforms
2025-12-23 13:29 ` Krzysztof Kozlowski
@ 2025-12-24 3:16 ` Jingyi Wang
2025-12-24 8:34 ` Krzysztof Kozlowski
0 siblings, 1 reply; 22+ messages in thread
From: Jingyi Wang @ 2025-12-24 3:16 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam,
aiqun.yu, tingwei.zhang, trilok.soni, yijie.yang, linux-arm-msm,
linux-remoteproc, devicetree, linux-kernel, Sibi Sankar
On 12/23/2025 9:29 PM, Krzysztof Kozlowski wrote:
> On Tue, Dec 23, 2025 at 01:13:49AM -0800, Jingyi Wang wrote:
>> diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml
>> index 63a82e7a8bf8..149e993282bb 100644
>> --- a/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml
>> +++ b/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml
>> @@ -33,16 +33,22 @@ properties:
>> - description: Handover interrupt
>> - description: Stop acknowledge interrupt
>> - description: Shutdown acknowledge interrupt
>> + - description: Pong interrupt
>> + - description: Wake acknowledge interrupt
>>
>> interrupt-names:
>> minItems: 5
>> + maxItems: 7
>> items:
>> - - const: wdog
>> - - const: fatal
>> - - const: ready
>> - - const: handover
>> - - const: stop-ack
>> - - const: shutdown-ack
>> + enum:
>
> No, no. Stop doing random changes. NAK
>
> Now you remove strict order (see writing bindings) and claim every
> device like SM8550 ADSP PAS has any order.
>
> And it is now de-synced with interrupts. Read writing bindings - this is
> clearly described there at line 90!
>
> You can only grow existing list.
>
>
>
the interrupt for soccp is defined as
"wdog","fatal","ready","handover","stop-ack","pong","wake-ack"
while other pas could be:
"wdog","fatal","ready","handover","stop-ack","shutdown-ack"
so grow existing list is not work for this,
In the v1, got your comments to adjust pas-common.yaml for the interrupt:
https://lore.kernel.org/all/861b6ede-f168-44e6-85bd-10cf04dbcec7@kernel.org/
and in v2, interrupt are moved as part to the "allOf" with if-else and
also got NAK:
https://lore.kernel.org/all/20251030-venomous-apricot-falcon-b3fd64@kuoka/
Could you please share a example for us to understand how to maintain it in
pas-common.yaml, not define if-else and has strict order at the same time?
That will be very helpful.
Thanks,
Jingyi
>> + - wdog
>> + - fatal
>> + - ready
>> + - handover
>> + - stop-ack
>> + - shutdown-ack
>> + - pong
>> + - wake-ack
>>
>> power-domains:
>> minItems: 1
>> @@ -55,13 +61,21 @@ properties:
>> qcom,smem-states:
>> $ref: /schemas/types.yaml#/definitions/phandle-array
>> description: States used by the AP to signal the Hexagon core
>> + minItems: 1
>> items:
>> - - description: Stop the modem
>> + - description: Stop the remoteproc
>> + - description: Wake up the remoteproc
>> + - description: Make the remoteproc sleep
>> + - description: Ping the remoteproc
>
> So every device like SM8550 PAS has now four smem states... without any
> explanation. Read writing bindings - what does it say?
>
This change is similar to current interrupt-names property define 6 interrupts
but has minItems: 5
- interrupt-names:
- minItems: 5
- items:
- - const: wdog
- - const: fatal
- - const: ready
- - const: handover
- - const: stop-ack
- - const: shutdown-ack
I think this should be "grow existing list" you mentioned above?
Thanks,
Jingyi
> "... and define constraints specific to the device."
>
> "DO define properties in terms of constraints. How many entries? What are
> possible values? What is the order? All these constraints represent the ABI
> as well."
>
> It is your homework to read the docs. Not mine.
>
> If you want to change common list you must define strict constraints for
> EVERY user.
>
> Best regards,
> Krzysztof
>
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 4/5] remoteproc: qcom: pas: Add late attach support for subsystems
2025-12-23 20:15 ` Dmitry Baryshkov
@ 2025-12-24 3:20 ` Jingyi Wang
0 siblings, 0 replies; 22+ messages in thread
From: Jingyi Wang @ 2025-12-24 3:20 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam,
aiqun.yu, tingwei.zhang, trilok.soni, yijie.yang, linux-arm-msm,
linux-remoteproc, devicetree, linux-kernel,
Gokul krishna Krishnakumar
On 12/24/2025 4:15 AM, Dmitry Baryshkov wrote:
> On Tue, Dec 23, 2025 at 01:13:50AM -0800, Jingyi Wang wrote:
>> From: Gokul krishna Krishnakumar <gokul.krishnakumar@oss.qualcomm.com>
>
> So, two names start from the capital letters and one from a downcase
> one?
>
will fix
>>
>> Subsystems can be brought out of reset by entities such as bootloaders.
>> As the irq enablement could be later than subsystem bring up, the state
>> of subsystem should be checked by reading SMP2P bits and performing ping
>> test.
>>
>> A new qcom_pas_attach() function is introduced. if a crash state is
>> detected for the subsystem, rproc_report_crash() is called. If the
>> subsystem is ready either at the first check or within a 5-second timeout
>> and the ping is successful, it will be marked as "attached". The ready
>> state could be set by either ready interrupt or handover interrupt.
>>
>> If "early_boot" is set by kernel but "subsys_booted" is not completed
>> within the timeout, It could be the early boot feature is not supported
>> by other entities. In this case, the state will be marked as RPROC_OFFLINE
>> so that the PAS driver can load the firmware and start the remoteproc. As
>> the running state is set once attach function is called, the watchdog or
>> fatal interrupt received can be handled correctly.
>>
>> Signed-off-by: Gokul krishna Krishnakumar <gokul.krishnakumar@oss.qualcomm.com>
>> Co-developed-by: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
>> Signed-off-by: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
>> ---
>> drivers/remoteproc/qcom_q6v5.c | 87 ++++++++++++++++++++++++++++++++-
>> drivers/remoteproc/qcom_q6v5.h | 11 ++++-
>> drivers/remoteproc/qcom_q6v5_adsp.c | 2 +-
>> drivers/remoteproc/qcom_q6v5_mss.c | 2 +-
>> drivers/remoteproc/qcom_q6v5_pas.c | 97 ++++++++++++++++++++++++++++++++++++-
>> drivers/remoteproc/qcom_q6v5_wcss.c | 2 +-
>> 6 files changed, 195 insertions(+), 6 deletions(-)
>
>> @@ -247,7 +328,7 @@ EXPORT_SYMBOL_GPL(qcom_q6v5_panic);
>> */
>> int qcom_q6v5_init(struct qcom_q6v5 *q6v5, struct platform_device *pdev,
>> struct rproc *rproc, int crash_reason, const char *load_state,
>> - void (*handover)(struct qcom_q6v5 *q6v5))
>> + bool early_boot, void (*handover)(struct qcom_q6v5 *q6v5))
>
> Separate lines
>
will fix
>> {
>> int ret;
>>
>> @@ -326,6 +329,7 @@ static int qcom_pas_start(struct rproc *rproc)
>> }
>>
>> ret = qcom_q6v5_wait_for_start(&pas->q6v5, msecs_to_jiffies(5000));
>> +
>
> Nope, unnecessary empty line.
>
will fix
>> if (ret == -ETIMEDOUT) {
>> dev_err(pas->dev, "start timed out\n");
>> qcom_scm_pas_shutdown(pas->pas_id);
>
Thanks,
Jingyi
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 4/5] remoteproc: qcom: pas: Add late attach support for subsystems
2025-12-23 22:15 ` Stephan Gerhold
@ 2025-12-24 4:43 ` Jingyi Wang
0 siblings, 0 replies; 22+ messages in thread
From: Jingyi Wang @ 2025-12-24 4:43 UTC (permalink / raw)
To: Stephan Gerhold
Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam,
aiqun.yu, tingwei.zhang, trilok.soni, yijie.yang, linux-arm-msm,
linux-remoteproc, devicetree, linux-kernel,
Gokul krishna Krishnakumar
On 12/24/2025 6:15 AM, Stephan Gerhold wrote:
> On Tue, Dec 23, 2025 at 01:13:50AM -0800, Jingyi Wang wrote:
>> From: Gokul krishna Krishnakumar <gokul.krishnakumar@oss.qualcomm.com>
>>
>> Subsystems can be brought out of reset by entities such as bootloaders.
>> As the irq enablement could be later than subsystem bring up, the state
>> of subsystem should be checked by reading SMP2P bits and performing ping
>> test.
>>
>> A new qcom_pas_attach() function is introduced. if a crash state is
>> detected for the subsystem, rproc_report_crash() is called. If the
>> subsystem is ready either at the first check or within a 5-second timeout
>> and the ping is successful, it will be marked as "attached". The ready
>> state could be set by either ready interrupt or handover interrupt.
>>
>> If "early_boot" is set by kernel but "subsys_booted" is not completed
>> within the timeout, It could be the early boot feature is not supported
>> by other entities. In this case, the state will be marked as RPROC_OFFLINE
>> so that the PAS driver can load the firmware and start the remoteproc. As
>> the running state is set once attach function is called, the watchdog or
>> fatal interrupt received can be handled correctly.
>>
>> Signed-off-by: Gokul krishna Krishnakumar <gokul.krishnakumar@oss.qualcomm.com>
>> Co-developed-by: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
>> Signed-off-by: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
>> ---
>> drivers/remoteproc/qcom_q6v5.c | 87 ++++++++++++++++++++++++++++++++-
>> drivers/remoteproc/qcom_q6v5.h | 11 ++++-
>> drivers/remoteproc/qcom_q6v5_adsp.c | 2 +-
>> drivers/remoteproc/qcom_q6v5_mss.c | 2 +-
>> drivers/remoteproc/qcom_q6v5_pas.c | 97 ++++++++++++++++++++++++++++++++++++-
>> drivers/remoteproc/qcom_q6v5_wcss.c | 2 +-
>> 6 files changed, 195 insertions(+), 6 deletions(-)
>>
>> [...]
>> diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c
>> index 52680ac99589..7e890e18dd82 100644
>> --- a/drivers/remoteproc/qcom_q6v5_pas.c
>> +++ b/drivers/remoteproc/qcom_q6v5_pas.c
>> [...]
>> @@ -434,6 +440,85 @@ static unsigned long qcom_pas_panic(struct rproc *rproc)
>> return qcom_q6v5_panic(&pas->q6v5);
>> }
>>
>> +static int qcom_pas_attach(struct rproc *rproc)
>> +{
>> + int ret;
>> + struct qcom_pas *pas = rproc->priv;
>> + bool ready_state;
>> + bool crash_state;
>> +
>> + pas->q6v5.running = true;
>> + ret = irq_get_irqchip_state(pas->q6v5.fatal_irq,
>> + IRQCHIP_STATE_LINE_LEVEL, &crash_state);
>> +
>> + if (ret)
>> + goto disable_running;
>> +
>> + if (crash_state) {
>> + dev_err(pas->dev, "Sub system has crashed before driver probe\n");
>> + rproc_report_crash(rproc, RPROC_FATAL_ERROR);
>
> Have you tested this case? From quick review of the code in
> remoteproc_core.c I'm skeptical if this will work correctly:
>
> 1. Remoteproc is in RPROC_DETACHED state during auto boot
> 2. qcom_pas_attach() runs and calls rproc_report_crash(), then fails so
> RPROC_DETACHED state remains
> 3. rproc_crash_handler_work() sets RPROC_CRASHED and starts recovery
> 4. rproc_boot_recovery() calls rproc_stop()
> 5. rproc_stop() calls rproc_stop_subdevices(), but because the
> remoteproc was never attached, the subdevices were never started.
>
> In this situation, rproc_stop_subdevices() should not be called. I would
> expect you will need to make some minor changes to the remoteproc_core
> to support handling crashes during RPROC_DETACHED state.
>
> I might be reading the code wrong, but please make sure that you
> simulate this case at runtime and check that it works correctly.
>
Recheked this part, current path has some issue on recovery and subdev handling.
As in current code, rproc_report_crash is called in the ISR/callback, it may
take some effort to call it in this attach path.
>> + ret = -EINVAL;
>> + goto disable_running;
>> + }
>> +
>> + ret = irq_get_irqchip_state(pas->q6v5.ready_irq,
>> + IRQCHIP_STATE_LINE_LEVEL, &ready_state);
>> +
>> + if (ret)
>> + goto disable_running;
>> +
>> + enable_irq(pas->q6v5.handover_irq);
>> +
>> + if (unlikely(!ready_state)) {
>> + /* Set a 5 seconds timeout in case the early boot is delayed */
>> + ret = wait_for_completion_timeout(&pas->q6v5.subsys_booted,
>> + msecs_to_jiffies(EARLY_ATTACH_TIMEOUT_MS));
>> +
>
> Again, have you tested this case?
>
> As I already wrote in v2, I don't see how this case will work reliably
> in practice. How do you ensure that the handover resources will be kept
> on during the Linux boot process until the remoteproc has completed
> booting?
>
> Also, above you enable the handover_irq. Let's assume a handover IRQ
> does come in while you are waiting here. Then q6v5_handover_interrupt()
> will call q6v5->handover(q6v5); to disable the handover resources
> (clocks, power domains), but you never enabled those. I would expect
> that you get some bad reference count warnings in the kernel log.
>
> I would still suggest dropping this code entirely. As far as I
> understand the response from Aiqun(Maria) Yu [1], there is no real use
> case for this on current platforms. If you want to keep this, you would
> need to vote for the handover resources during probe() (and perhaps
> more, this case is quite tricky).
>
> Please test all your changes carefully in v4.
>
Thanks for your detailed review, the handover resources was indeed
neglected in the design, we will re-evaluate this part.
> Thanks,
> Stephan
>
> [1]: https://lore.kernel.org/linux-arm-msm/c15f083d-a2c1-462a-aad4-a72b36fbe1ac@oss.qualcomm.com/
Thanks,
Jingyi
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 3/5] dt-bindings: remoteproc: qcom,pas: Document pas for SoCCP on Kaanapali and Glymur platforms
2025-12-24 3:16 ` Jingyi Wang
@ 2025-12-24 8:34 ` Krzysztof Kozlowski
2026-02-13 1:22 ` Shawn Guo
0 siblings, 1 reply; 22+ messages in thread
From: Krzysztof Kozlowski @ 2025-12-24 8:34 UTC (permalink / raw)
To: Jingyi Wang
Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam,
aiqun.yu, tingwei.zhang, trilok.soni, yijie.yang, linux-arm-msm,
linux-remoteproc, devicetree, linux-kernel, Sibi Sankar
On 24/12/2025 04:16, Jingyi Wang wrote:
>
>
> On 12/23/2025 9:29 PM, Krzysztof Kozlowski wrote:
>> On Tue, Dec 23, 2025 at 01:13:49AM -0800, Jingyi Wang wrote:
>>> diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml
>>> index 63a82e7a8bf8..149e993282bb 100644
>>> --- a/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml
>>> +++ b/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml
>>> @@ -33,16 +33,22 @@ properties:
>>> - description: Handover interrupt
>>> - description: Stop acknowledge interrupt
>>> - description: Shutdown acknowledge interrupt
>>> + - description: Pong interrupt
>>> + - description: Wake acknowledge interrupt
>>>
>>> interrupt-names:
>>> minItems: 5
>>> + maxItems: 7
>>> items:
>>> - - const: wdog
>>> - - const: fatal
>>> - - const: ready
>>> - - const: handover
>>> - - const: stop-ack
>>> - - const: shutdown-ack
>>> + enum:
>>
>> No, no. Stop doing random changes. NAK
>>
>> Now you remove strict order (see writing bindings) and claim every
>> device like SM8550 ADSP PAS has any order.
>>
>> And it is now de-synced with interrupts. Read writing bindings - this is
>> clearly described there at line 90!
>>
>> You can only grow existing list.
>>
>>
>>
>
> the interrupt for soccp is defined as
> "wdog","fatal","ready","handover","stop-ack","pong","wake-ack"
> while other pas could be:
> "wdog","fatal","ready","handover","stop-ack","shutdown-ack"
>
> so grow existing list is not work for this,
>
> In the v1, got your comments to adjust pas-common.yaml for the interrupt:
> https://lore.kernel.org/all/861b6ede-f168-44e6-85bd-10cf04dbcec7@kernel.org/
>
> and in v2, interrupt are moved as part to the "allOf" with if-else and
> also got NAK:
> https://lore.kernel.org/all/20251030-venomous-apricot-falcon-b3fd64@kuoka/
>
> Could you please share a example for us to understand how to maintain it in
> pas-common.yaml, not define if-else and has strict order at the same time?
> That will be very helpful.
>
Can you read the docs first? This is not a ping pong, where you keep
sending till it passes the review. If I provide you idea, then you will
send something whatever based on that because you still did not read the
rules governing bindings.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 4/5] remoteproc: qcom: pas: Add late attach support for subsystems
2025-12-23 9:13 ` [PATCH v3 4/5] remoteproc: qcom: pas: Add late attach support for subsystems Jingyi Wang
2025-12-23 20:15 ` Dmitry Baryshkov
2025-12-23 22:15 ` Stephan Gerhold
@ 2025-12-26 2:10 ` kernel test robot
2 siblings, 0 replies; 22+ messages in thread
From: kernel test robot @ 2025-12-26 2:10 UTC (permalink / raw)
To: Jingyi Wang, Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam
Cc: llvm, oe-kbuild-all, aiqun.yu, tingwei.zhang, trilok.soni,
yijie.yang, linux-arm-msm, linux-remoteproc, devicetree,
linux-kernel, Jingyi Wang, Gokul krishna Krishnakumar
Hi Jingyi,
kernel test robot noticed the following build warnings:
[auto build test WARNING on cc3aa43b44bdb43dfbac0fcb51c56594a11338a8]
url: https://github.com/intel-lab-lkp/linux/commits/Jingyi-Wang/dt-bindings-remoteproc-qcom-sm8550-pas-Add-Kaanapali-ADSP/20251223-171848
base: cc3aa43b44bdb43dfbac0fcb51c56594a11338a8
patch link: https://lore.kernel.org/r/20251223-knp-remoteproc-v3-4-5b09885c55a5%40oss.qualcomm.com
patch subject: [PATCH v3 4/5] remoteproc: qcom: pas: Add late attach support for subsystems
config: arm64-allmodconfig (https://download.01.org/0day-ci/archive/20251226/202512260914.h2eyiELk-lkp@intel.com/config)
compiler: clang version 19.1.7 (https://github.com/llvm/llvm-project cd708029e0b2869e80abe31ddb175f7c35361f90)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251226/202512260914.h2eyiELk-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202512260914.h2eyiELk-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> Warning: drivers/remoteproc/qcom_q6v5.c:331 function parameter 'early_boot' not described in 'qcom_q6v5_init'
>> Warning: drivers/remoteproc/qcom_q6v5.c:331 function parameter 'early_boot' not described in 'qcom_q6v5_init'
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 3/5] dt-bindings: remoteproc: qcom,pas: Document pas for SoCCP on Kaanapali and Glymur platforms
2025-12-24 8:34 ` Krzysztof Kozlowski
@ 2026-02-13 1:22 ` Shawn Guo
2026-02-26 17:12 ` Krzysztof Kozlowski
0 siblings, 1 reply; 22+ messages in thread
From: Shawn Guo @ 2026-02-13 1:22 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Jingyi Wang, Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam,
aiqun.yu, tingwei.zhang, trilok.soni, yijie.yang, linux-arm-msm,
linux-remoteproc, devicetree, linux-kernel, Sibi Sankar
On Wed, Dec 24, 2025 at 09:34:30AM +0100, Krzysztof Kozlowski wrote:
> On 24/12/2025 04:16, Jingyi Wang wrote:
> >
> >
> > On 12/23/2025 9:29 PM, Krzysztof Kozlowski wrote:
> >> On Tue, Dec 23, 2025 at 01:13:49AM -0800, Jingyi Wang wrote:
> >>> diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml
> >>> index 63a82e7a8bf8..149e993282bb 100644
> >>> --- a/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml
> >>> +++ b/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml
> >>> @@ -33,16 +33,22 @@ properties:
> >>> - description: Handover interrupt
> >>> - description: Stop acknowledge interrupt
> >>> - description: Shutdown acknowledge interrupt
> >>> + - description: Pong interrupt
> >>> + - description: Wake acknowledge interrupt
> >>>
> >>> interrupt-names:
> >>> minItems: 5
> >>> + maxItems: 7
> >>> items:
> >>> - - const: wdog
> >>> - - const: fatal
> >>> - - const: ready
> >>> - - const: handover
> >>> - - const: stop-ack
> >>> - - const: shutdown-ack
> >>> + enum:
> >>
> >> No, no. Stop doing random changes. NAK
> >>
> >> Now you remove strict order (see writing bindings) and claim every
> >> device like SM8550 ADSP PAS has any order.
> >>
> >> And it is now de-synced with interrupts. Read writing bindings - this is
> >> clearly described there at line 90!
> >>
> >> You can only grow existing list.
> >>
> >>
> >>
> >
> > the interrupt for soccp is defined as
> > "wdog","fatal","ready","handover","stop-ack","pong","wake-ack"
> > while other pas could be:
> > "wdog","fatal","ready","handover","stop-ack","shutdown-ack"
> >
> > so grow existing list is not work for this,
> >
> > In the v1, got your comments to adjust pas-common.yaml for the interrupt:
> > https://lore.kernel.org/all/861b6ede-f168-44e6-85bd-10cf04dbcec7@kernel.org/
> >
> > and in v2, interrupt are moved as part to the "allOf" with if-else and
> > also got NAK:
> > https://lore.kernel.org/all/20251030-venomous-apricot-falcon-b3fd64@kuoka/
> >
> > Could you please share a example for us to understand how to maintain it in
> > pas-common.yaml, not define if-else and has strict order at the same time?
> > That will be very helpful.
I guess something like this would work?
interrupt-names:
minItems: 5
maxItems: 7
oneOf:
- items:
- const: wdog
- const: fatal
- const: ready
- const: handover
- const: stop-ack
- const: shutdown-ack
- items:
- const: wdog
- const: fatal
- const: ready
- const: handover
- const: stop-ack
- const: pong
- const: wake-ack
> >
>
> Can you read the docs first? This is not a ping pong, where you keep
> sending till it passes the review. If I provide you idea, then you will
> send something whatever based on that because you still did not read the
> rules governing bindings.
Krzysztof,
Feel free to shout at me if my suggestion is not what you have in
your mind :)
Shawn
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 3/5] dt-bindings: remoteproc: qcom,pas: Document pas for SoCCP on Kaanapali and Glymur platforms
2026-02-13 1:22 ` Shawn Guo
@ 2026-02-26 17:12 ` Krzysztof Kozlowski
2026-02-27 5:52 ` Jingyi Wang
0 siblings, 1 reply; 22+ messages in thread
From: Krzysztof Kozlowski @ 2026-02-26 17:12 UTC (permalink / raw)
To: Shawn Guo
Cc: Jingyi Wang, Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam,
aiqun.yu, tingwei.zhang, trilok.soni, yijie.yang, linux-arm-msm,
linux-remoteproc, devicetree, linux-kernel, Sibi Sankar
On 13/02/2026 02:22, Shawn Guo wrote:
> On Wed, Dec 24, 2025 at 09:34:30AM +0100, Krzysztof Kozlowski wrote:
>>> the interrupt for soccp is defined as
>>> "wdog","fatal","ready","handover","stop-ack","pong","wake-ack"
>>> while other pas could be:
>>> "wdog","fatal","ready","handover","stop-ack","shutdown-ack"
>>>
>>> so grow existing list is not work for this,
>>>
>>> In the v1, got your comments to adjust pas-common.yaml for the interrupt:
>>> https://lore.kernel.org/all/861b6ede-f168-44e6-85bd-10cf04dbcec7@kernel.org/
>>>
>>> and in v2, interrupt are moved as part to the "allOf" with if-else and
>>> also got NAK:
>>> https://lore.kernel.org/all/20251030-venomous-apricot-falcon-b3fd64@kuoka/
>>>
>>> Could you please share a example for us to understand how to maintain it in
>>> pas-common.yaml, not define if-else and has strict order at the same time?
>>> That will be very helpful.
>
> I guess something like this would work?
>
> interrupt-names:
> minItems: 5
> maxItems: 7
> oneOf:
> - items:
> - const: wdog
> - const: fatal
> - const: ready
> - const: handover
> - const: stop-ack
> - const: shutdown-ack
> - items:
> - const: wdog
> - const: fatal
> - const: ready
> - const: handover
> - const: stop-ack
> - const: pong
> - const: wake-ack
This is good for pas-common, but you also need in the same commit update
all schemas having $ref to pas-common to have explicit list. For example
milos has six elements and your change would basically allow the sixth
item to be pong.
Also several files need maxItems for interrupts, since the upper limit
is now 7.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 3/5] dt-bindings: remoteproc: qcom,pas: Document pas for SoCCP on Kaanapali and Glymur platforms
2026-02-26 17:12 ` Krzysztof Kozlowski
@ 2026-02-27 5:52 ` Jingyi Wang
2026-02-27 7:35 ` Krzysztof Kozlowski
0 siblings, 1 reply; 22+ messages in thread
From: Jingyi Wang @ 2026-02-27 5:52 UTC (permalink / raw)
To: Krzysztof Kozlowski, Shawn Guo
Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam,
aiqun.yu, tingwei.zhang, trilok.soni, yijie.yang, linux-arm-msm,
linux-remoteproc, devicetree, linux-kernel, Sibi Sankar
On 2/27/2026 1:12 AM, Krzysztof Kozlowski wrote:
> On 13/02/2026 02:22, Shawn Guo wrote:
>> On Wed, Dec 24, 2025 at 09:34:30AM +0100, Krzysztof Kozlowski wrote:
>>>> the interrupt for soccp is defined as
>>>> "wdog","fatal","ready","handover","stop-ack","pong","wake-ack"
>>>> while other pas could be:
>>>> "wdog","fatal","ready","handover","stop-ack","shutdown-ack"
>>>>
>>>> so grow existing list is not work for this,
>>>>
>>>> In the v1, got your comments to adjust pas-common.yaml for the interrupt:
>>>> https://lore.kernel.org/all/861b6ede-f168-44e6-85bd-10cf04dbcec7@kernel.org/
>>>>
>>>> and in v2, interrupt are moved as part to the "allOf" with if-else and
>>>> also got NAK:
>>>> https://lore.kernel.org/all/20251030-venomous-apricot-falcon-b3fd64@kuoka/
>>>>
>>>> Could you please share a example for us to understand how to maintain it in
>>>> pas-common.yaml, not define if-else and has strict order at the same time?
>>>> That will be very helpful.
>>
>> I guess something like this would work?
>>
>> interrupt-names:
>> minItems: 5
>> maxItems: 7
>> oneOf:
>> - items:
>> - const: wdog
>> - const: fatal
>> - const: ready
>> - const: handover
>> - const: stop-ack
>> - const: shutdown-ack
>> - items:
>> - const: wdog
>> - const: fatal
>> - const: ready
>> - const: handover
>> - const: stop-ack
>> - const: pong
>> - const: wake-ack
>
> This is good for pas-common, but you also need in the same commit update
> all schemas having $ref to pas-common to have explicit list. For example
> milos has six elements and your change would basically allow the sixth
> item to be pong.
>
> Also several files need maxItems for interrupts, since the upper limit
> is now 7.
>
>
>
> Best regards,
> Krzysztof
Hi Krzysztof,
Here are our understanding for this, Shawn propose:
Option 1, use "oneof" in pas-common
we currently have following files having $ref to pas-common:
qcom,qcs404-pas.yaml
qcom,sdx55-pas.yaml
qcom,sc8280xp-pas.yaml
qcom,sm6115-pas.yaml
qcom,sm6350-pas.yaml
qcom,sm6375-pas.yaml
qcom,adsp.yaml
qcom,milos-pas.yaml
qcom,sa8775p-pas.yaml
qcom,sc7180-pas.yaml
qcom,sm8150-pas.yaml
qcom,sm8350-pas.yaml
modifying pas-common means we need to add explicit list in each file,
(also we need to add constraint for smem-state)
To avoid affecting the existing yaml bindings, we assume below
Option2: have a new common file for soccp yaml with "pong"
interrupt along with 4 corresponding "smem-state"
the example will be like:
kaanapali-soccp.yaml ref with soccp-common.yaml. and the common yaml
will be very much pas-common.yaml content, while the interrupt and
smem state will be updated.
Could you please help to have a suggestion for Option 1 or Option 2?
Thanks,
Jingyi
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 3/5] dt-bindings: remoteproc: qcom,pas: Document pas for SoCCP on Kaanapali and Glymur platforms
2026-02-27 5:52 ` Jingyi Wang
@ 2026-02-27 7:35 ` Krzysztof Kozlowski
0 siblings, 0 replies; 22+ messages in thread
From: Krzysztof Kozlowski @ 2026-02-27 7:35 UTC (permalink / raw)
To: Jingyi Wang, Shawn Guo
Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam,
aiqun.yu, tingwei.zhang, trilok.soni, yijie.yang, linux-arm-msm,
linux-remoteproc, devicetree, linux-kernel, Sibi Sankar
On 27/02/2026 06:52, Jingyi Wang wrote:
> qcom,milos-pas.yaml
> qcom,sa8775p-pas.yaml
> qcom,sc7180-pas.yaml
> qcom,sm8150-pas.yaml
> qcom,sm8350-pas.yaml
> modifying pas-common means we need to add explicit list in each file,
> (also we need to add constraint for smem-state)
>
> To avoid affecting the existing yaml bindings, we assume below
> Option2: have a new common file for soccp yaml with "pong"
> interrupt along with 4 corresponding "smem-state"
>
> the example will be like:
> kaanapali-soccp.yaml ref with soccp-common.yaml. and the common yaml
> will be very much pas-common.yaml content, while the interrupt and
> smem state will be updated.
>
I don't understand how many files you want to have. Two new files, so
three common files?
You need one place for definition of common properties, so all
smem-states and smd/glink-edge. The interrupts don't have to be there at
all. They were placed because some devices have similar constraints and
the lists should be shared. If the list anyway cannot be shared via
common file, just move it to individual schemas. The other common bits
like clocks and power-domains also make little point in the common file
if they are not actually fixed (thus common).
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2026-02-27 7:35 UTC | newest]
Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-23 9:13 [PATCH v3 0/5] Add initial remoteproc support for Kaanapali SoC Jingyi Wang
2025-12-23 9:13 ` [PATCH v3 1/5] dt-bindings: remoteproc: qcom,sm8550-pas: Add Kaanapali ADSP Jingyi Wang
2025-12-23 13:02 ` Krzysztof Kozlowski
2025-12-23 9:13 ` [PATCH v3 2/5] dt-bindings: remoteproc: qcom,sm8550-pas: Add Kaanapali CDSP Jingyi Wang
2025-12-23 13:07 ` Krzysztof Kozlowski
2025-12-24 2:44 ` Jingyi Wang
2025-12-23 9:13 ` [PATCH v3 3/5] dt-bindings: remoteproc: qcom,pas: Document pas for SoCCP on Kaanapali and Glymur platforms Jingyi Wang
2025-12-23 13:29 ` Krzysztof Kozlowski
2025-12-24 3:16 ` Jingyi Wang
2025-12-24 8:34 ` Krzysztof Kozlowski
2026-02-13 1:22 ` Shawn Guo
2026-02-26 17:12 ` Krzysztof Kozlowski
2026-02-27 5:52 ` Jingyi Wang
2026-02-27 7:35 ` Krzysztof Kozlowski
2025-12-23 9:13 ` [PATCH v3 4/5] remoteproc: qcom: pas: Add late attach support for subsystems Jingyi Wang
2025-12-23 20:15 ` Dmitry Baryshkov
2025-12-24 3:20 ` Jingyi Wang
2025-12-23 22:15 ` Stephan Gerhold
2025-12-24 4:43 ` Jingyi Wang
2025-12-26 2:10 ` kernel test robot
2025-12-23 9:13 ` [PATCH v3 5/5] remoteproc: qcom_q6v5_pas: Add SoCCP node on Kaanapali Jingyi Wang
2025-12-23 20:15 ` Dmitry Baryshkov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox