Re: [PATCH v3 1/2] soc: qcom: smp2p: Add irqchip state support
From: Deepak Kumar Singh
Date: Wed Feb 04 2026 - 02:22:30 EST
On 1/30/2026 6:16 AM, Chris Lew wrote:
On Thu, Jan 29, 2026 at 04:26:38PM +0530, Deepak Kumar Singh wrote:
On 1/27/2026 6:25 PM, Konrad Dybcio wrote:My understanding was that we do this copy because we don't want to do a
On 1/27/26 11:38 AM, Deepak Kumar Singh wrote:I don't see a compelling reason. This code snippet is same as present in
From: Chris Lew <chris.lew@xxxxxxxxxxxxxxxx>Is there a reason for this copy at all?
A remoteproc booted during earlier boot stages such as UEFI or the
bootloader, may need to be attached to without restarting the remoteproc
hardware. To do this the remoteproc will need to check the ready and
handover states in smp2p without an interrupt notification. Create
qcom_smp2p_start_in() to initialize the shadow state without notifying
clients because these early events happened in the past.
Add support for the .irq_get_irqchip_state callback so remoteproc can
read the current state of the fatal, ready and handover bits.
Signed-off-by: Chris Lew <chris.lew@xxxxxxxxxxxxxxxx>
Signed-off-by: Deepak Kumar Singh <deepak.singh@xxxxxxxxxxxxxxxx>
---
drivers/soc/qcom/smp2p.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 55 insertions(+)
diff --git a/drivers/soc/qcom/smp2p.c b/drivers/soc/qcom/smp2p.c
index cb515c2340c1..c27ffb44b825 100644
--- a/drivers/soc/qcom/smp2p.c
+++ b/drivers/soc/qcom/smp2p.c
@@ -222,6 +222,39 @@ static void qcom_smp2p_negotiate(struct qcom_smp2p *smp2p)
}
}
+static void qcom_smp2p_start_in(struct qcom_smp2p *smp2p)
+{
+ unsigned int smem_id = smp2p->smem_items[SMP2P_INBOUND];
+ unsigned int pid = smp2p->remote_pid;
+ char buf[SMP2P_MAX_ENTRY_NAME];
+ struct smp2p_smem_item *in;
+ struct smp2p_entry *entry;
+ size_t size;
+ int i;
+
+ in = qcom_smem_get(pid, smem_id, &size);
+ if (IS_ERR(in))
+ return;
+
+ smp2p->in = in;
+
+ /* Check if version is initialized by the remote. */
+ if (in->version == 0)
+ return;
+
+ for (i = smp2p->valid_entries; i < in->valid_entries; i++) {
+ list_for_each_entry(entry, &smp2p->inbound, node) {
+ memcpy(buf, in->entries[i].name, sizeof(buf));
qcom_smp2p_notify_in().
strcmp on memory that the remote could change at any time. Maybe it's
overkill but I thought it was considered good practice and as Deepak
mentioned, it is similarly present in qcom_smp2p_notify_in().
[...]This i can update in case new patch set is required.
+ /* Check inbound entries in the case of early boot processor */"in case a remote processor has already been started"?
Konrad
Are you expecting new patch for this update or current one is ok?
Deepak