On Fri, 19 Dec 2025 at 16:08, David Gow <[email protected]> wrote: > > The kunit_run_irq_test() helper allows a function to be run in hardirq > and softirq contexts (in addition to the task context). It does this by > running the user-provided function concurrently in the three contexts, > until either a timeout has expired or a number of iterations have > completed in the normal task context. > > However, on setups where the initialisation of the hardirq and softirq > contexts (or, indeed, the scheduling of those tasks) is significantly > slower than the function execution, it's possible for that number of > iterations to be exceeded before any runs in irq contexts actually > occur. This occurs with the polyval.test_polyval_preparekey_in_irqs > test, which runs 20000 iterations of the relatively fast preparekey > function, and therefore fails often under many UML, 32-bit arm, m68k and > other environments. > > Instead, ensure that the max_iterations limit counts executions in all > three contexts, and requires at least one of each. This will cause the > test to continue iterating until at least the irq contexts have been > tested, or the 1s wall-clock limit has been exceeded. This causes the > test to pass in all of my environments. > > In so doing, we also update the task counters to atomic ints, to better > match both the 'int' max_iterations input, and to ensure they are > correctly updated across contexts. > > Finally, we also fix a few potential assertion messages to be > less-specific to the original crypto usecases. > > Fixes: b41dc83f0790 ("kunit, lib/crypto: Move run_irq_test() to common > header") > Signed-off-by: David Gow <[email protected]> > --- > include/kunit/run-in-irq-context.h | 41 ++++++++++++++++++++---------- > 1 file changed, 28 insertions(+), 13 deletions(-) >
.. snip .. > @@ -85,6 +88,10 @@ static inline void kunit_run_irq_test(struct kunit *test, > bool (*func)(void *), > .test_specific_state = test_specific_state, > }; > unsigned long end_jiffies; > + int hardirq_calls, softirq_calls; > + bool allctx = false; > + > + max_iterations = 1; Whoops! Left this debug line in. v2 fixes it: https://lore.kernel.org/all/[email protected]/ -- David
smime.p7s
Description: S/MIME Cryptographic Signature
