All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] genirq/test: Fix depth tests on architectures with NOREQUEST by default.
@ 2025-08-16  9:45 David Gow
  2025-08-17 15:09 ` Guenter Roeck
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: David Gow @ 2025-08-16  9:45 UTC (permalink / raw)
  To: Brian Norris, Thomas Gleixner
  Cc: David Gow, Guenter Roeck, linux-kernel, kunit-dev

The new irq KUnit tests fail on some architectures (notably PowerPC and
32-bit ARM), as the request_irq() call fails due to the
ARCH_IRQ_INIT_FLAGS containing IRQ_NOREQUEST, yielding the following
errors:
[10:17:45]     # irq_free_disabled_test: EXPECTATION FAILED at kernel/irq/irq_test.c:88
[10:17:45]     Expected ret == 0, but
[10:17:45]         ret == -22 (0xffffffffffffffea)
[10:17:45]     # irq_free_disabled_test: EXPECTATION FAILED at kernel/irq/irq_test.c:90
[10:17:45]     Expected desc->depth == 0, but
[10:17:45]         desc->depth == 1 (0x1)
[10:17:45]     # irq_free_disabled_test: EXPECTATION FAILED at kernel/irq/irq_test.c:93
[10:17:45]     Expected desc->depth == 1, but
[10:17:45]         desc->depth == 2 (0x2)

If we clear IRQ_NOREQUEST from the desc, these tests now pass on arm and
powerpc.

Fixes: 66067c3c8a1e ("genirq: Add kunit tests for depth counts")
Signed-off-by: David Gow <davidgow@google.com>
---
 kernel/irq/irq_test.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/kernel/irq/irq_test.c b/kernel/irq/irq_test.c
index a75abebed7f2..e220e7b2fc18 100644
--- a/kernel/irq/irq_test.c
+++ b/kernel/irq/irq_test.c
@@ -54,6 +54,9 @@ static void irq_disable_depth_test(struct kunit *test)
 	desc = irq_to_desc(virq);
 	KUNIT_ASSERT_PTR_NE(test, desc, NULL);
 
+	/* On some architectures, IRQs are NOREQUEST | NOPROBE by default. */
+	irq_settings_clr_norequest(desc);
+
 	ret = request_irq(virq, noop_handler, 0, "test_irq", NULL);
 	KUNIT_EXPECT_EQ(test, ret, 0);
 
@@ -81,6 +84,9 @@ static void irq_free_disabled_test(struct kunit *test)
 	desc = irq_to_desc(virq);
 	KUNIT_ASSERT_PTR_NE(test, desc, NULL);
 
+	/* On some architectures, IRQs are NOREQUEST | NOPROBE by default. */
+	irq_settings_clr_norequest(desc);
+
 	ret = request_irq(virq, noop_handler, 0, "test_irq", NULL);
 	KUNIT_EXPECT_EQ(test, ret, 0);
 
@@ -120,6 +126,9 @@ static void irq_shutdown_depth_test(struct kunit *test)
 	desc = irq_to_desc(virq);
 	KUNIT_ASSERT_PTR_NE(test, desc, NULL);
 
+	/* On some architectures, IRQs are NOREQUEST | NOPROBE by default. */
+	irq_settings_clr_norequest(desc);
+
 	data = irq_desc_get_irq_data(desc);
 	KUNIT_ASSERT_PTR_NE(test, data, NULL);
 
@@ -180,6 +189,9 @@ static void irq_cpuhotplug_test(struct kunit *test)
 	desc = irq_to_desc(virq);
 	KUNIT_ASSERT_PTR_NE(test, desc, NULL);
 
+	/* On some architectures, IRQs are NOREQUEST | NOPROBE by default. */
+	irq_settings_clr_norequest(desc);
+
 	data = irq_desc_get_irq_data(desc);
 	KUNIT_ASSERT_PTR_NE(test, data, NULL);
 
-- 
2.51.0.rc1.167.g924127e9c0-goog


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] genirq/test: Fix depth tests on architectures with NOREQUEST by default.
  2025-08-16  9:45 [PATCH] genirq/test: Fix depth tests on architectures with NOREQUEST by default David Gow
@ 2025-08-17 15:09 ` Guenter Roeck
  2025-08-18 16:45 ` Brian Norris
  2025-09-03 15:12 ` [tip: irq/core] " tip-bot2 for David Gow
  2 siblings, 0 replies; 4+ messages in thread
From: Guenter Roeck @ 2025-08-17 15:09 UTC (permalink / raw)
  To: David Gow, Brian Norris, Thomas Gleixner; +Cc: linux-kernel, kunit-dev

On 8/16/25 02:45, David Gow wrote:
> The new irq KUnit tests fail on some architectures (notably PowerPC and
> 32-bit ARM), as the request_irq() call fails due to the
> ARCH_IRQ_INIT_FLAGS containing IRQ_NOREQUEST, yielding the following
> errors:
> [10:17:45]     # irq_free_disabled_test: EXPECTATION FAILED at kernel/irq/irq_test.c:88
> [10:17:45]     Expected ret == 0, but
> [10:17:45]         ret == -22 (0xffffffffffffffea)
> [10:17:45]     # irq_free_disabled_test: EXPECTATION FAILED at kernel/irq/irq_test.c:90
> [10:17:45]     Expected desc->depth == 0, but
> [10:17:45]         desc->depth == 1 (0x1)
> [10:17:45]     # irq_free_disabled_test: EXPECTATION FAILED at kernel/irq/irq_test.c:93
> [10:17:45]     Expected desc->depth == 1, but
> [10:17:45]         desc->depth == 2 (0x2)
> 
> If we clear IRQ_NOREQUEST from the desc, these tests now pass on arm and
> powerpc.
> 
> Fixes: 66067c3c8a1e ("genirq: Add kunit tests for depth counts")
> Signed-off-by: David Gow <davidgow@google.com>

This doesn't completely fix the problems with the code, but it is a start.

From:

Unit test results:
	pass: 640019 fail: 652

to:

Unit test results:
	pass: 640559 fail: 114

Above tests now pass for most architectures/platforms, so

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

Detailed test results are at https://kerneltests.org/builders in the "testing"
column in case anyone wants to have a look.

Guenter


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] genirq/test: Fix depth tests on architectures with NOREQUEST by default.
  2025-08-16  9:45 [PATCH] genirq/test: Fix depth tests on architectures with NOREQUEST by default David Gow
  2025-08-17 15:09 ` Guenter Roeck
@ 2025-08-18 16:45 ` Brian Norris
  2025-09-03 15:12 ` [tip: irq/core] " tip-bot2 for David Gow
  2 siblings, 0 replies; 4+ messages in thread
From: Brian Norris @ 2025-08-18 16:45 UTC (permalink / raw)
  To: David Gow; +Cc: Thomas Gleixner, Guenter Roeck, linux-kernel, kunit-dev

On Sat, Aug 16, 2025 at 05:45:28PM +0800, David Gow wrote:
> The new irq KUnit tests fail on some architectures (notably PowerPC and
> 32-bit ARM), as the request_irq() call fails due to the
> ARCH_IRQ_INIT_FLAGS containing IRQ_NOREQUEST, yielding the following
> errors:
> [10:17:45]     # irq_free_disabled_test: EXPECTATION FAILED at kernel/irq/irq_test.c:88
> [10:17:45]     Expected ret == 0, but
> [10:17:45]         ret == -22 (0xffffffffffffffea)
> [10:17:45]     # irq_free_disabled_test: EXPECTATION FAILED at kernel/irq/irq_test.c:90
> [10:17:45]     Expected desc->depth == 0, but
> [10:17:45]         desc->depth == 1 (0x1)
> [10:17:45]     # irq_free_disabled_test: EXPECTATION FAILED at kernel/irq/irq_test.c:93
> [10:17:45]     Expected desc->depth == 1, but
> [10:17:45]         desc->depth == 2 (0x2)
> 
> If we clear IRQ_NOREQUEST from the desc, these tests now pass on arm and
> powerpc.
> 
> Fixes: 66067c3c8a1e ("genirq: Add kunit tests for depth counts")
> Signed-off-by: David Gow <davidgow@google.com>

I was about to send essentially the same patch. Works for me.

Reviewed-by: Brian Norris <briannorris@chromium.org>
Tested-by: Brian Norris <briannorris@chromium.org>

tools/testing/kunit/kunit.py run 'irq_test_cases*' --arch arm \
          --qemu_args '-smp 2' --cross_compile arm-linux-gnueabi-
...
[09:44:15] Testing complete. Ran 4 tests: passed: 4


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [tip: irq/core] genirq/test: Fix depth tests on architectures with NOREQUEST by default.
  2025-08-16  9:45 [PATCH] genirq/test: Fix depth tests on architectures with NOREQUEST by default David Gow
  2025-08-17 15:09 ` Guenter Roeck
  2025-08-18 16:45 ` Brian Norris
@ 2025-09-03 15:12 ` tip-bot2 for David Gow
  2 siblings, 0 replies; 4+ messages in thread
From: tip-bot2 for David Gow @ 2025-09-03 15:12 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: David Gow, Thomas Gleixner, Guenter Roeck, Brian Norris, x86,
	linux-kernel, maz

The following commit has been merged into the irq/core branch of tip:

Commit-ID:     c9163915a93d40e32c4e4aeb942c0adcb190d72e
Gitweb:        https://git.kernel.org/tip/c9163915a93d40e32c4e4aeb942c0adcb190d72e
Author:        David Gow <davidgow@google.com>
AuthorDate:    Sat, 16 Aug 2025 17:45:28 +08:00
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Wed, 03 Sep 2025 17:04:51 +02:00

genirq/test: Fix depth tests on architectures with NOREQUEST by default.

The new irq KUnit tests fail on some architectures (notably PowerPC and
32-bit ARM), as the request_irq() call fails due to the ARCH_IRQ_INIT_FLAGS
containing IRQ_NOREQUEST, yielding the following errors:

[10:17:45]     # irq_free_disabled_test: EXPECTATION FAILED at kernel/irq/irq_test.c:88
[10:17:45]     Expected ret == 0, but
[10:17:45]         ret == -22 (0xffffffffffffffea)
[10:17:45]     # irq_free_disabled_test: EXPECTATION FAILED at kernel/irq/irq_test.c:90
[10:17:45]     Expected desc->depth == 0, but
[10:17:45]         desc->depth == 1 (0x1)
[10:17:45]     # irq_free_disabled_test: EXPECTATION FAILED at kernel/irq/irq_test.c:93
[10:17:45]     Expected desc->depth == 1, but
[10:17:45]         desc->depth == 2 (0x2)

By clearing IRQ_NOREQUEST from the interrupt descriptor, these tests now
pass on ARM and PowerPC.

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

---
 kernel/irq/irq_test.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/kernel/irq/irq_test.c b/kernel/irq/irq_test.c
index a75abeb..e220e7b 100644
--- a/kernel/irq/irq_test.c
+++ b/kernel/irq/irq_test.c
@@ -54,6 +54,9 @@ static void irq_disable_depth_test(struct kunit *test)
 	desc = irq_to_desc(virq);
 	KUNIT_ASSERT_PTR_NE(test, desc, NULL);
 
+	/* On some architectures, IRQs are NOREQUEST | NOPROBE by default. */
+	irq_settings_clr_norequest(desc);
+
 	ret = request_irq(virq, noop_handler, 0, "test_irq", NULL);
 	KUNIT_EXPECT_EQ(test, ret, 0);
 
@@ -81,6 +84,9 @@ static void irq_free_disabled_test(struct kunit *test)
 	desc = irq_to_desc(virq);
 	KUNIT_ASSERT_PTR_NE(test, desc, NULL);
 
+	/* On some architectures, IRQs are NOREQUEST | NOPROBE by default. */
+	irq_settings_clr_norequest(desc);
+
 	ret = request_irq(virq, noop_handler, 0, "test_irq", NULL);
 	KUNIT_EXPECT_EQ(test, ret, 0);
 
@@ -120,6 +126,9 @@ static void irq_shutdown_depth_test(struct kunit *test)
 	desc = irq_to_desc(virq);
 	KUNIT_ASSERT_PTR_NE(test, desc, NULL);
 
+	/* On some architectures, IRQs are NOREQUEST | NOPROBE by default. */
+	irq_settings_clr_norequest(desc);
+
 	data = irq_desc_get_irq_data(desc);
 	KUNIT_ASSERT_PTR_NE(test, data, NULL);
 
@@ -180,6 +189,9 @@ static void irq_cpuhotplug_test(struct kunit *test)
 	desc = irq_to_desc(virq);
 	KUNIT_ASSERT_PTR_NE(test, desc, NULL);
 
+	/* On some architectures, IRQs are NOREQUEST | NOPROBE by default. */
+	irq_settings_clr_norequest(desc);
+
 	data = irq_desc_get_irq_data(desc);
 	KUNIT_ASSERT_PTR_NE(test, data, NULL);
 

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2025-09-03 15:12 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-16  9:45 [PATCH] genirq/test: Fix depth tests on architectures with NOREQUEST by default David Gow
2025-08-17 15:09 ` Guenter Roeck
2025-08-18 16:45 ` Brian Norris
2025-09-03 15:12 ` [tip: irq/core] " tip-bot2 for David Gow

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.