[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <aKduHcYINJvMsB58@google.com>
Date: Thu, 21 Aug 2025 12:06:05 -0700
From: Brian Norris <briannorris@...omium.org>
To: Guenter Roeck <linux@...ck-us.net>
Cc: Thomas Gleixner <tglx@...utronix.de>, David Gow <davidgow@...gle.com>,
linux-kernel@...r.kernel.org, kunit-dev@...glegroups.com
Subject: Re: [PATCH 0/6] genirq/test: Platform/architecture fixes
On Thu, Aug 21, 2025 at 10:02:52AM -0700, Guenter Roeck wrote:
> Build results:
> total: 162 pass: 162 fail: 0
> Qemu test results:
> total: 637 pass: 637 fail: 0
> Unit test results:
> pass: 640616 fail: 13
> Failed unit tests:
> arm64:imx8mp-evk:irq_cpuhotplug_test
> arm64:imx8mp-evk:irq_test_cases
> m68k:q800:irq_test_cases
> m68k:virt:irq_test_cases
>
> Individual failures:
>
> [ 32.613761] # irq_cpuhotplug_test: EXPECTATION FAILED at kernel/irq/irq_test.c:210
> [ 32.613761] Expected remove_cpu(1) == 0, but
> [ 32.613761] remove_cpu(1) == -16 (0xfffffffffffffff0)
> [ 32.621522] # irq_cpuhotplug_test: EXPECTATION FAILED at kernel/irq/irq_test.c:212
> [ 32.621522] Expected add_cpu(1) == 0, but
> [ 32.621522] add_cpu(1) == 1 (0x1)
> [ 32.630930] # irq_cpuhotplug_test: pass:0 fail:1 skip:0 total:1
I managed to get an imx8mp-evk setup running (both little and big
endian) and couldn't reproduce. But I'm guessing based on the logs that
we're racing with pci_call_probe(), which disables CPU hotplug
(cpu_hotplug_disable()) for its duration.
I'm not sure how to handle that.
1. I could just SKIP the test on EBUSY. But that'd make for flaky test
coverage.
2. Expose some method to block cpu_hotplug_disable() users temporarily.
3. Stop trying to do CPU hotplug in a unit test. (It's bordering on
"integration test"; but it's still useful IMO...)
4. Add an EBUSY retry loop? Or some other similar polling (if we had,
say, a cpu_hotplug_disabled() API).
> # irq_disable_depth_test: ASSERTION FAILED at kernel/irq/irq_test.c:53
> Expected virq >= 0, but
> virq == -12 (0xfffffffffffffff4)
> # irq_disable_depth_test: pass:0 fail:1 skip:0 total:1
> not ok 1 irq_disable_depth_test
> # irq_free_disabled_test: ASSERTION FAILED at kernel/irq/irq_test.c:53
> Expected virq >= 0, but
> virq == -12 (0xfffffffffffffff4)
> # irq_free_disabled_test: pass:0 fail:1 skip:0 total:1
We've discussed this one, and I have a fix (depends on SPARSE_IRQ).
Brian
Powered by blists - more mailing lists