* [PATCH v1] iommu/riscv: Skip IRQ count check when using MSI interrupts
@ 2026-01-30 6:54 Yaxing Guo
2026-02-04 16:32 ` Andrew Jones
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Yaxing Guo @ 2026-01-30 6:54 UTC (permalink / raw)
To: tjeznach
Cc: joro, will, robin.murphy, pjw, palmer, aou, alex, iommu,
linux-riscv, linux-kernel, Yaxing Guo
In RISC-V IOMMU platform devices that use MSI interrupts (indicated by the
presence of 'msi-parent' in the device tree), there are no wired interrupt
lines, so calling platform_get_irq_count() returns 0 or -ENXIO, causing the
driver to fail during probe.
However, MSI interrupts are allocated dynamically via the MSI subsystem and
do not appear in the device tree 'interrupts' property. Therefore, the
driver should not require a non-zero IRQ count when 'msi-parent' is present.
This patch fixes the bug where probe fails when using MSI interrupts
(which do not have an 'interrupts' property in the device tree)..
Fixes: <d5f88acdd6ff> ("iommu/riscv: Add support for platform msi")
Signed-off-by: Yaxing Guo <guoyaxing@bosc.ac.cn>
---
drivers/iommu/riscv/iommu-platform.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/iommu/riscv/iommu-platform.c b/drivers/iommu/riscv/iommu-platform.c
index 83a28c83f991..8f15b06e8499 100644
--- a/drivers/iommu/riscv/iommu-platform.c
+++ b/drivers/iommu/riscv/iommu-platform.c
@@ -68,12 +68,7 @@ static int riscv_iommu_platform_probe(struct platform_device *pdev)
iommu->caps = riscv_iommu_readq(iommu, RISCV_IOMMU_REG_CAPABILITIES);
iommu->fctl = riscv_iommu_readl(iommu, RISCV_IOMMU_REG_FCTL);
- iommu->irqs_count = platform_irq_count(pdev);
- if (iommu->irqs_count <= 0)
- return dev_err_probe(dev, -ENODEV,
- "no IRQ resources provided\n");
- if (iommu->irqs_count > RISCV_IOMMU_INTR_COUNT)
- iommu->irqs_count = RISCV_IOMMU_INTR_COUNT;
+ iommu->irqs_count = RISCV_IOMMU_INTR_COUNT;
igs = FIELD_GET(RISCV_IOMMU_CAPABILITIES_IGS, iommu->caps);
switch (igs) {
@@ -120,6 +115,13 @@ static int riscv_iommu_platform_probe(struct platform_device *pdev)
fallthrough;
case RISCV_IOMMU_CAPABILITIES_IGS_WSI:
+ iommu->irqs_count = platform_irq_count(pdev);
+ if (iommu->irqs_count <= 0)
+ return dev_err_probe(dev, -ENODEV,
+ "no IRQ resources provided\n");
+ if (iommu->irqs_count > RISCV_IOMMU_INTR_COUNT)
+ iommu->irqs_count = RISCV_IOMMU_INTR_COUNT;
+
for (vec = 0; vec < iommu->irqs_count; vec++)
iommu->irqs[vec] = platform_get_irq(pdev, vec);
--
2.34.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v1] iommu/riscv: Skip IRQ count check when using MSI interrupts
2026-01-30 6:54 [PATCH v1] iommu/riscv: Skip IRQ count check when using MSI interrupts Yaxing Guo
@ 2026-02-04 16:32 ` Andrew Jones
2026-03-17 12:12 ` Jörg Rödel
2026-04-30 3:26 ` patchwork-bot+linux-riscv
2 siblings, 0 replies; 4+ messages in thread
From: Andrew Jones @ 2026-02-04 16:32 UTC (permalink / raw)
To: Yaxing Guo
Cc: tjeznach, joro, will, robin.murphy, pjw, palmer, aou, alex, iommu,
linux-riscv, linux-kernel
On Fri, Jan 30, 2026 at 02:54:20PM +0800, Yaxing Guo wrote:
> In RISC-V IOMMU platform devices that use MSI interrupts (indicated by the
> presence of 'msi-parent' in the device tree), there are no wired interrupt
> lines, so calling platform_get_irq_count() returns 0 or -ENXIO, causing the
> driver to fail during probe.
>
> However, MSI interrupts are allocated dynamically via the MSI subsystem and
> do not appear in the device tree 'interrupts' property. Therefore, the
> driver should not require a non-zero IRQ count when 'msi-parent' is present.
>
> This patch fixes the bug where probe fails when using MSI interrupts
> (which do not have an 'interrupts' property in the device tree)..
>
> Fixes: <d5f88acdd6ff> ("iommu/riscv: Add support for platform msi")
>
> Signed-off-by: Yaxing Guo <guoyaxing@bosc.ac.cn>
> ---
> drivers/iommu/riscv/iommu-platform.c | 14 ++++++++------
> 1 file changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/iommu/riscv/iommu-platform.c b/drivers/iommu/riscv/iommu-platform.c
> index 83a28c83f991..8f15b06e8499 100644
> --- a/drivers/iommu/riscv/iommu-platform.c
> +++ b/drivers/iommu/riscv/iommu-platform.c
> @@ -68,12 +68,7 @@ static int riscv_iommu_platform_probe(struct platform_device *pdev)
> iommu->caps = riscv_iommu_readq(iommu, RISCV_IOMMU_REG_CAPABILITIES);
> iommu->fctl = riscv_iommu_readl(iommu, RISCV_IOMMU_REG_FCTL);
>
> - iommu->irqs_count = platform_irq_count(pdev);
> - if (iommu->irqs_count <= 0)
> - return dev_err_probe(dev, -ENODEV,
> - "no IRQ resources provided\n");
> - if (iommu->irqs_count > RISCV_IOMMU_INTR_COUNT)
> - iommu->irqs_count = RISCV_IOMMU_INTR_COUNT;
> + iommu->irqs_count = RISCV_IOMMU_INTR_COUNT;
>
> igs = FIELD_GET(RISCV_IOMMU_CAPABILITIES_IGS, iommu->caps);
> switch (igs) {
> @@ -120,6 +115,13 @@ static int riscv_iommu_platform_probe(struct platform_device *pdev)
> fallthrough;
>
> case RISCV_IOMMU_CAPABILITIES_IGS_WSI:
> + iommu->irqs_count = platform_irq_count(pdev);
> + if (iommu->irqs_count <= 0)
> + return dev_err_probe(dev, -ENODEV,
> + "no IRQ resources provided\n");
> + if (iommu->irqs_count > RISCV_IOMMU_INTR_COUNT)
> + iommu->irqs_count = RISCV_IOMMU_INTR_COUNT;
> +
> for (vec = 0; vec < iommu->irqs_count; vec++)
> iommu->irqs[vec] = platform_get_irq(pdev, vec);
>
> --
> 2.34.1
>
Reviewed-by: Andrew Jones <andrew.jones@oss.qualcomm.com>
Thanks,
drew
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v1] iommu/riscv: Skip IRQ count check when using MSI interrupts
2026-01-30 6:54 [PATCH v1] iommu/riscv: Skip IRQ count check when using MSI interrupts Yaxing Guo
2026-02-04 16:32 ` Andrew Jones
@ 2026-03-17 12:12 ` Jörg Rödel
2026-04-30 3:26 ` patchwork-bot+linux-riscv
2 siblings, 0 replies; 4+ messages in thread
From: Jörg Rödel @ 2026-03-17 12:12 UTC (permalink / raw)
To: Yaxing Guo
Cc: tjeznach, will, robin.murphy, pjw, palmer, aou, alex, iommu,
linux-riscv, linux-kernel
On Fri, Jan 30, 2026 at 02:54:20PM +0800, Yaxing Guo wrote:
> In RISC-V IOMMU platform devices that use MSI interrupts (indicated by the
> presence of 'msi-parent' in the device tree), there are no wired interrupt
> lines, so calling platform_get_irq_count() returns 0 or -ENXIO, causing the
> driver to fail during probe.
>
> However, MSI interrupts are allocated dynamically via the MSI subsystem and
> do not appear in the device tree 'interrupts' property. Therefore, the
> driver should not require a non-zero IRQ count when 'msi-parent' is present.
>
> This patch fixes the bug where probe fails when using MSI interrupts
> (which do not have an 'interrupts' property in the device tree)..
>
> Fixes: <d5f88acdd6ff> ("iommu/riscv: Add support for platform msi")
>
> Signed-off-by: Yaxing Guo <guoyaxing@bosc.ac.cn>
> ---
> drivers/iommu/riscv/iommu-platform.c | 14 ++++++++------
> 1 file changed, 8 insertions(+), 6 deletions(-)
Applied, thanks.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v1] iommu/riscv: Skip IRQ count check when using MSI interrupts
2026-01-30 6:54 [PATCH v1] iommu/riscv: Skip IRQ count check when using MSI interrupts Yaxing Guo
2026-02-04 16:32 ` Andrew Jones
2026-03-17 12:12 ` Jörg Rödel
@ 2026-04-30 3:26 ` patchwork-bot+linux-riscv
2 siblings, 0 replies; 4+ messages in thread
From: patchwork-bot+linux-riscv @ 2026-04-30 3:26 UTC (permalink / raw)
To: Yaxing Guo
Cc: linux-riscv, tjeznach, joro, will, robin.murphy, pjw, palmer, aou,
alex, iommu, linux-kernel
Hello:
This patch was applied to riscv/linux.git (fixes)
by Joerg Roedel <joerg.roedel@amd.com>:
On Fri, 30 Jan 2026 14:54:20 +0800 you wrote:
> In RISC-V IOMMU platform devices that use MSI interrupts (indicated by the
> presence of 'msi-parent' in the device tree), there are no wired interrupt
> lines, so calling platform_get_irq_count() returns 0 or -ENXIO, causing the
> driver to fail during probe.
>
> However, MSI interrupts are allocated dynamically via the MSI subsystem and
> do not appear in the device tree 'interrupts' property. Therefore, the
> driver should not require a non-zero IRQ count when 'msi-parent' is present.
>
> [...]
Here is the summary with links:
- [v1] iommu/riscv: Skip IRQ count check when using MSI interrupts
https://git.kernel.org/riscv/c/7217cee35aad
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-04-30 3:26 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-30 6:54 [PATCH v1] iommu/riscv: Skip IRQ count check when using MSI interrupts Yaxing Guo
2026-02-04 16:32 ` Andrew Jones
2026-03-17 12:12 ` Jörg Rödel
2026-04-30 3:26 ` patchwork-bot+linux-riscv
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox