[PATCH v2 4/6] genirq/test: Depend on SPARSE_IRQ

Brian Norris posted 6 patches 1 month, 1 week ago
[PATCH v2 4/6] genirq/test: Depend on SPARSE_IRQ
Posted by Brian Norris 1 month, 1 week ago
Some architectures have a rather static IRQ layout, with a limited
NR_IRQS. Without SPARSE_IRQ, we may not be able to allocate any new fake
IRQs, and the test will fail. (This occurs on ARCH=m68k, for example.)

Additionally, managed-affinity is only supported with
CONFIG_SPARSE_IRQ=y, so irq_shutdown_depth_test() and
irq_cpuhotplug_test() would fail without it.

Add a 'SPARSE_IRQ' dependency to avoid these problems.

Many architectures 'select SPARSE_IRQ', so this is easy to miss.

Notably, this also excludes ARCH=um from running any of these tests,
even though some of them might work.

Fixes: 66067c3c8a1e ("genirq: Add kunit tests for depth counts")
Reported-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Brian Norris <briannorris@chromium.org>
---

Changes in v2:
 * Make all tests depend on SPARSE_IRQ, not just a few (resolves
   ARCH=m68k issues)

 kernel/irq/Kconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/kernel/irq/Kconfig b/kernel/irq/Kconfig
index 08088b8e95ae..a75df2bb9db6 100644
--- a/kernel/irq/Kconfig
+++ b/kernel/irq/Kconfig
@@ -147,6 +147,7 @@ config GENERIC_IRQ_KEXEC_CLEAR_VM_FORWARD
 config IRQ_KUNIT_TEST
 	bool "KUnit tests for IRQ management APIs" if !KUNIT_ALL_TESTS
 	depends on KUNIT=y
+	depends on SPARSE_IRQ
 	default KUNIT_ALL_TESTS
 	select IRQ_DOMAIN
 	imply SMP
-- 
2.51.0.rc2.233.g662b1ed5c5-goog
Re: [PATCH v2 4/6] genirq/test: Depend on SPARSE_IRQ
Posted by David Gow 1 month, 1 week ago
On Sat, 23 Aug 2025 at 03:01, Brian Norris <briannorris@chromium.org> wrote:
>
> Some architectures have a rather static IRQ layout, with a limited
> NR_IRQS. Without SPARSE_IRQ, we may not be able to allocate any new fake
> IRQs, and the test will fail. (This occurs on ARCH=m68k, for example.)
>
> Additionally, managed-affinity is only supported with
> CONFIG_SPARSE_IRQ=y, so irq_shutdown_depth_test() and
> irq_cpuhotplug_test() would fail without it.
>
> Add a 'SPARSE_IRQ' dependency to avoid these problems.
>
> Many architectures 'select SPARSE_IRQ', so this is easy to miss.
>
> Notably, this also excludes ARCH=um from running any of these tests,
> even though some of them might work.
>
> Fixes: 66067c3c8a1e ("genirq: Add kunit tests for depth counts")
> Reported-by: Guenter Roeck <linux@roeck-us.net>
> Signed-off-by: Brian Norris <briannorris@chromium.org>
> ---

I confess to being disappointed that we lose ARCH=um support with this
-- it's nice to have it run on the "default" configuration -- but the
correct way of solving this is probably to support SPARSE_IRQ on UML,
which is probably more work than it's worth.

So this is, nevertheless,
Reviewed-by: David Gow <davidgow@google.com>

Cheers,
-- David
Re: [PATCH v2 4/6] genirq/test: Depend on SPARSE_IRQ
Posted by Brian Norris 1 month, 1 week ago
On Sat, Aug 23, 2025 at 02:59:26PM +0800, David Gow wrote:
> On Sat, 23 Aug 2025 at 03:01, Brian Norris <briannorris@chromium.org> wrote:
> > Notably, this also excludes ARCH=um from running any of these tests,
> > even though some of them might work.
> 
> I confess to being disappointed that we lose ARCH=um support with this
> -- it's nice to have it run on the "default" configuration -- but the
> correct way of solving this is probably to support SPARSE_IRQ on UML,
> which is probably more work than it's worth.

I made an educated guess on how to support SPARSE_IRQ for ARCH=um, and I
got something working here:

[PATCH] um: Support SPARSE_IRQ
http://lore.kernel.org/all/20250825212031.111027-1-briannorris@chromium.org

Brian
Re: [PATCH v2 4/6] genirq/test: Depend on SPARSE_IRQ
Posted by Guenter Roeck 1 month, 1 week ago
On Fri, Aug 22, 2025 at 11:59:05AM -0700, Brian Norris wrote:
> Some architectures have a rather static IRQ layout, with a limited
> NR_IRQS. Without SPARSE_IRQ, we may not be able to allocate any new fake
> IRQs, and the test will fail. (This occurs on ARCH=m68k, for example.)
> 
> Additionally, managed-affinity is only supported with
> CONFIG_SPARSE_IRQ=y, so irq_shutdown_depth_test() and
> irq_cpuhotplug_test() would fail without it.
> 
> Add a 'SPARSE_IRQ' dependency to avoid these problems.
> 
> Many architectures 'select SPARSE_IRQ', so this is easy to miss.
> 
> Notably, this also excludes ARCH=um from running any of these tests,
> even though some of them might work.
> 
> Fixes: 66067c3c8a1e ("genirq: Add kunit tests for depth counts")
> Reported-by: Guenter Roeck <linux@roeck-us.net>
> Signed-off-by: Brian Norris <briannorris@chromium.org>

Tested-by: Guenter Roeck <linux@roeck-us.net>

> ---
> 
> Changes in v2:
>  * Make all tests depend on SPARSE_IRQ, not just a few (resolves
>    ARCH=m68k issues)
> 
>  kernel/irq/Kconfig | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/kernel/irq/Kconfig b/kernel/irq/Kconfig
> index 08088b8e95ae..a75df2bb9db6 100644
> --- a/kernel/irq/Kconfig
> +++ b/kernel/irq/Kconfig
> @@ -147,6 +147,7 @@ config GENERIC_IRQ_KEXEC_CLEAR_VM_FORWARD
>  config IRQ_KUNIT_TEST
>  	bool "KUnit tests for IRQ management APIs" if !KUNIT_ALL_TESTS
>  	depends on KUNIT=y
> +	depends on SPARSE_IRQ
>  	default KUNIT_ALL_TESTS
>  	select IRQ_DOMAIN
>  	imply SMP
> -- 
> 2.51.0.rc2.233.g662b1ed5c5-goog
>
[tip: irq/core] genirq/test: Depend on SPARSE_IRQ
Posted by tip-bot2 for Brian Norris 1 month ago
The following commit has been merged into the irq/core branch of tip:

Commit-ID:     0c888bc86d672e551ce5c58b891c8b44f8967643
Gitweb:        https://git.kernel.org/tip/0c888bc86d672e551ce5c58b891c8b44f8967643
Author:        Brian Norris <briannorris@chromium.org>
AuthorDate:    Fri, 22 Aug 2025 11:59:05 -07:00
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Wed, 03 Sep 2025 17:04:52 +02:00

genirq/test: Depend on SPARSE_IRQ

Some architectures have a static interrupt layout, with a limited number of
interrupts. Without SPARSE_IRQ, the test may not be able to allocate any
fake interrupts, and the test will fail. (This occurs on ARCH=m68k, for
example.)

Additionally, managed-affinity is only supported with CONFIG_SPARSE_IRQ=y,
so irq_shutdown_depth_test() and irq_cpuhotplug_test() would fail without
it.

Add a 'SPARSE_IRQ' dependency to avoid these problems.

Many architectures 'select SPARSE_IRQ', so this is easy to miss.

Notably, this also excludes ARCH=um from running any of these tests, even
though some of them might work.

Fixes: 66067c3c8a1e ("genirq: Add kunit tests for depth counts")
Reported-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Brian Norris <briannorris@chromium.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Reviewed-by: David Gow <davidgow@google.com>
Link: https://lore.kernel.org/all/20250822190140.2154646-5-briannorris@chromium.org

---
 kernel/irq/Kconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/kernel/irq/Kconfig b/kernel/irq/Kconfig
index 8bc4de3..1b4254d 100644
--- a/kernel/irq/Kconfig
+++ b/kernel/irq/Kconfig
@@ -143,6 +143,7 @@ config GENERIC_IRQ_KEXEC_CLEAR_VM_FORWARD
 config IRQ_KUNIT_TEST
 	bool "KUnit tests for IRQ management APIs" if !KUNIT_ALL_TESTS
 	depends on KUNIT=y
+	depends on SPARSE_IRQ
 	default KUNIT_ALL_TESTS
 	select IRQ_DOMAIN
 	imply SMP