* [PATCH] irq: Make refcount_interrupt kunit test selectable
@ 2026-08-23 17:17 Kuan-Wei Chiu
2026-08-23 20:46 ` Radu Rendec
` (3 more replies)
0 siblings, 4 replies; 10+ messages in thread
From: Kuan-Wei Chiu @ 2026-08-23 17:17 UTC (permalink / raw)
To: tglx, boqun, peterz, lyude
Cc: radu, jserv, marscheng, eleanor15x, linux-kernel, Kuan-Wei Chiu
Currently, refcount_interrupt_test is built unconditionally when
CONFIG_KUNIT is enabled, causing it to run unexpectedly during boot.
Fix this by introducing CONFIG_REFCOUNT_INTERRUPT_KUNIT_TEST so the
test can be configured independently, following standard kunit
practices.
Fixes: 07a88e2bcd5b ("irq: Add KUnit test for refcounted interrupt enable/disable")
Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com>
---
kernel/irq/Kconfig | 12 ++++++++++++
kernel/irq/Makefile | 2 +-
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/kernel/irq/Kconfig b/kernel/irq/Kconfig
index 05cba4e16dad..6923f37eaab4 100644
--- a/kernel/irq/Kconfig
+++ b/kernel/irq/Kconfig
@@ -150,6 +150,18 @@ config IRQ_KUNIT_TEST
If unsure, say N.
+config REFCOUNT_INTERRUPT_KUNIT_TEST
+ tristate "Test refcounted interrupt enable/disable" if !KUNIT_ALL_TESTS
+ depends on KUNIT
+ default KUNIT_ALL_TESTS
+ help
+ This builds the kunit tests for the refcounted interrupt
+ infrastructure. It verifies the correctness of single, nested,
+ and multiple interrupt enable/disable state changes and ensures
+ that the underlying reference counting mechanisms work as expected.
+
+ If unsure, say N.
+
endmenu
config GENERIC_IRQ_MULTI_HANDLER
diff --git a/kernel/irq/Makefile b/kernel/irq/Makefile
index 44c4d6fc502a..0e5df962a149 100644
--- a/kernel/irq/Makefile
+++ b/kernel/irq/Makefile
@@ -16,4 +16,4 @@ obj-$(CONFIG_SMP) += affinity.o
obj-$(CONFIG_GENERIC_IRQ_DEBUGFS) += debugfs.o
obj-$(CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR) += matrix.o
obj-$(CONFIG_IRQ_KUNIT_TEST) += irq_test.o
-obj-$(CONFIG_KUNIT) += refcount_interrupt_test.o
+obj-$(CONFIG_REFCOUNT_INTERRUPT_KUNIT_TEST) += refcount_interrupt_test.o
--
2.55.0.766.g2966f0265a-goog
^ permalink raw reply related [flat|nested] 10+ messages in thread* Re: [PATCH] irq: Make refcount_interrupt kunit test selectable 2026-08-23 17:17 [PATCH] irq: Make refcount_interrupt kunit test selectable Kuan-Wei Chiu @ 2026-08-23 20:46 ` Radu Rendec 2026-08-23 21:08 ` Boqun Feng 2026-08-23 21:10 ` Boqun Feng ` (2 subsequent siblings) 3 siblings, 1 reply; 10+ messages in thread From: Radu Rendec @ 2026-08-23 20:46 UTC (permalink / raw) To: Kuan-Wei Chiu, tglx, boqun, peterz, lyude Cc: jserv, marscheng, eleanor15x, linux-kernel On Sun, 2026-08-23 at 17:17 +0000, Kuan-Wei Chiu wrote: > Currently, refcount_interrupt_test is built unconditionally when > CONFIG_KUNIT is enabled, causing it to run unexpectedly during boot. > > Fix this by introducing CONFIG_REFCOUNT_INTERRUPT_KUNIT_TEST so the > test can be configured independently, following standard kunit > practices. > > Fixes: 07a88e2bcd5b ("irq: Add KUnit test for refcounted interrupt enable/disable") > Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com> > --- > kernel/irq/Kconfig | 12 ++++++++++++ > kernel/irq/Makefile | 2 +- > 2 files changed, 13 insertions(+), 1 deletion(-) Can someone please explain me why this needs to be a separate unit test in the first place and can't be integrated into the (previously) existing unit test gated by IRQ_KUNIT_TEST? Ironically, both the issue that this patch is trying to fix and my question were raised by sashiko here: https://lore.kernel.org/all/20260605055315.3E96E1F00893@smtp.kernel.org/ > diff --git a/kernel/irq/Kconfig b/kernel/irq/Kconfig > index 05cba4e16dad..6923f37eaab4 100644 > --- a/kernel/irq/Kconfig > +++ b/kernel/irq/Kconfig > @@ -150,6 +150,18 @@ config IRQ_KUNIT_TEST > > If unsure, say N. > > +config REFCOUNT_INTERRUPT_KUNIT_TEST > + tristate "Test refcounted interrupt enable/disable" if !KUNIT_ALL_TESTS > + depends on KUNIT > + default KUNIT_ALL_TESTS > + help > + This builds the kunit tests for the refcounted interrupt > + infrastructure. It verifies the correctness of single, nested, > + and multiple interrupt enable/disable state changes and ensures > + that the underlying reference counting mechanisms work as expected. > + > + If unsure, say N. > + > endmenu > > config GENERIC_IRQ_MULTI_HANDLER > diff --git a/kernel/irq/Makefile b/kernel/irq/Makefile > index 44c4d6fc502a..0e5df962a149 100644 > --- a/kernel/irq/Makefile > +++ b/kernel/irq/Makefile > @@ -16,4 +16,4 @@ obj-$(CONFIG_SMP) += affinity.o > obj-$(CONFIG_GENERIC_IRQ_DEBUGFS) += debugfs.o > obj-$(CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR) += matrix.o > obj-$(CONFIG_IRQ_KUNIT_TEST) += irq_test.o > -obj-$(CONFIG_KUNIT) += refcount_interrupt_test.o > +obj-$(CONFIG_REFCOUNT_INTERRUPT_KUNIT_TEST) += refcount_interrupt_test.o ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] irq: Make refcount_interrupt kunit test selectable 2026-08-23 20:46 ` Radu Rendec @ 2026-08-23 21:08 ` Boqun Feng 2026-08-23 21:52 ` Radu Rendec 0 siblings, 1 reply; 10+ messages in thread From: Boqun Feng @ 2026-08-23 21:08 UTC (permalink / raw) To: Radu Rendec Cc: Kuan-Wei Chiu, tglx, peterz, lyude, jserv, marscheng, eleanor15x, linux-kernel On Sun, Aug 23, 2026 at 04:46:23PM -0400, Radu Rendec wrote: > On Sun, 2026-08-23 at 17:17 +0000, Kuan-Wei Chiu wrote: > > Currently, refcount_interrupt_test is built unconditionally when > > CONFIG_KUNIT is enabled, causing it to run unexpectedly during boot. > > > > Fix this by introducing CONFIG_REFCOUNT_INTERRUPT_KUNIT_TEST so the > > test can be configured independently, following standard kunit > > practices. > > > > Fixes: 07a88e2bcd5b ("irq: Add KUnit test for refcounted interrupt enable/disable") > > Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com> > > --- > > kernel/irq/Kconfig | 12 ++++++++++++ > > kernel/irq/Makefile | 2 +- > > 2 files changed, 13 insertions(+), 1 deletion(-) > > Can someone please explain me why this needs to be a separate unit test > in the first place and can't be integrated into the (previously) > existing unit test gated by IRQ_KUNIT_TEST? > If you look at the irq_test.c, you will find that it primarily tests the {request,disable,enable}_irq() API (i.e. allocating IRQ vectors and enabling and disabling them), which is not the same scope as local_interrupt_{disable,enable}() (i.e. operating the CPU irq disabling status), so it makes sense to have a separate test case. But yes, I agree Kuan-Wei's fix is needed. Regards, Boqun > Ironically, both the issue that this patch is trying to fix and my > question were raised by sashiko here: > https://lore.kernel.org/all/20260605055315.3E96E1F00893@smtp.kernel.org/ > > > diff --git a/kernel/irq/Kconfig b/kernel/irq/Kconfig > > index 05cba4e16dad..6923f37eaab4 100644 > > --- a/kernel/irq/Kconfig > > +++ b/kernel/irq/Kconfig > > @@ -150,6 +150,18 @@ config IRQ_KUNIT_TEST > > > > If unsure, say N. > > > > +config REFCOUNT_INTERRUPT_KUNIT_TEST > > + tristate "Test refcounted interrupt enable/disable" if !KUNIT_ALL_TESTS > > + depends on KUNIT > > + default KUNIT_ALL_TESTS > > + help > > + This builds the kunit tests for the refcounted interrupt > > + infrastructure. It verifies the correctness of single, nested, > > + and multiple interrupt enable/disable state changes and ensures > > + that the underlying reference counting mechanisms work as expected. > > + > > + If unsure, say N. > > + > > endmenu > > > > config GENERIC_IRQ_MULTI_HANDLER > > diff --git a/kernel/irq/Makefile b/kernel/irq/Makefile > > index 44c4d6fc502a..0e5df962a149 100644 > > --- a/kernel/irq/Makefile > > +++ b/kernel/irq/Makefile > > @@ -16,4 +16,4 @@ obj-$(CONFIG_SMP) += affinity.o > > obj-$(CONFIG_GENERIC_IRQ_DEBUGFS) += debugfs.o > > obj-$(CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR) += matrix.o > > obj-$(CONFIG_IRQ_KUNIT_TEST) += irq_test.o > > -obj-$(CONFIG_KUNIT) += refcount_interrupt_test.o > > +obj-$(CONFIG_REFCOUNT_INTERRUPT_KUNIT_TEST) += refcount_interrupt_test.o ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] irq: Make refcount_interrupt kunit test selectable 2026-08-23 21:08 ` Boqun Feng @ 2026-08-23 21:52 ` Radu Rendec 2026-08-24 5:23 ` Boqun Feng 0 siblings, 1 reply; 10+ messages in thread From: Radu Rendec @ 2026-08-23 21:52 UTC (permalink / raw) To: Boqun Feng Cc: Kuan-Wei Chiu, tglx, peterz, lyude, jserv, marscheng, eleanor15x, linux-kernel On Sun, 2026-08-23 at 14:08 -0700, Boqun Feng wrote: > On Sun, Aug 23, 2026 at 04:46:23PM -0400, Radu Rendec wrote: > > On Sun, 2026-08-23 at 17:17 +0000, Kuan-Wei Chiu wrote: > > > Currently, refcount_interrupt_test is built unconditionally when > > > CONFIG_KUNIT is enabled, causing it to run unexpectedly during boot. > > > > > > Fix this by introducing CONFIG_REFCOUNT_INTERRUPT_KUNIT_TEST so the > > > test can be configured independently, following standard kunit > > > practices. > > > > > > Fixes: 07a88e2bcd5b ("irq: Add KUnit test for refcounted interrupt enable/disable") > > > Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com> > > > --- > > > kernel/irq/Kconfig | 12 ++++++++++++ > > > kernel/irq/Makefile | 2 +- > > > 2 files changed, 13 insertions(+), 1 deletion(-) > > > > Can someone please explain me why this needs to be a separate unit test > > in the first place and can't be integrated into the (previously) > > existing unit test gated by IRQ_KUNIT_TEST? > > > > If you look at the irq_test.c, you will find that it primarily tests the > {request,disable,enable}_irq() API (i.e. allocating IRQ vectors and > enabling and disabling them), which is not the same scope as > local_interrupt_{disable,enable}() (i.e. operating the CPU irq disabling > status), so it makes sense to have a separate test case. Thanks! If we want to keep the unit tests separated/grouped by scope, then yes, it makes sense for sure. What I don't like about this is: * The naming of the two config options is inconsistent: IRQ_KUNIT_TEST and REFCOUNT_INTERRUPT_KUNIT_TEST. * The naming and description of the older test become misleading. The way they are formulated, I would expect them to test "everything related to IRQ" but now we have a separate option (and kunit test) dedicated to the refcount stuff. If they must be separated/grouped by scope, I would find it much nicer and less confusing if they were called something like: IRQ_MANAGEMENT_KUNIT_TEST and IRQ_REFCOUNT_KUNIT_TEST, and also the corresponding .c files were somewhat consistent with the Kconfig option names. The description of the older test would have to be updated to make it clear that it's not just "everything IRQ". In that scenario, new kunit test(s) related to different aspects of the IRQ subsystem would get their own Kconfig option and file, and would hopefully follow the same naming pattern. To be clear, I'm not arguing that keeping the tests separate is wrong. I'm arguing that if we do that, we should also make some adjustments to keep everything clean and tidy. > But yes, I agree Kuan-Wei's fix is needed. Yes, I agree, those unit tests must not be gated by KUNIT alone, so something must be done to fix it. > > Ironically, both the issue that this patch is trying to fix and my > > question were raised by sashiko here: > > https://lore.kernel.org/all/20260605055315.3E96E1F00893@smtp.kernel.org/ > > > > > diff --git a/kernel/irq/Kconfig b/kernel/irq/Kconfig > > > index 05cba4e16dad..6923f37eaab4 100644 > > > --- a/kernel/irq/Kconfig > > > +++ b/kernel/irq/Kconfig > > > @@ -150,6 +150,18 @@ config IRQ_KUNIT_TEST > > > > > > If unsure, say N. > > > > > > +config REFCOUNT_INTERRUPT_KUNIT_TEST > > > + tristate "Test refcounted interrupt enable/disable" if !KUNIT_ALL_TESTS > > > + depends on KUNIT > > > + default KUNIT_ALL_TESTS > > > + help > > > + This builds the kunit tests for the refcounted interrupt > > > + infrastructure. It verifies the correctness of single, nested, > > > + and multiple interrupt enable/disable state changes and ensures > > > + that the underlying reference counting mechanisms work as expected. > > > + > > > + If unsure, say N. > > > + > > > endmenu > > > > > > config GENERIC_IRQ_MULTI_HANDLER > > > diff --git a/kernel/irq/Makefile b/kernel/irq/Makefile > > > index 44c4d6fc502a..0e5df962a149 100644 > > > --- a/kernel/irq/Makefile > > > +++ b/kernel/irq/Makefile > > > @@ -16,4 +16,4 @@ obj-$(CONFIG_SMP) += affinity.o > > > obj-$(CONFIG_GENERIC_IRQ_DEBUGFS) += debugfs.o > > > obj-$(CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR) += matrix.o > > > obj-$(CONFIG_IRQ_KUNIT_TEST) += irq_test.o > > > -obj-$(CONFIG_KUNIT) += refcount_interrupt_test.o > > > +obj-$(CONFIG_REFCOUNT_INTERRUPT_KUNIT_TEST) += refcount_interrupt_test.o -- Best regards, Radu ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] irq: Make refcount_interrupt kunit test selectable 2026-08-23 21:52 ` Radu Rendec @ 2026-08-24 5:23 ` Boqun Feng 2026-08-24 15:02 ` Radu Rendec 0 siblings, 1 reply; 10+ messages in thread From: Boqun Feng @ 2026-08-24 5:23 UTC (permalink / raw) To: Radu Rendec Cc: Kuan-Wei Chiu, tglx, peterz, lyude, jserv, marscheng, eleanor15x, linux-kernel On Sun, Aug 23, 2026 at 05:52:24PM -0400, Radu Rendec wrote: > On Sun, 2026-08-23 at 14:08 -0700, Boqun Feng wrote: > > On Sun, Aug 23, 2026 at 04:46:23PM -0400, Radu Rendec wrote: > > > On Sun, 2026-08-23 at 17:17 +0000, Kuan-Wei Chiu wrote: > > > > Currently, refcount_interrupt_test is built unconditionally when > > > > CONFIG_KUNIT is enabled, causing it to run unexpectedly during boot. > > > > > > > > Fix this by introducing CONFIG_REFCOUNT_INTERRUPT_KUNIT_TEST so the > > > > test can be configured independently, following standard kunit > > > > practices. > > > > > > > > Fixes: 07a88e2bcd5b ("irq: Add KUnit test for refcounted interrupt enable/disable") > > > > Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com> > > > > --- > > > > kernel/irq/Kconfig | 12 ++++++++++++ > > > > kernel/irq/Makefile | 2 +- > > > > 2 files changed, 13 insertions(+), 1 deletion(-) > > > > > > Can someone please explain me why this needs to be a separate unit test > > > in the first place and can't be integrated into the (previously) > > > existing unit test gated by IRQ_KUNIT_TEST? > > > > > > > If you look at the irq_test.c, you will find that it primarily tests the > > {request,disable,enable}_irq() API (i.e. allocating IRQ vectors and > > enabling and disabling them), which is not the same scope as > > local_interrupt_{disable,enable}() (i.e. operating the CPU irq disabling > > status), so it makes sense to have a separate test case. > > Thanks! If we want to keep the unit tests separated/grouped by scope, > then yes, it makes sense for sure. What I don't like about this is: > * The naming of the two config options is inconsistent: IRQ_KUNIT_TEST > and REFCOUNT_INTERRUPT_KUNIT_TEST. > * The naming and description of the older test become misleading. The > way they are formulated, I would expect them to test "everything > related to IRQ" but now we have a separate option (and kunit test) > dedicated to the refcount stuff. > These are valid points. However, I think the "inconsistency" comes from refcount_interrupt_test.c being in kernel/irq/. IRQ management (code in kernel/irq/) and IRQ disabling/enabling are very different things to me (for example include/linux/irqflags.h is not listed in the "IRQ SUBSYSTEM" entry). IMO, refcount_interrupt_test.c should be moved into lib/tests/. > If they must be separated/grouped by scope, I would find it much nicer > and less confusing if they were called something like: > IRQ_MANAGEMENT_KUNIT_TEST and > IRQ_REFCOUNT_KUNIT_TEST, > and also the corresponding .c files were somewhat consistent with the > Kconfig option names. The description of the older test would have to > be updated to make it clear that it's not just "everything IRQ". > > In that scenario, new kunit test(s) related to different aspects of the > IRQ subsystem would get their own Kconfig option and file, and would > hopefully follow the same naming pattern. > > To be clear, I'm not arguing that keeping the tests separate is wrong. > I'm arguing that if we do that, we should also make some adjustments to > keep everything clean and tidy. > Understood, and thank you for bringing it up. So how about we keep Kuan-Wei's fix as it is and move the refcount_interrupt_test.c file into lib/tests/? It's more clean and tidy to me this way. Thoughts? Regards, Boqun > > But yes, I agree Kuan-Wei's fix is needed. > > Yes, I agree, those unit tests must not be gated by KUNIT alone, so > something must be done to fix it. > > > > Ironically, both the issue that this patch is trying to fix and my > > > question were raised by sashiko here: > > > https://lore.kernel.org/all/20260605055315.3E96E1F00893@smtp.kernel.org/ > > > > > > > diff --git a/kernel/irq/Kconfig b/kernel/irq/Kconfig > > > > index 05cba4e16dad..6923f37eaab4 100644 > > > > --- a/kernel/irq/Kconfig > > > > +++ b/kernel/irq/Kconfig > > > > @@ -150,6 +150,18 @@ config IRQ_KUNIT_TEST > > > > > > > > If unsure, say N. > > > > > > > > +config REFCOUNT_INTERRUPT_KUNIT_TEST > > > > + tristate "Test refcounted interrupt enable/disable" if !KUNIT_ALL_TESTS > > > > + depends on KUNIT > > > > + default KUNIT_ALL_TESTS > > > > + help > > > > + This builds the kunit tests for the refcounted interrupt > > > > + infrastructure. It verifies the correctness of single, nested, > > > > + and multiple interrupt enable/disable state changes and ensures > > > > + that the underlying reference counting mechanisms work as expected. > > > > + > > > > + If unsure, say N. > > > > + > > > > endmenu > > > > > > > > config GENERIC_IRQ_MULTI_HANDLER > > > > diff --git a/kernel/irq/Makefile b/kernel/irq/Makefile > > > > index 44c4d6fc502a..0e5df962a149 100644 > > > > --- a/kernel/irq/Makefile > > > > +++ b/kernel/irq/Makefile > > > > @@ -16,4 +16,4 @@ obj-$(CONFIG_SMP) += affinity.o > > > > obj-$(CONFIG_GENERIC_IRQ_DEBUGFS) += debugfs.o > > > > obj-$(CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR) += matrix.o > > > > obj-$(CONFIG_IRQ_KUNIT_TEST) += irq_test.o > > > > -obj-$(CONFIG_KUNIT) += refcount_interrupt_test.o > > > > +obj-$(CONFIG_REFCOUNT_INTERRUPT_KUNIT_TEST) += refcount_interrupt_test.o > > -- > Best regards, > Radu ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] irq: Make refcount_interrupt kunit test selectable 2026-08-24 5:23 ` Boqun Feng @ 2026-08-24 15:02 ` Radu Rendec 2026-08-25 14:09 ` Boqun Feng 0 siblings, 1 reply; 10+ messages in thread From: Radu Rendec @ 2026-08-24 15:02 UTC (permalink / raw) To: Boqun Feng Cc: Kuan-Wei Chiu, tglx, peterz, lyude, jserv, marscheng, eleanor15x, linux-kernel On Sun, 2026-08-23 at 22:23 -0700, Boqun Feng wrote: > On Sun, Aug 23, 2026 at 05:52:24PM -0400, Radu Rendec wrote: > > On Sun, 2026-08-23 at 14:08 -0700, Boqun Feng wrote: > > > On Sun, Aug 23, 2026 at 04:46:23PM -0400, Radu Rendec wrote: > > > > On Sun, 2026-08-23 at 17:17 +0000, Kuan-Wei Chiu wrote: > > > > > Currently, refcount_interrupt_test is built unconditionally when > > > > > CONFIG_KUNIT is enabled, causing it to run unexpectedly during boot. > > > > > > > > > > Fix this by introducing CONFIG_REFCOUNT_INTERRUPT_KUNIT_TEST so the > > > > > test can be configured independently, following standard kunit > > > > > practices. > > > > > > > > > > Fixes: 07a88e2bcd5b ("irq: Add KUnit test for refcounted interrupt enable/disable") > > > > > Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com> > > > > > --- > > > > > kernel/irq/Kconfig | 12 ++++++++++++ > > > > > kernel/irq/Makefile | 2 +- > > > > > 2 files changed, 13 insertions(+), 1 deletion(-) > > > > > > > > Can someone please explain me why this needs to be a separate unit test > > > > in the first place and can't be integrated into the (previously) > > > > existing unit test gated by IRQ_KUNIT_TEST? > > > > > > > > > > If you look at the irq_test.c, you will find that it primarily tests the > > > {request,disable,enable}_irq() API (i.e. allocating IRQ vectors and > > > enabling and disabling them), which is not the same scope as > > > local_interrupt_{disable,enable}() (i.e. operating the CPU irq disabling > > > status), so it makes sense to have a separate test case. > > > > Thanks! If we want to keep the unit tests separated/grouped by scope, > > then yes, it makes sense for sure. What I don't like about this is: > > * The naming of the two config options is inconsistent: IRQ_KUNIT_TEST > > and REFCOUNT_INTERRUPT_KUNIT_TEST. > > * The naming and description of the older test become misleading. The > > way they are formulated, I would expect them to test "everything > > related to IRQ" but now we have a separate option (and kunit test) > > dedicated to the refcount stuff. > > > > These are valid points. However, I think the "inconsistency" comes from > refcount_interrupt_test.c being in kernel/irq/. IRQ management (code in > kernel/irq/) and IRQ disabling/enabling are very different things to me I agree, they are different indeed, which is a good reason to keep the tests separated as you pointed out. > (for example include/linux/irqflags.h is not listed in the "IRQ > SUBSYSTEM" entry). It's not, and neither are a bunch of other IRQ related header files in include/linux/ (get_maintainer.pl returns just the generic linux-kernel mailing list). To me, that looks more like an omission, because it means they have no maintainer. > IMO, refcount_interrupt_test.c should be moved into > lib/tests/. I'm not sure about that. I looked, and and the tests in lib/tests/ are for the stuff that's implemented in lib/*.c. On the other hand, most of the IRQ refcount code is in include/linux/interrupt_rc.h, with some bits in kernel/softirq.c (e.g. the per-cpu state variable). If the IRQ refcount code hadn't consisted of mostly static inline functions, where would that code have been added? Still kernel/softirq.c? I'm thinking the corresponding unit tests belong in the same place, whatever that is. Assuming kernel/softirq.c, I would have suggested to put the unit tests in kernel/tests/, but it doesn't exist :) > > If they must be separated/grouped by scope, I would find it much nicer > > and less confusing if they were called something like: > > IRQ_MANAGEMENT_KUNIT_TEST and > > IRQ_REFCOUNT_KUNIT_TEST, > > and also the corresponding .c files were somewhat consistent with the > > Kconfig option names. The description of the older test would have to > > be updated to make it clear that it's not just "everything IRQ". > > > > In that scenario, new kunit test(s) related to different aspects of the > > IRQ subsystem would get their own Kconfig option and file, and would > > hopefully follow the same naming pattern. > > > > To be clear, I'm not arguing that keeping the tests separate is wrong. > > I'm arguing that if we do that, we should also make some adjustments to > > keep everything clean and tidy. > > > > Understood, and thank you for bringing it up. No problem. And thank you for not taking it the wrong way :) > So how about we keep Kuan-Wei's fix as it is and move the > refcount_interrupt_test.c file into lib/tests/? It's more clean and tidy > to me this way. Thoughts? I'm fine with taking Kuan-Wei's patch as it is. It fixes a real problem, and the test code is already there (in kernel/irq/), it's not like the patch is putting it there. Meanwhile, we can keep discussing to find a better home for the test code and move it in a future patch. I'll send a r-b tag separately. > > > But yes, I agree Kuan-Wei's fix is needed. > > > > Yes, I agree, those unit tests must not be gated by KUNIT alone, so > > something must be done to fix it. > > > > > > Ironically, both the issue that this patch is trying to fix and my > > > > question were raised by sashiko here: > > > > https://lore.kernel.org/all/20260605055315.3E96E1F00893@smtp.kernel.org/ > > > > > > > > > diff --git a/kernel/irq/Kconfig b/kernel/irq/Kconfig > > > > > index 05cba4e16dad..6923f37eaab4 100644 > > > > > --- a/kernel/irq/Kconfig > > > > > +++ b/kernel/irq/Kconfig > > > > > @@ -150,6 +150,18 @@ config IRQ_KUNIT_TEST > > > > > > > > > > If unsure, say N. > > > > > > > > > > +config REFCOUNT_INTERRUPT_KUNIT_TEST > > > > > + tristate "Test refcounted interrupt enable/disable" if !KUNIT_ALL_TESTS > > > > > + depends on KUNIT > > > > > + default KUNIT_ALL_TESTS > > > > > + help > > > > > + This builds the kunit tests for the refcounted interrupt > > > > > + infrastructure. It verifies the correctness of single, nested, > > > > > + and multiple interrupt enable/disable state changes and ensures > > > > > + that the underlying reference counting mechanisms work as expected. > > > > > + > > > > > + If unsure, say N. > > > > > + > > > > > endmenu > > > > > > > > > > config GENERIC_IRQ_MULTI_HANDLER > > > > > diff --git a/kernel/irq/Makefile b/kernel/irq/Makefile > > > > > index 44c4d6fc502a..0e5df962a149 100644 > > > > > --- a/kernel/irq/Makefile > > > > > +++ b/kernel/irq/Makefile > > > > > @@ -16,4 +16,4 @@ obj-$(CONFIG_SMP) += affinity.o > > > > > obj-$(CONFIG_GENERIC_IRQ_DEBUGFS) += debugfs.o > > > > > obj-$(CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR) += matrix.o > > > > > obj-$(CONFIG_IRQ_KUNIT_TEST) += irq_test.o > > > > > -obj-$(CONFIG_KUNIT) += refcount_interrupt_test.o > > > > > +obj-$(CONFIG_REFCOUNT_INTERRUPT_KUNIT_TEST) += refcount_interrupt_test.o > -- Best regards, Radu ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] irq: Make refcount_interrupt kunit test selectable 2026-08-24 15:02 ` Radu Rendec @ 2026-08-25 14:09 ` Boqun Feng 0 siblings, 0 replies; 10+ messages in thread From: Boqun Feng @ 2026-08-25 14:09 UTC (permalink / raw) To: Radu Rendec Cc: Kuan-Wei Chiu, tglx, peterz, lyude, jserv, marscheng, eleanor15x, linux-kernel On Mon, Aug 24, 2026 at 11:02:26AM -0400, Radu Rendec wrote: > On Sun, 2026-08-23 at 22:23 -0700, Boqun Feng wrote: > > On Sun, Aug 23, 2026 at 05:52:24PM -0400, Radu Rendec wrote: > > > On Sun, 2026-08-23 at 14:08 -0700, Boqun Feng wrote: > > > > On Sun, Aug 23, 2026 at 04:46:23PM -0400, Radu Rendec wrote: > > > > > On Sun, 2026-08-23 at 17:17 +0000, Kuan-Wei Chiu wrote: > > > > > > Currently, refcount_interrupt_test is built unconditionally when > > > > > > CONFIG_KUNIT is enabled, causing it to run unexpectedly during boot. > > > > > > > > > > > > Fix this by introducing CONFIG_REFCOUNT_INTERRUPT_KUNIT_TEST so the > > > > > > test can be configured independently, following standard kunit > > > > > > practices. > > > > > > > > > > > > Fixes: 07a88e2bcd5b ("irq: Add KUnit test for refcounted interrupt enable/disable") > > > > > > Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com> > > > > > > --- > > > > > > kernel/irq/Kconfig | 12 ++++++++++++ > > > > > > kernel/irq/Makefile | 2 +- > > > > > > 2 files changed, 13 insertions(+), 1 deletion(-) > > > > > > > > > > Can someone please explain me why this needs to be a separate unit test > > > > > in the first place and can't be integrated into the (previously) > > > > > existing unit test gated by IRQ_KUNIT_TEST? > > > > > > > > > > > > > If you look at the irq_test.c, you will find that it primarily tests the > > > > {request,disable,enable}_irq() API (i.e. allocating IRQ vectors and > > > > enabling and disabling them), which is not the same scope as > > > > local_interrupt_{disable,enable}() (i.e. operating the CPU irq disabling > > > > status), so it makes sense to have a separate test case. > > > > > > Thanks! If we want to keep the unit tests separated/grouped by scope, > > > then yes, it makes sense for sure. What I don't like about this is: > > > * The naming of the two config options is inconsistent: IRQ_KUNIT_TEST > > > and REFCOUNT_INTERRUPT_KUNIT_TEST. > > > * The naming and description of the older test become misleading. The > > > way they are formulated, I would expect them to test "everything > > > related to IRQ" but now we have a separate option (and kunit test) > > > dedicated to the refcount stuff. > > > > > > > These are valid points. However, I think the "inconsistency" comes from > > refcount_interrupt_test.c being in kernel/irq/. IRQ management (code in > > kernel/irq/) and IRQ disabling/enabling are very different things to me > > I agree, they are different indeed, which is a good reason to keep the > tests separated as you pointed out. > > > (for example include/linux/irqflags.h is not listed in the "IRQ > > SUBSYSTEM" entry). > > It's not, and neither are a bunch of other IRQ related header files in > include/linux/ (get_maintainer.pl returns just the generic linux-kernel > mailing list). To me, that looks more like an omission, because it > means they have no maintainer. > > > IMO, refcount_interrupt_test.c should be moved into > > lib/tests/. > > I'm not sure about that. I looked, and and the tests in lib/tests/ are > for the stuff that's implemented in lib/*.c. On the other hand, most of Make sense. > the IRQ refcount code is in include/linux/interrupt_rc.h, with some > bits in kernel/softirq.c (e.g. the per-cpu state variable). If the IRQ > refcount code hadn't consisted of mostly static inline functions, where > would that code have been added? Still kernel/softirq.c? I'm thinking Yeah, I think that's the place (for example, local_interrupt_disable_state is defined here). > the corresponding unit tests belong in the same place, whatever that > is. Assuming kernel/softirq.c, I would have suggested to put the unit > tests in kernel/tests/, but it doesn't exist :) Right, I need to check whether we have other unit tests for kernel/ and maybe start a discussion on where to put them for now and future. > > > > If they must be separated/grouped by scope, I would find it much nicer > > > and less confusing if they were called something like: > > > IRQ_MANAGEMENT_KUNIT_TEST and > > > IRQ_REFCOUNT_KUNIT_TEST, > > > and also the corresponding .c files were somewhat consistent with the > > > Kconfig option names. The description of the older test would have to > > > be updated to make it clear that it's not just "everything IRQ". > > > > > > In that scenario, new kunit test(s) related to different aspects of the > > > IRQ subsystem would get their own Kconfig option and file, and would > > > hopefully follow the same naming pattern. > > > > > > To be clear, I'm not arguing that keeping the tests separate is wrong. > > > I'm arguing that if we do that, we should also make some adjustments to > > > keep everything clean and tidy. > > > > > > > Understood, and thank you for bringing it up. > > No problem. And thank you for not taking it the wrong way :) > Of course! Appreciate your input! > > So how about we keep Kuan-Wei's fix as it is and move the > > refcount_interrupt_test.c file into lib/tests/? It's more clean and tidy > > to me this way. Thoughts? > > I'm fine with taking Kuan-Wei's patch as it is. It fixes a real > problem, and the test code is already there (in kernel/irq/), it's not > like the patch is putting it there. Meanwhile, we can keep discussing > to find a better home for the test code and move it in a future patch. > I'll send a r-b tag separately. > Thank you! Regards, Boqun > > > > But yes, I agree Kuan-Wei's fix is needed. > > > > > > Yes, I agree, those unit tests must not be gated by KUNIT alone, so > > > something must be done to fix it. > > > > > > > > Ironically, both the issue that this patch is trying to fix and my > > > > > question were raised by sashiko here: > > > > > https://lore.kernel.org/all/20260605055315.3E96E1F00893@smtp.kernel.org/ > > > > > > > > > > > diff --git a/kernel/irq/Kconfig b/kernel/irq/Kconfig > > > > > > index 05cba4e16dad..6923f37eaab4 100644 > > > > > > --- a/kernel/irq/Kconfig > > > > > > +++ b/kernel/irq/Kconfig > > > > > > @@ -150,6 +150,18 @@ config IRQ_KUNIT_TEST > > > > > > > > > > > > If unsure, say N. > > > > > > > > > > > > +config REFCOUNT_INTERRUPT_KUNIT_TEST > > > > > > + tristate "Test refcounted interrupt enable/disable" if !KUNIT_ALL_TESTS > > > > > > + depends on KUNIT > > > > > > + default KUNIT_ALL_TESTS > > > > > > + help > > > > > > + This builds the kunit tests for the refcounted interrupt > > > > > > + infrastructure. It verifies the correctness of single, nested, > > > > > > + and multiple interrupt enable/disable state changes and ensures > > > > > > + that the underlying reference counting mechanisms work as expected. > > > > > > + > > > > > > + If unsure, say N. > > > > > > + > > > > > > endmenu > > > > > > > > > > > > config GENERIC_IRQ_MULTI_HANDLER > > > > > > diff --git a/kernel/irq/Makefile b/kernel/irq/Makefile > > > > > > index 44c4d6fc502a..0e5df962a149 100644 > > > > > > --- a/kernel/irq/Makefile > > > > > > +++ b/kernel/irq/Makefile > > > > > > @@ -16,4 +16,4 @@ obj-$(CONFIG_SMP) += affinity.o > > > > > > obj-$(CONFIG_GENERIC_IRQ_DEBUGFS) += debugfs.o > > > > > > obj-$(CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR) += matrix.o > > > > > > obj-$(CONFIG_IRQ_KUNIT_TEST) += irq_test.o > > > > > > -obj-$(CONFIG_KUNIT) += refcount_interrupt_test.o > > > > > > +obj-$(CONFIG_REFCOUNT_INTERRUPT_KUNIT_TEST) += refcount_interrupt_test.o > > > > -- > Best regards, > Radu ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] irq: Make refcount_interrupt kunit test selectable 2026-08-23 17:17 [PATCH] irq: Make refcount_interrupt kunit test selectable Kuan-Wei Chiu 2026-08-23 20:46 ` Radu Rendec @ 2026-08-23 21:10 ` Boqun Feng 2026-08-24 15:14 ` Radu Rendec 2026-08-25 20:11 ` lyude 3 siblings, 0 replies; 10+ messages in thread From: Boqun Feng @ 2026-08-23 21:10 UTC (permalink / raw) To: Kuan-Wei Chiu Cc: tglx, peterz, lyude, radu, jserv, marscheng, eleanor15x, linux-kernel On Sun, Aug 23, 2026 at 05:17:21PM +0000, Kuan-Wei Chiu wrote: > Currently, refcount_interrupt_test is built unconditionally when > CONFIG_KUNIT is enabled, causing it to run unexpectedly during boot. > > Fix this by introducing CONFIG_REFCOUNT_INTERRUPT_KUNIT_TEST so the > test can be configured independently, following standard kunit > practices. > Sorry about this.. > Fixes: 07a88e2bcd5b ("irq: Add KUnit test for refcounted interrupt enable/disable") > Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com> Reviewed-by: Boqun Feng <boqun@kernel.org> Regards, Boqun > --- > kernel/irq/Kconfig | 12 ++++++++++++ > kernel/irq/Makefile | 2 +- > 2 files changed, 13 insertions(+), 1 deletion(-) > > diff --git a/kernel/irq/Kconfig b/kernel/irq/Kconfig > index 05cba4e16dad..6923f37eaab4 100644 > --- a/kernel/irq/Kconfig > +++ b/kernel/irq/Kconfig > @@ -150,6 +150,18 @@ config IRQ_KUNIT_TEST > > If unsure, say N. > > +config REFCOUNT_INTERRUPT_KUNIT_TEST > + tristate "Test refcounted interrupt enable/disable" if !KUNIT_ALL_TESTS > + depends on KUNIT > + default KUNIT_ALL_TESTS > + help > + This builds the kunit tests for the refcounted interrupt > + infrastructure. It verifies the correctness of single, nested, > + and multiple interrupt enable/disable state changes and ensures > + that the underlying reference counting mechanisms work as expected. > + > + If unsure, say N. > + > endmenu > > config GENERIC_IRQ_MULTI_HANDLER > diff --git a/kernel/irq/Makefile b/kernel/irq/Makefile > index 44c4d6fc502a..0e5df962a149 100644 > --- a/kernel/irq/Makefile > +++ b/kernel/irq/Makefile > @@ -16,4 +16,4 @@ obj-$(CONFIG_SMP) += affinity.o > obj-$(CONFIG_GENERIC_IRQ_DEBUGFS) += debugfs.o > obj-$(CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR) += matrix.o > obj-$(CONFIG_IRQ_KUNIT_TEST) += irq_test.o > -obj-$(CONFIG_KUNIT) += refcount_interrupt_test.o > +obj-$(CONFIG_REFCOUNT_INTERRUPT_KUNIT_TEST) += refcount_interrupt_test.o > -- > 2.55.0.766.g2966f0265a-goog > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] irq: Make refcount_interrupt kunit test selectable 2026-08-23 17:17 [PATCH] irq: Make refcount_interrupt kunit test selectable Kuan-Wei Chiu 2026-08-23 20:46 ` Radu Rendec 2026-08-23 21:10 ` Boqun Feng @ 2026-08-24 15:14 ` Radu Rendec 2026-08-25 20:11 ` lyude 3 siblings, 0 replies; 10+ messages in thread From: Radu Rendec @ 2026-08-24 15:14 UTC (permalink / raw) To: Kuan-Wei Chiu, tglx, boqun, peterz, lyude Cc: jserv, marscheng, eleanor15x, linux-kernel On Sun, 2026-08-23 at 17:17 +0000, Kuan-Wei Chiu wrote: > Currently, refcount_interrupt_test is built unconditionally when > CONFIG_KUNIT is enabled, causing it to run unexpectedly during boot. > > Fix this by introducing CONFIG_REFCOUNT_INTERRUPT_KUNIT_TEST so the > test can be configured independently, following standard kunit > practices. > > Fixes: 07a88e2bcd5b ("irq: Add KUnit test for refcounted interrupt enable/disable") > Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com> > --- > kernel/irq/Kconfig | 12 ++++++++++++ > kernel/irq/Makefile | 2 +- > 2 files changed, 13 insertions(+), 1 deletion(-) > > diff --git a/kernel/irq/Kconfig b/kernel/irq/Kconfig > index 05cba4e16dad..6923f37eaab4 100644 > --- a/kernel/irq/Kconfig > +++ b/kernel/irq/Kconfig > @@ -150,6 +150,18 @@ config IRQ_KUNIT_TEST > > If unsure, say N. > > +config REFCOUNT_INTERRUPT_KUNIT_TEST > + tristate "Test refcounted interrupt enable/disable" if !KUNIT_ALL_TESTS > + depends on KUNIT > + default KUNIT_ALL_TESTS > + help > + This builds the kunit tests for the refcounted interrupt > + infrastructure. It verifies the correctness of single, nested, > + and multiple interrupt enable/disable state changes and ensures > + that the underlying reference counting mechanisms work as expected. > + > + If unsure, say N. > + > endmenu > > config GENERIC_IRQ_MULTI_HANDLER > diff --git a/kernel/irq/Makefile b/kernel/irq/Makefile > index 44c4d6fc502a..0e5df962a149 100644 > --- a/kernel/irq/Makefile > +++ b/kernel/irq/Makefile > @@ -16,4 +16,4 @@ obj-$(CONFIG_SMP) += affinity.o > obj-$(CONFIG_GENERIC_IRQ_DEBUGFS) += debugfs.o > obj-$(CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR) += matrix.o > obj-$(CONFIG_IRQ_KUNIT_TEST) += irq_test.o > -obj-$(CONFIG_KUNIT) += refcount_interrupt_test.o > +obj-$(CONFIG_REFCOUNT_INTERRUPT_KUNIT_TEST) += refcount_interrupt_test.o Reviewed-by: Radu Rendec <radu@rendec.net> ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] irq: Make refcount_interrupt kunit test selectable 2026-08-23 17:17 [PATCH] irq: Make refcount_interrupt kunit test selectable Kuan-Wei Chiu ` (2 preceding siblings ...) 2026-08-24 15:14 ` Radu Rendec @ 2026-08-25 20:11 ` lyude 3 siblings, 0 replies; 10+ messages in thread From: lyude @ 2026-08-25 20:11 UTC (permalink / raw) To: Kuan-Wei Chiu, tglx, boqun, peterz Cc: radu, jserv, marscheng, eleanor15x, linux-kernel Reviewed-by: Lyude Paul <lyude@redhat.com> On Sun, 2026-08-23 at 17:17 +0000, Kuan-Wei Chiu wrote: > Currently, refcount_interrupt_test is built unconditionally when > CONFIG_KUNIT is enabled, causing it to run unexpectedly during boot. > > Fix this by introducing CONFIG_REFCOUNT_INTERRUPT_KUNIT_TEST so the > test can be configured independently, following standard kunit > practices. > > Fixes: 07a88e2bcd5b ("irq: Add KUnit test for refcounted interrupt > enable/disable") > Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com> > --- > kernel/irq/Kconfig | 12 ++++++++++++ > kernel/irq/Makefile | 2 +- > 2 files changed, 13 insertions(+), 1 deletion(-) > > diff --git a/kernel/irq/Kconfig b/kernel/irq/Kconfig > index 05cba4e16dad..6923f37eaab4 100644 > --- a/kernel/irq/Kconfig > +++ b/kernel/irq/Kconfig > @@ -150,6 +150,18 @@ config IRQ_KUNIT_TEST > > If unsure, say N. > > +config REFCOUNT_INTERRUPT_KUNIT_TEST > + tristate "Test refcounted interrupt enable/disable" if > !KUNIT_ALL_TESTS > + depends on KUNIT > + default KUNIT_ALL_TESTS > + help > + This builds the kunit tests for the refcounted interrupt > + infrastructure. It verifies the correctness of single, > nested, > + and multiple interrupt enable/disable state changes and > ensures > + that the underlying reference counting mechanisms work as > expected. > + > + If unsure, say N. > + > endmenu > > config GENERIC_IRQ_MULTI_HANDLER > diff --git a/kernel/irq/Makefile b/kernel/irq/Makefile > index 44c4d6fc502a..0e5df962a149 100644 > --- a/kernel/irq/Makefile > +++ b/kernel/irq/Makefile > @@ -16,4 +16,4 @@ obj-$(CONFIG_SMP) += affinity.o > obj-$(CONFIG_GENERIC_IRQ_DEBUGFS) += debugfs.o > obj-$(CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR) += matrix.o > obj-$(CONFIG_IRQ_KUNIT_TEST) += irq_test.o > -obj-$(CONFIG_KUNIT) += refcount_interrupt_test.o > +obj-$(CONFIG_REFCOUNT_INTERRUPT_KUNIT_TEST) += > refcount_interrupt_test.o ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2026-08-25 20:11 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-08-23 17:17 [PATCH] irq: Make refcount_interrupt kunit test selectable Kuan-Wei Chiu 2026-08-23 20:46 ` Radu Rendec 2026-08-23 21:08 ` Boqun Feng 2026-08-23 21:52 ` Radu Rendec 2026-08-24 5:23 ` Boqun Feng 2026-08-24 15:02 ` Radu Rendec 2026-08-25 14:09 ` Boqun Feng 2026-08-23 21:10 ` Boqun Feng 2026-08-24 15:14 ` Radu Rendec 2026-08-25 20:11 ` lyude
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).