On 1/27/2026 6:25 PM, Konrad Dybcio wrote:
On 1/27/26 11:38 AM, Deepak Kumar Singh wrote:
From: Chris Lew <[email protected]>
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 <[email protected]>
Signed-off-by: Deepak Kumar Singh <[email protected]>
---
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));
Is there a reason for this copy at all?
I don't see a compelling reason. This code snippet is same as present in
qcom_smp2p_notify_in().
[...]
+ /* Check inbound entries in the case of early boot processor */
"in case a remote processor has already been started"?
This i can update in case new patch set is required.
Konrad