* [PATCH v4 2/2] firmware: arm_scmi: Implement arm,no-completion-irq property
2026-01-17 1:02 [PATCH v4 1/2] dt-bindings: firmware: arm,scmi: Document arm,no-completion-irq property Marek Vasut
@ 2026-01-17 1:02 ` Marek Vasut
2026-01-19 16:57 ` Cristian Marussi
2026-01-19 16:53 ` [PATCH v4 1/2] dt-bindings: firmware: arm,scmi: Document " Cristian Marussi
2026-03-09 9:10 ` Sudeep Holla
2 siblings, 1 reply; 14+ messages in thread
From: Marek Vasut @ 2026-01-17 1:02 UTC (permalink / raw)
To: arm-scmi
Cc: Marek Vasut, Conor Dooley, Cristian Marussi, Florian Fainelli,
Krzysztof Kozlowski, Rob Herring, Sudeep Holla, devicetree,
linux-arm-kernel, linux-renesas-soc
Implement new property arm,no-completion-irq, which sets all SCMI
operation into poll mode. This is meant to work around uncooperative
SCP implementations, which do not generate completion interrupts.
This applies to mbox/shmem based implementations.
With this property set, such implementations which do not generate
interrupts can be interacted with, until they are fixed to generate
interrupts properly.
Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
---
Cc: Conor Dooley <conor+dt@kernel.org>
Cc: Cristian Marussi <cristian.marussi@arm.com>
Cc: Florian Fainelli <florian.fainelli@broadcom.com>
Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
Cc: Rob Herring <robh@kernel.org>
Cc: Sudeep Holla <sudeep.holla@arm.com>
Cc: arm-scmi@vger.kernel.org
Cc: devicetree@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-renesas-soc@vger.kernel.org
---
V2: Drop no IRQ handling from SMC transport and update commit message
V3: Rename property from arm,poll-transport to arm,no-completion-irq
V4: No change
---
drivers/firmware/arm_scmi/common.h | 4 ++++
drivers/firmware/arm_scmi/driver.c | 4 ++++
2 files changed, 8 insertions(+)
diff --git a/drivers/firmware/arm_scmi/common.h b/drivers/firmware/arm_scmi/common.h
index 7c35c95fddbaf..7c9617d080a02 100644
--- a/drivers/firmware/arm_scmi/common.h
+++ b/drivers/firmware/arm_scmi/common.h
@@ -235,6 +235,9 @@ struct scmi_transport_ops {
* to have an execution latency lesser-equal to the threshold
* should be considered for atomic mode operation: such
* decision is finally left up to the SCMI drivers.
+ * @no_completion_irq: Flag to indicate that this transport has no completion
+ * interrupt and has to be polled. This is similar to the
+ * force_polling below, except this is set via DT property.
* @force_polling: Flag to force this whole transport to use SCMI core polling
* mechanism instead of completion interrupts even if available.
* @sync_cmds_completed_on_ret: Flag to indicate that the transport assures
@@ -254,6 +257,7 @@ struct scmi_desc {
int max_msg;
int max_msg_size;
unsigned int atomic_threshold;
+ bool no_completion_irq;
const bool force_polling;
const bool sync_cmds_completed_on_ret;
const bool atomic_enabled;
diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c
index 3e76a3204ba4f..f167194f7cf67 100644
--- a/drivers/firmware/arm_scmi/driver.c
+++ b/drivers/firmware/arm_scmi/driver.c
@@ -2735,6 +2735,7 @@ static int scmi_chan_setup(struct scmi_info *info, struct device_node *of_node,
cinfo->is_p2a = !tx;
cinfo->rx_timeout_ms = info->desc->max_rx_timeout_ms;
cinfo->max_msg_size = info->desc->max_msg_size;
+ cinfo->no_completion_irq = info->desc->no_completion_irq;
/* Create a unique name for this transport device */
snprintf(name, 32, "__scmi_transport_device_%s_%02X",
@@ -3150,6 +3151,9 @@ static const struct scmi_desc *scmi_transport_setup(struct device *dev)
if (ret && ret != -EINVAL)
dev_err(dev, "Malformed arm,max-msg DT property.\n");
+ trans->desc.no_completion_irq = of_property_read_bool(dev->of_node,
+ "arm,no-completion-irq");
+
dev_info(dev,
"SCMI max-rx-timeout: %dms / max-msg-size: %dbytes / max-msg: %d\n",
trans->desc.max_rx_timeout_ms, trans->desc.max_msg_size,
--
2.51.0
^ permalink raw reply related [flat|nested] 14+ messages in thread* Re: [PATCH v4 2/2] firmware: arm_scmi: Implement arm,no-completion-irq property
2026-01-17 1:02 ` [PATCH v4 2/2] firmware: arm_scmi: Implement " Marek Vasut
@ 2026-01-19 16:57 ` Cristian Marussi
2026-02-09 10:53 ` Marek Vasut
0 siblings, 1 reply; 14+ messages in thread
From: Cristian Marussi @ 2026-01-19 16:57 UTC (permalink / raw)
To: Marek Vasut
Cc: arm-scmi, Conor Dooley, Cristian Marussi, Florian Fainelli,
Krzysztof Kozlowski, Rob Herring, Sudeep Holla, devicetree,
linux-arm-kernel, linux-renesas-soc
On Sat, Jan 17, 2026 at 02:02:29AM +0100, Marek Vasut wrote:
> Implement new property arm,no-completion-irq, which sets all SCMI
> operation into poll mode. This is meant to work around uncooperative
> SCP implementations, which do not generate completion interrupts.
> This applies to mbox/shmem based implementations.
>
> With this property set, such implementations which do not generate
> interrupts can be interacted with, until they are fixed to generate
> interrupts properly.
>
> Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
> ---
> Cc: Conor Dooley <conor+dt@kernel.org>
> Cc: Cristian Marussi <cristian.marussi@arm.com>
> Cc: Florian Fainelli <florian.fainelli@broadcom.com>
> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Sudeep Holla <sudeep.holla@arm.com>
> Cc: arm-scmi@vger.kernel.org
> Cc: devicetree@vger.kernel.org
> Cc: linux-arm-kernel@lists.infradead.org
> Cc: linux-renesas-soc@vger.kernel.org
> ---
> V2: Drop no IRQ handling from SMC transport and update commit message
> V3: Rename property from arm,poll-transport to arm,no-completion-irq
> V4: No change
> ---
> drivers/firmware/arm_scmi/common.h | 4 ++++
> drivers/firmware/arm_scmi/driver.c | 4 ++++
> 2 files changed, 8 insertions(+)
>
> diff --git a/drivers/firmware/arm_scmi/common.h b/drivers/firmware/arm_scmi/common.h
> index 7c35c95fddbaf..7c9617d080a02 100644
> --- a/drivers/firmware/arm_scmi/common.h
> +++ b/drivers/firmware/arm_scmi/common.h
> @@ -235,6 +235,9 @@ struct scmi_transport_ops {
> * to have an execution latency lesser-equal to the threshold
> * should be considered for atomic mode operation: such
> * decision is finally left up to the SCMI drivers.
> + * @no_completion_irq: Flag to indicate that this transport has no completion
> + * interrupt and has to be polled. This is similar to the
> + * force_polling below, except this is set via DT property.
> * @force_polling: Flag to force this whole transport to use SCMI core polling
> * mechanism instead of completion interrupts even if available.
> * @sync_cmds_completed_on_ret: Flag to indicate that the transport assures
> @@ -254,6 +257,7 @@ struct scmi_desc {
> int max_msg;
> int max_msg_size;
> unsigned int atomic_threshold;
> + bool no_completion_irq;
> const bool force_polling;
> const bool sync_cmds_completed_on_ret;
> const bool atomic_enabled;
> diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c
> index 3e76a3204ba4f..f167194f7cf67 100644
> --- a/drivers/firmware/arm_scmi/driver.c
> +++ b/drivers/firmware/arm_scmi/driver.c
> @@ -2735,6 +2735,7 @@ static int scmi_chan_setup(struct scmi_info *info, struct device_node *of_node,
> cinfo->is_p2a = !tx;
> cinfo->rx_timeout_ms = info->desc->max_rx_timeout_ms;
> cinfo->max_msg_size = info->desc->max_msg_size;
> + cinfo->no_completion_irq = info->desc->no_completion_irq;
>
> /* Create a unique name for this transport device */
> snprintf(name, 32, "__scmi_transport_device_%s_%02X",
> @@ -3150,6 +3151,9 @@ static const struct scmi_desc *scmi_transport_setup(struct device *dev)
> if (ret && ret != -EINVAL)
> dev_err(dev, "Malformed arm,max-msg DT property.\n");
>
> + trans->desc.no_completion_irq = of_property_read_bool(dev->of_node,
> + "arm,no-completion-irq");
> +
> dev_info(dev,
> "SCMI max-rx-timeout: %dms / max-msg-size: %dbytes / max-msg: %d\n",
> trans->desc.max_rx_timeout_ms, trans->desc.max_msg_size,
LGTM.
Reviewed-by: Cristian Marussi <cristian.marussi@arm.com>
Thanks,
Cristian
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: [PATCH v4 2/2] firmware: arm_scmi: Implement arm,no-completion-irq property
2026-01-19 16:57 ` Cristian Marussi
@ 2026-02-09 10:53 ` Marek Vasut
2026-02-09 10:56 ` Wolfram Sang
2026-02-09 15:44 ` Sudeep Holla
0 siblings, 2 replies; 14+ messages in thread
From: Marek Vasut @ 2026-02-09 10:53 UTC (permalink / raw)
To: Cristian Marussi, Sudeep Holla
Cc: arm-scmi, Conor Dooley, Florian Fainelli, Krzysztof Kozlowski,
Rob Herring, devicetree, linux-arm-kernel, linux-renesas-soc,
Wolfram Sang
On 1/19/26 5:57 PM, Cristian Marussi wrote:
> On Sat, Jan 17, 2026 at 02:02:29AM +0100, Marek Vasut wrote:
>> Implement new property arm,no-completion-irq, which sets all SCMI
>> operation into poll mode. This is meant to work around uncooperative
>> SCP implementations, which do not generate completion interrupts.
>> This applies to mbox/shmem based implementations.
>>
>> With this property set, such implementations which do not generate
>> interrupts can be interacted with, until they are fixed to generate
>> interrupts properly.
>>
>> Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
>> ---
>> Cc: Conor Dooley <conor+dt@kernel.org>
>> Cc: Cristian Marussi <cristian.marussi@arm.com>
>> Cc: Florian Fainelli <florian.fainelli@broadcom.com>
>> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
>> Cc: Rob Herring <robh@kernel.org>
>> Cc: Sudeep Holla <sudeep.holla@arm.com>
>> Cc: arm-scmi@vger.kernel.org
>> Cc: devicetree@vger.kernel.org
>> Cc: linux-arm-kernel@lists.infradead.org
>> Cc: linux-renesas-soc@vger.kernel.org
>> ---
>> V2: Drop no IRQ handling from SMC transport and update commit message
>> V3: Rename property from arm,poll-transport to arm,no-completion-irq
>> V4: No change
>> ---
>> drivers/firmware/arm_scmi/common.h | 4 ++++
>> drivers/firmware/arm_scmi/driver.c | 4 ++++
>> 2 files changed, 8 insertions(+)
>>
>> diff --git a/drivers/firmware/arm_scmi/common.h b/drivers/firmware/arm_scmi/common.h
>> index 7c35c95fddbaf..7c9617d080a02 100644
>> --- a/drivers/firmware/arm_scmi/common.h
>> +++ b/drivers/firmware/arm_scmi/common.h
>> @@ -235,6 +235,9 @@ struct scmi_transport_ops {
>> * to have an execution latency lesser-equal to the threshold
>> * should be considered for atomic mode operation: such
>> * decision is finally left up to the SCMI drivers.
>> + * @no_completion_irq: Flag to indicate that this transport has no completion
>> + * interrupt and has to be polled. This is similar to the
>> + * force_polling below, except this is set via DT property.
>> * @force_polling: Flag to force this whole transport to use SCMI core polling
>> * mechanism instead of completion interrupts even if available.
>> * @sync_cmds_completed_on_ret: Flag to indicate that the transport assures
>> @@ -254,6 +257,7 @@ struct scmi_desc {
>> int max_msg;
>> int max_msg_size;
>> unsigned int atomic_threshold;
>> + bool no_completion_irq;
>> const bool force_polling;
>> const bool sync_cmds_completed_on_ret;
>> const bool atomic_enabled;
>> diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c
>> index 3e76a3204ba4f..f167194f7cf67 100644
>> --- a/drivers/firmware/arm_scmi/driver.c
>> +++ b/drivers/firmware/arm_scmi/driver.c
>> @@ -2735,6 +2735,7 @@ static int scmi_chan_setup(struct scmi_info *info, struct device_node *of_node,
>> cinfo->is_p2a = !tx;
>> cinfo->rx_timeout_ms = info->desc->max_rx_timeout_ms;
>> cinfo->max_msg_size = info->desc->max_msg_size;
>> + cinfo->no_completion_irq = info->desc->no_completion_irq;
>>
>> /* Create a unique name for this transport device */
>> snprintf(name, 32, "__scmi_transport_device_%s_%02X",
>> @@ -3150,6 +3151,9 @@ static const struct scmi_desc *scmi_transport_setup(struct device *dev)
>> if (ret && ret != -EINVAL)
>> dev_err(dev, "Malformed arm,max-msg DT property.\n");
>>
>> + trans->desc.no_completion_irq = of_property_read_bool(dev->of_node,
>> + "arm,no-completion-irq");
>> +
>> dev_info(dev,
>> "SCMI max-rx-timeout: %dms / max-msg-size: %dbytes / max-msg: %d\n",
>> trans->desc.max_rx_timeout_ms, trans->desc.max_msg_size,
>
> LGTM.
>
> Reviewed-by: Cristian Marussi <cristian.marussi@arm.com>
Is there anything left to do with these patches, or can this now be
picked up ?
Thank you.
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: [PATCH v4 2/2] firmware: arm_scmi: Implement arm,no-completion-irq property
2026-02-09 10:53 ` Marek Vasut
@ 2026-02-09 10:56 ` Wolfram Sang
2026-02-09 13:00 ` Cristian Marussi
2026-02-09 15:44 ` Sudeep Holla
1 sibling, 1 reply; 14+ messages in thread
From: Wolfram Sang @ 2026-02-09 10:56 UTC (permalink / raw)
To: Marek Vasut
Cc: Cristian Marussi, Sudeep Holla, arm-scmi, Conor Dooley,
Florian Fainelli, Krzysztof Kozlowski, Rob Herring, devicetree,
linux-arm-kernel, linux-renesas-soc
Hi all,
> > > Implement new property arm,no-completion-irq, which sets all SCMI
> > > operation into poll mode. This is meant to work around uncooperative
> > > SCP implementations, which do not generate completion interrupts.
> > > This applies to mbox/shmem based implementations.
> > >
> > > With this property set, such implementations which do not generate
> > > interrupts can be interacted with, until they are fixed to generate
> > > interrupts properly.
> > >
> > > Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
> > > ---
...
> >
> > LGTM.
> >
> > Reviewed-by: Cristian Marussi <cristian.marussi@arm.com>
>
> Is there anything left to do with these patches, or can this now be picked
> up ?
Would love to see this going in. I also work with the firmware which
needs this functionality.
All the best,
Wolfram
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 2/2] firmware: arm_scmi: Implement arm,no-completion-irq property
2026-02-09 10:56 ` Wolfram Sang
@ 2026-02-09 13:00 ` Cristian Marussi
0 siblings, 0 replies; 14+ messages in thread
From: Cristian Marussi @ 2026-02-09 13:00 UTC (permalink / raw)
To: Wolfram Sang
Cc: Marek Vasut, Cristian Marussi, Sudeep Holla, arm-scmi,
Conor Dooley, Florian Fainelli, Krzysztof Kozlowski, Rob Herring,
devicetree, linux-arm-kernel, linux-renesas-soc
On Mon, Feb 09, 2026 at 11:56:25AM +0100, Wolfram Sang wrote:
> Hi all,
>
> > > > Implement new property arm,no-completion-irq, which sets all SCMI
> > > > operation into poll mode. This is meant to work around uncooperative
> > > > SCP implementations, which do not generate completion interrupts.
> > > > This applies to mbox/shmem based implementations.
> > > >
> > > > With this property set, such implementations which do not generate
> > > > interrupts can be interacted with, until they are fixed to generate
> > > > interrupts properly.
> > > >
> > > > Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
> > > > ---
>
> ...
>
> > >
> > > LGTM.
> > >
> > > Reviewed-by: Cristian Marussi <cristian.marussi@arm.com>
> >
> > Is there anything left to do with these patches, or can this now be picked
> > up ?
>
> Would love to see this going in. I also work with the firmware which
> needs this functionality.
I have not seen anymore push back around this, but I think it was late
anyway to be picked up as an update for this cycle given that it was
already -rc6 when the last series landed...so I guess it could picked up
now for the next cycle ...but I have not checked with Sudeep..
Thanks,
Cristian
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 2/2] firmware: arm_scmi: Implement arm,no-completion-irq property
2026-02-09 10:53 ` Marek Vasut
2026-02-09 10:56 ` Wolfram Sang
@ 2026-02-09 15:44 ` Sudeep Holla
2026-02-09 16:19 ` Marek Vasut
2026-02-10 11:11 ` Wolfram Sang
1 sibling, 2 replies; 14+ messages in thread
From: Sudeep Holla @ 2026-02-09 15:44 UTC (permalink / raw)
To: Marek Vasut
Cc: Cristian Marussi, arm-scmi, Sudeep Holla, Conor Dooley,
Florian Fainelli, Krzysztof Kozlowski, Rob Herring, devicetree,
linux-arm-kernel, linux-renesas-soc, Wolfram Sang
On Mon, Feb 09, 2026 at 11:53:19AM +0100, Marek Vasut wrote:
> On 1/19/26 5:57 PM, Cristian Marussi wrote:
> > On Sat, Jan 17, 2026 at 02:02:29AM +0100, Marek Vasut wrote:
> > > Implement new property arm,no-completion-irq, which sets all SCMI
> > > operation into poll mode. This is meant to work around uncooperative
> > > SCP implementations, which do not generate completion interrupts.
> > > This applies to mbox/shmem based implementations.
> > >
> > > With this property set, such implementations which do not generate
> > > interrupts can be interacted with, until they are fixed to generate
> > > interrupts properly.
> > >
> > > Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
> > > ---
> > > Cc: Conor Dooley <conor+dt@kernel.org>
> > > Cc: Cristian Marussi <cristian.marussi@arm.com>
> > > Cc: Florian Fainelli <florian.fainelli@broadcom.com>
> > > Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
> > > Cc: Rob Herring <robh@kernel.org>
> > > Cc: Sudeep Holla <sudeep.holla@arm.com>
> > > Cc: arm-scmi@vger.kernel.org
> > > Cc: devicetree@vger.kernel.org
> > > Cc: linux-arm-kernel@lists.infradead.org
> > > Cc: linux-renesas-soc@vger.kernel.org
> > > ---
> > > V2: Drop no IRQ handling from SMC transport and update commit message
> > > V3: Rename property from arm,poll-transport to arm,no-completion-irq
> > > V4: No change
> > > ---
> > > drivers/firmware/arm_scmi/common.h | 4 ++++
> > > drivers/firmware/arm_scmi/driver.c | 4 ++++
> > > 2 files changed, 8 insertions(+)
> > >
> > > diff --git a/drivers/firmware/arm_scmi/common.h b/drivers/firmware/arm_scmi/common.h
> > > index 7c35c95fddbaf..7c9617d080a02 100644
> > > --- a/drivers/firmware/arm_scmi/common.h
> > > +++ b/drivers/firmware/arm_scmi/common.h
> > > @@ -235,6 +235,9 @@ struct scmi_transport_ops {
> > > * to have an execution latency lesser-equal to the threshold
> > > * should be considered for atomic mode operation: such
> > > * decision is finally left up to the SCMI drivers.
> > > + * @no_completion_irq: Flag to indicate that this transport has no completion
> > > + * interrupt and has to be polled. This is similar to the
> > > + * force_polling below, except this is set via DT property.
> > > * @force_polling: Flag to force this whole transport to use SCMI core polling
> > > * mechanism instead of completion interrupts even if available.
> > > * @sync_cmds_completed_on_ret: Flag to indicate that the transport assures
> > > @@ -254,6 +257,7 @@ struct scmi_desc {
> > > int max_msg;
> > > int max_msg_size;
> > > unsigned int atomic_threshold;
> > > + bool no_completion_irq;
> > > const bool force_polling;
> > > const bool sync_cmds_completed_on_ret;
> > > const bool atomic_enabled;
> > > diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c
> > > index 3e76a3204ba4f..f167194f7cf67 100644
> > > --- a/drivers/firmware/arm_scmi/driver.c
> > > +++ b/drivers/firmware/arm_scmi/driver.c
> > > @@ -2735,6 +2735,7 @@ static int scmi_chan_setup(struct scmi_info *info, struct device_node *of_node,
> > > cinfo->is_p2a = !tx;
> > > cinfo->rx_timeout_ms = info->desc->max_rx_timeout_ms;
> > > cinfo->max_msg_size = info->desc->max_msg_size;
> > > + cinfo->no_completion_irq = info->desc->no_completion_irq;
> > > /* Create a unique name for this transport device */
> > > snprintf(name, 32, "__scmi_transport_device_%s_%02X",
> > > @@ -3150,6 +3151,9 @@ static const struct scmi_desc *scmi_transport_setup(struct device *dev)
> > > if (ret && ret != -EINVAL)
> > > dev_err(dev, "Malformed arm,max-msg DT property.\n");
> > > + trans->desc.no_completion_irq = of_property_read_bool(dev->of_node,
> > > + "arm,no-completion-irq");
> > > +
> > > dev_info(dev,
> > > "SCMI max-rx-timeout: %dms / max-msg-size: %dbytes / max-msg: %d\n",
> > > trans->desc.max_rx_timeout_ms, trans->desc.max_msg_size,
> >
> > LGTM.
> >
> > Reviewed-by: Cristian Marussi <cristian.marussi@arm.com>
>
> Is there anything left to do with these patches, or can this now be picked
> up ?
>
As I had mentioned here[1], I am happy with it and I will pick it up for
v7.1 once I start collecting the patches after v7.0-rc1. It just came in after
I had sent my PR to SoC team for v7.0
--
Regards,
Sudeep
[1] https://lore.kernel.org/all/aW5jwtoYCFs-Pzpk@bogus/
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: [PATCH v4 2/2] firmware: arm_scmi: Implement arm,no-completion-irq property
2026-02-09 15:44 ` Sudeep Holla
@ 2026-02-09 16:19 ` Marek Vasut
2026-02-10 11:11 ` Wolfram Sang
1 sibling, 0 replies; 14+ messages in thread
From: Marek Vasut @ 2026-02-09 16:19 UTC (permalink / raw)
To: Sudeep Holla
Cc: Cristian Marussi, arm-scmi, Conor Dooley, Florian Fainelli,
Krzysztof Kozlowski, Rob Herring, devicetree, linux-arm-kernel,
linux-renesas-soc, Wolfram Sang
On 2/9/26 4:44 PM, Sudeep Holla wrote:
> On Mon, Feb 09, 2026 at 11:53:19AM +0100, Marek Vasut wrote:
>> On 1/19/26 5:57 PM, Cristian Marussi wrote:
>>> On Sat, Jan 17, 2026 at 02:02:29AM +0100, Marek Vasut wrote:
>>>> Implement new property arm,no-completion-irq, which sets all SCMI
>>>> operation into poll mode. This is meant to work around uncooperative
>>>> SCP implementations, which do not generate completion interrupts.
>>>> This applies to mbox/shmem based implementations.
>>>>
>>>> With this property set, such implementations which do not generate
>>>> interrupts can be interacted with, until they are fixed to generate
>>>> interrupts properly.
>>>>
>>>> Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
>>>> ---
>>>> Cc: Conor Dooley <conor+dt@kernel.org>
>>>> Cc: Cristian Marussi <cristian.marussi@arm.com>
>>>> Cc: Florian Fainelli <florian.fainelli@broadcom.com>
>>>> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
>>>> Cc: Rob Herring <robh@kernel.org>
>>>> Cc: Sudeep Holla <sudeep.holla@arm.com>
>>>> Cc: arm-scmi@vger.kernel.org
>>>> Cc: devicetree@vger.kernel.org
>>>> Cc: linux-arm-kernel@lists.infradead.org
>>>> Cc: linux-renesas-soc@vger.kernel.org
>>>> ---
>>>> V2: Drop no IRQ handling from SMC transport and update commit message
>>>> V3: Rename property from arm,poll-transport to arm,no-completion-irq
>>>> V4: No change
>>>> ---
>>>> drivers/firmware/arm_scmi/common.h | 4 ++++
>>>> drivers/firmware/arm_scmi/driver.c | 4 ++++
>>>> 2 files changed, 8 insertions(+)
>>>>
>>>> diff --git a/drivers/firmware/arm_scmi/common.h b/drivers/firmware/arm_scmi/common.h
>>>> index 7c35c95fddbaf..7c9617d080a02 100644
>>>> --- a/drivers/firmware/arm_scmi/common.h
>>>> +++ b/drivers/firmware/arm_scmi/common.h
>>>> @@ -235,6 +235,9 @@ struct scmi_transport_ops {
>>>> * to have an execution latency lesser-equal to the threshold
>>>> * should be considered for atomic mode operation: such
>>>> * decision is finally left up to the SCMI drivers.
>>>> + * @no_completion_irq: Flag to indicate that this transport has no completion
>>>> + * interrupt and has to be polled. This is similar to the
>>>> + * force_polling below, except this is set via DT property.
>>>> * @force_polling: Flag to force this whole transport to use SCMI core polling
>>>> * mechanism instead of completion interrupts even if available.
>>>> * @sync_cmds_completed_on_ret: Flag to indicate that the transport assures
>>>> @@ -254,6 +257,7 @@ struct scmi_desc {
>>>> int max_msg;
>>>> int max_msg_size;
>>>> unsigned int atomic_threshold;
>>>> + bool no_completion_irq;
>>>> const bool force_polling;
>>>> const bool sync_cmds_completed_on_ret;
>>>> const bool atomic_enabled;
>>>> diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c
>>>> index 3e76a3204ba4f..f167194f7cf67 100644
>>>> --- a/drivers/firmware/arm_scmi/driver.c
>>>> +++ b/drivers/firmware/arm_scmi/driver.c
>>>> @@ -2735,6 +2735,7 @@ static int scmi_chan_setup(struct scmi_info *info, struct device_node *of_node,
>>>> cinfo->is_p2a = !tx;
>>>> cinfo->rx_timeout_ms = info->desc->max_rx_timeout_ms;
>>>> cinfo->max_msg_size = info->desc->max_msg_size;
>>>> + cinfo->no_completion_irq = info->desc->no_completion_irq;
>>>> /* Create a unique name for this transport device */
>>>> snprintf(name, 32, "__scmi_transport_device_%s_%02X",
>>>> @@ -3150,6 +3151,9 @@ static const struct scmi_desc *scmi_transport_setup(struct device *dev)
>>>> if (ret && ret != -EINVAL)
>>>> dev_err(dev, "Malformed arm,max-msg DT property.\n");
>>>> + trans->desc.no_completion_irq = of_property_read_bool(dev->of_node,
>>>> + "arm,no-completion-irq");
>>>> +
>>>> dev_info(dev,
>>>> "SCMI max-rx-timeout: %dms / max-msg-size: %dbytes / max-msg: %d\n",
>>>> trans->desc.max_rx_timeout_ms, trans->desc.max_msg_size,
>>>
>>> LGTM.
>>>
>>> Reviewed-by: Cristian Marussi <cristian.marussi@arm.com>
>>
>> Is there anything left to do with these patches, or can this now be picked
>> up ?
>>
>
> As I had mentioned here[1], I am happy with it and I will pick it up for
> v7.1 once I start collecting the patches after v7.0-rc1. It just came in after
> I had sent my PR to SoC team for v7.0
OK, thank you
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: [PATCH v4 2/2] firmware: arm_scmi: Implement arm,no-completion-irq property
2026-02-09 15:44 ` Sudeep Holla
2026-02-09 16:19 ` Marek Vasut
@ 2026-02-10 11:11 ` Wolfram Sang
1 sibling, 0 replies; 14+ messages in thread
From: Wolfram Sang @ 2026-02-10 11:11 UTC (permalink / raw)
To: Sudeep Holla
Cc: Marek Vasut, Cristian Marussi, arm-scmi, Conor Dooley,
Florian Fainelli, Krzysztof Kozlowski, Rob Herring, devicetree,
linux-arm-kernel, linux-renesas-soc
> As I had mentioned here[1], I am happy with it and I will pick it up for
> v7.1 once I start collecting the patches after v7.0-rc1. It just came in after
> I had sent my PR to SoC team for v7.0
Great, 7.1 is good, thank you!
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 1/2] dt-bindings: firmware: arm,scmi: Document arm,no-completion-irq property
2026-01-17 1:02 [PATCH v4 1/2] dt-bindings: firmware: arm,scmi: Document arm,no-completion-irq property Marek Vasut
2026-01-17 1:02 ` [PATCH v4 2/2] firmware: arm_scmi: Implement " Marek Vasut
@ 2026-01-19 16:53 ` Cristian Marussi
2026-01-19 17:02 ` Sudeep Holla
2026-01-19 19:00 ` Marek Vasut
2026-03-09 9:10 ` Sudeep Holla
2 siblings, 2 replies; 14+ messages in thread
From: Cristian Marussi @ 2026-01-19 16:53 UTC (permalink / raw)
To: Marek Vasut
Cc: arm-scmi, Rob Herring (Arm), Conor Dooley, Cristian Marussi,
Florian Fainelli, Krzysztof Kozlowski, Sudeep Holla, devicetree,
linux-arm-kernel, linux-renesas-soc
On Sat, Jan 17, 2026 at 02:02:28AM +0100, Marek Vasut wrote:
> Document new property arm,no-completion-irq . This optional property
> is intended for hardware that does not generate completion interrupts
> and can be used to unconditionally enable forced polling mode of
> operation.
>
> With this property set, such implementations which do not generate
> interrupts can be interacted with, until they are fixed to generate
> interrupts properly.
>
> Note that, because the original base protocol exchange also requires
> some sort of completion mechanism, it is not possible to query SCMI
> itself for this property and it must be described in DT. While this
> does look a bit like policy, the SCMI provider is part of the
> hardware, hence DT.
>
> Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
> Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
> ---
> Cc: Conor Dooley <conor+dt@kernel.org>
> Cc: Cristian Marussi <cristian.marussi@arm.com>
> Cc: Florian Fainelli <florian.fainelli@broadcom.com>
> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Sudeep Holla <sudeep.holla@arm.com>
> Cc: arm-scmi@vger.kernel.org
> Cc: devicetree@vger.kernel.org
> Cc: linux-arm-kernel@lists.infradead.org
> Cc: linux-renesas-soc@vger.kernel.org
> ---
> V2: s@mean@&t and limit poll transport to mailbox/shmem only
> V3: - Reformat the commit message, expand property description to
> explicitly spell out this is hardware description.
> - Rename property from arm,poll-transport to arm,no-completion-irq
> V4: - Update first paragraph of commit message and property description
> - Add RB from Rob
> ---
> .../devicetree/bindings/firmware/arm,scmi.yaml | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/firmware/arm,scmi.yaml b/Documentation/devicetree/bindings/firmware/arm,scmi.yaml
> index be817fd9cc34b..d06cca9273c48 100644
> --- a/Documentation/devicetree/bindings/firmware/arm,scmi.yaml
> +++ b/Documentation/devicetree/bindings/firmware/arm,scmi.yaml
> @@ -146,6 +146,13 @@ properties:
> this platform. If set, the value should be non-zero.
> minimum: 1
>
> + arm,no-completion-irq:
> + type: boolean
> + description:
Shouldn't these two points have to be swapped as per Sudeep and Rob
suggestions ?
description:
....
type: boolean
> + This optional property is intended for hardware that does not generate
> + completion interrupts and can be used to unconditionally enable forced
> + polling mode of operation.
> +
> arm,smc-id:
> $ref: /schemas/types.yaml#/definitions/uint32
> description:
> @@ -379,6 +386,9 @@ then:
> - shmem
>
> else:
> + properties:
> + arm,no-completion-irq: false
> +
> if:
> properties:
With the above corrected, LGTM.
Reviewed-by: Cristian Marussi <cristian.marussi@arm.com>
Thanks,
Cristian
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: [PATCH v4 1/2] dt-bindings: firmware: arm,scmi: Document arm,no-completion-irq property
2026-01-19 16:53 ` [PATCH v4 1/2] dt-bindings: firmware: arm,scmi: Document " Cristian Marussi
@ 2026-01-19 17:02 ` Sudeep Holla
2026-01-21 2:05 ` Rob Herring
2026-01-19 19:00 ` Marek Vasut
1 sibling, 1 reply; 14+ messages in thread
From: Sudeep Holla @ 2026-01-19 17:02 UTC (permalink / raw)
To: Cristian Marussi
Cc: Marek Vasut, arm-scmi, Sudeep Holla, Rob Herring (Arm),
Conor Dooley, Florian Fainelli, Krzysztof Kozlowski, devicetree,
linux-arm-kernel, linux-renesas-soc
On Mon, Jan 19, 2026 at 04:53:45PM +0000, Cristian Marussi wrote:
> On Sat, Jan 17, 2026 at 02:02:28AM +0100, Marek Vasut wrote:
> > Document new property arm,no-completion-irq . This optional property
> > is intended for hardware that does not generate completion interrupts
> > and can be used to unconditionally enable forced polling mode of
> > operation.
> >
> > With this property set, such implementations which do not generate
> > interrupts can be interacted with, until they are fixed to generate
> > interrupts properly.
> >
> > Note that, because the original base protocol exchange also requires
> > some sort of completion mechanism, it is not possible to query SCMI
> > itself for this property and it must be described in DT. While this
> > does look a bit like policy, the SCMI provider is part of the
> > hardware, hence DT.
> >
> > Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
> > Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
> > ---
> > Cc: Conor Dooley <conor+dt@kernel.org>
> > Cc: Cristian Marussi <cristian.marussi@arm.com>
> > Cc: Florian Fainelli <florian.fainelli@broadcom.com>
> > Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
> > Cc: Rob Herring <robh@kernel.org>
> > Cc: Sudeep Holla <sudeep.holla@arm.com>
> > Cc: arm-scmi@vger.kernel.org
> > Cc: devicetree@vger.kernel.org
> > Cc: linux-arm-kernel@lists.infradead.org
> > Cc: linux-renesas-soc@vger.kernel.org
> > ---
> > V2: s@mean@&t and limit poll transport to mailbox/shmem only
> > V3: - Reformat the commit message, expand property description to
> > explicitly spell out this is hardware description.
> > - Rename property from arm,poll-transport to arm,no-completion-irq
> > V4: - Update first paragraph of commit message and property description
> > - Add RB from Rob
> > ---
> > .../devicetree/bindings/firmware/arm,scmi.yaml | 10 ++++++++++
> > 1 file changed, 10 insertions(+)
> >
> > diff --git a/Documentation/devicetree/bindings/firmware/arm,scmi.yaml b/Documentation/devicetree/bindings/firmware/arm,scmi.yaml
> > index be817fd9cc34b..d06cca9273c48 100644
> > --- a/Documentation/devicetree/bindings/firmware/arm,scmi.yaml
> > +++ b/Documentation/devicetree/bindings/firmware/arm,scmi.yaml
> > @@ -146,6 +146,13 @@ properties:
> > this platform. If set, the value should be non-zero.
> > minimum: 1
> >
> > + arm,no-completion-irq:
> > + type: boolean
> > + description:
>
> Shouldn't these two points have to be swapped as per Sudeep and Rob
> suggestions ?
>
> description:
> ....
> type: boolean
>
I was just referring to the points covered under the `description` and not
the order of `type` and `description`. I am not sure if there is any such
requirement as well. I am happy with this version, but this needs to wait
for the merge window following the next as I have already sent the PR to
SoC teams.
--
Regards,
Sudeep
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 1/2] dt-bindings: firmware: arm,scmi: Document arm,no-completion-irq property
2026-01-19 17:02 ` Sudeep Holla
@ 2026-01-21 2:05 ` Rob Herring
0 siblings, 0 replies; 14+ messages in thread
From: Rob Herring @ 2026-01-21 2:05 UTC (permalink / raw)
To: Sudeep Holla
Cc: Cristian Marussi, Marek Vasut, arm-scmi, Conor Dooley,
Florian Fainelli, Krzysztof Kozlowski, devicetree,
linux-arm-kernel, linux-renesas-soc
On Mon, Jan 19, 2026 at 05:02:58PM +0000, Sudeep Holla wrote:
> On Mon, Jan 19, 2026 at 04:53:45PM +0000, Cristian Marussi wrote:
> > On Sat, Jan 17, 2026 at 02:02:28AM +0100, Marek Vasut wrote:
> > > Document new property arm,no-completion-irq . This optional property
> > > is intended for hardware that does not generate completion interrupts
> > > and can be used to unconditionally enable forced polling mode of
> > > operation.
> > >
> > > With this property set, such implementations which do not generate
> > > interrupts can be interacted with, until they are fixed to generate
> > > interrupts properly.
> > >
> > > Note that, because the original base protocol exchange also requires
> > > some sort of completion mechanism, it is not possible to query SCMI
> > > itself for this property and it must be described in DT. While this
> > > does look a bit like policy, the SCMI provider is part of the
> > > hardware, hence DT.
> > >
> > > Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
> > > Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
> > > ---
> > > Cc: Conor Dooley <conor+dt@kernel.org>
> > > Cc: Cristian Marussi <cristian.marussi@arm.com>
> > > Cc: Florian Fainelli <florian.fainelli@broadcom.com>
> > > Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
> > > Cc: Rob Herring <robh@kernel.org>
> > > Cc: Sudeep Holla <sudeep.holla@arm.com>
> > > Cc: arm-scmi@vger.kernel.org
> > > Cc: devicetree@vger.kernel.org
> > > Cc: linux-arm-kernel@lists.infradead.org
> > > Cc: linux-renesas-soc@vger.kernel.org
> > > ---
> > > V2: s@mean@&t and limit poll transport to mailbox/shmem only
> > > V3: - Reformat the commit message, expand property description to
> > > explicitly spell out this is hardware description.
> > > - Rename property from arm,poll-transport to arm,no-completion-irq
> > > V4: - Update first paragraph of commit message and property description
> > > - Add RB from Rob
> > > ---
> > > .../devicetree/bindings/firmware/arm,scmi.yaml | 10 ++++++++++
> > > 1 file changed, 10 insertions(+)
> > >
> > > diff --git a/Documentation/devicetree/bindings/firmware/arm,scmi.yaml b/Documentation/devicetree/bindings/firmware/arm,scmi.yaml
> > > index be817fd9cc34b..d06cca9273c48 100644
> > > --- a/Documentation/devicetree/bindings/firmware/arm,scmi.yaml
> > > +++ b/Documentation/devicetree/bindings/firmware/arm,scmi.yaml
> > > @@ -146,6 +146,13 @@ properties:
> > > this platform. If set, the value should be non-zero.
> > > minimum: 1
> > >
> > > + arm,no-completion-irq:
> > > + type: boolean
> > > + description:
> >
> > Shouldn't these two points have to be swapped as per Sudeep and Rob
> > suggestions ?
> >
> > description:
> > ....
> > type: boolean
> >
>
> I was just referring to the points covered under the `description` and not
> the order of `type` and `description`. I am not sure if there is any such
> requirement as well.
There isn't. The only preference is to be consistent within a file of
description either first or last.
Rob
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 1/2] dt-bindings: firmware: arm,scmi: Document arm,no-completion-irq property
2026-01-19 16:53 ` [PATCH v4 1/2] dt-bindings: firmware: arm,scmi: Document " Cristian Marussi
2026-01-19 17:02 ` Sudeep Holla
@ 2026-01-19 19:00 ` Marek Vasut
1 sibling, 0 replies; 14+ messages in thread
From: Marek Vasut @ 2026-01-19 19:00 UTC (permalink / raw)
To: Cristian Marussi
Cc: arm-scmi, Rob Herring (Arm), Conor Dooley, Florian Fainelli,
Krzysztof Kozlowski, Sudeep Holla, devicetree, linux-arm-kernel,
linux-renesas-soc
On 1/19/26 5:53 PM, Cristian Marussi wrote:
[...]
>> diff --git a/Documentation/devicetree/bindings/firmware/arm,scmi.yaml b/Documentation/devicetree/bindings/firmware/arm,scmi.yaml
>> index be817fd9cc34b..d06cca9273c48 100644
>> --- a/Documentation/devicetree/bindings/firmware/arm,scmi.yaml
>> +++ b/Documentation/devicetree/bindings/firmware/arm,scmi.yaml
>> @@ -146,6 +146,13 @@ properties:
>> this platform. If set, the value should be non-zero.
>> minimum: 1
>>
>> + arm,no-completion-irq:
>> + type: boolean
>> + description:
>
> Shouldn't these two points have to be swapped as per Sudeep and Rob
> suggestions ?
>
> description:
> ....
> type: boolean
>
>> + This optional property is intended for hardware that does not generate
>> + completion interrupts and can be used to unconditionally enable forced
>> + polling mode of operation.
>> +
>> arm,smc-id:
>> $ref: /schemas/types.yaml#/definitions/uint32
>> description:
They were referring to the content of the description: . Note that the
type precedes the description: , see e.g. arm,smc-id above or any of the
other properties.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 1/2] dt-bindings: firmware: arm,scmi: Document arm,no-completion-irq property
2026-01-17 1:02 [PATCH v4 1/2] dt-bindings: firmware: arm,scmi: Document arm,no-completion-irq property Marek Vasut
2026-01-17 1:02 ` [PATCH v4 2/2] firmware: arm_scmi: Implement " Marek Vasut
2026-01-19 16:53 ` [PATCH v4 1/2] dt-bindings: firmware: arm,scmi: Document " Cristian Marussi
@ 2026-03-09 9:10 ` Sudeep Holla
2 siblings, 0 replies; 14+ messages in thread
From: Sudeep Holla @ 2026-03-09 9:10 UTC (permalink / raw)
To: arm-scmi, Marek Vasut
Cc: Sudeep Holla, Rob Herring (Arm), Conor Dooley, Cristian Marussi,
Florian Fainelli, Krzysztof Kozlowski, devicetree,
linux-arm-kernel, linux-renesas-soc
On Sat, 17 Jan 2026 02:02:28 +0100, Marek Vasut wrote:
> Document new property arm,no-completion-irq . This optional property
> is intended for hardware that does not generate completion interrupts
> and can be used to unconditionally enable forced polling mode of
> operation.
>
> With this property set, such implementations which do not generate
> interrupts can be interacted with, until they are fixed to generate
> interrupts properly.
>
> [...]
Applied to sudeep.holla/linux (for-next/scmi/updates), thanks!
[1/2] dt-bindings: firmware: arm,scmi: Document arm,no-completion-irq property
https://git.kernel.org/sudeep.holla/c/0c5453bf8437
[2/2] firmware: arm_scmi: Implement arm,no-completion-irq property
https://git.kernel.org/sudeep.holla/c/d8283ac2c8fb
--
Regards,
Sudeep
^ permalink raw reply [flat|nested] 14+ messages in thread