Re: [PATCH v7 4/5] drm: Suppress intentional warning backtraces in scaling unit tests
From: Jani Nikula
Date: Tue Apr 21 2026 - 07:50:40 EST
On Tue, 21 Apr 2026, Albert Esteve <aesteve@xxxxxxxxxx> wrote:
> On Mon, Apr 20, 2026 at 4:47 PM Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
>>
>> On Mon, Apr 20, 2026 at 02:28:06PM +0200, Albert Esteve wrote:
>> > From: Guenter Roeck <linux@xxxxxxxxxxxx>
>> >
>> > The drm_test_rect_calc_hscale and drm_test_rect_calc_vscale unit tests
>> > intentionally trigger warning backtraces by providing bad parameters to
>> > the tested functions. What is tested is the return value, not the existence
>> > of a warning backtrace. Suppress the backtraces to avoid clogging the
>> > kernel log and distraction from real problems.
>> >
>> > Tested-by: Linux Kernel Functional Testing <lkft@xxxxxxxxxx>
>> > Acked-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
>> > Acked-by: Maíra Canal <mcanal@xxxxxxxxxx>
>> > Cc: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx>
>> > Cc: David Airlie <airlied@xxxxxxxxx>
>> > Cc: Daniel Vetter <daniel@xxxxxxxx>
>> > Signed-off-by: Guenter Roeck <linux@xxxxxxxxxxxx>
>> > Signed-off-by: Alessandro Carminati <acarmina@xxxxxxxxxx>
>> > Signed-off-by: Albert Esteve <aesteve@xxxxxxxxxx>
>> > ---
>> > drivers/gpu/drm/tests/drm_rect_test.c | 14 ++++++++++++++
>> > 1 file changed, 14 insertions(+)
>> >
>> > diff --git a/drivers/gpu/drm/tests/drm_rect_test.c b/drivers/gpu/drm/tests/drm_rect_test.c
>> > index 17e1f34b76101..1dd7d819165e7 100644
>> > --- a/drivers/gpu/drm/tests/drm_rect_test.c
>> > +++ b/drivers/gpu/drm/tests/drm_rect_test.c
>> > @@ -409,8 +409,15 @@ static void drm_test_rect_calc_hscale(struct kunit *test)
>> > const struct drm_rect_scale_case *params = test->param_value;
>> > int scaling_factor;
>> >
>> > + /*
>> > + * drm_rect_calc_hscale() generates a warning backtrace whenever bad
>> > + * parameters are passed to it. This affects all unit tests with an
>> > + * error code in expected_scaling_factor.
>> > + */
>> > + KUNIT_START_SUPPRESSED_WARNING(test);
>> > scaling_factor = drm_rect_calc_hscale(¶ms->src, ¶ms->dst,
>> > params->min_range, params->max_range);
>> > + KUNIT_END_SUPPRESSED_WARNING(test);
>>
>> Would not something like:
>>
>> scoped_kunit_suppress() {
>> scaling_factor = drm_rect_calc_hscale(¶ms->src, ¶ms->dst,
>> params->min_range, params->max_range);
>> }
>>
>> be better?
>
> Since KUnit already has a few macros in its API it didn't occur to me.
> Good idea, I like it. And I guess the scope approach matches well with
> your __cleanup comment in the first patch. If no one opposes, I will
> work toward that pattern for the next version.
There's a catch with kunit and __cleanup and thus (scoped) guards. Kunit
runs in ktreads, asserts lead to kthread_exit() and the __cleanup won't
be called.
Warning suppression being part of kunit infrastructure, asserts can and
should end the suppression too. But setting the example (scoped) guards
are safe in kunit tests in general feels like a trap waiting to happen.
BR,
Jani.
>
>>
>> Also, how can you stand all this screaming in the code?
>>
>
> Again, KUnit already contains many macros, so this use didn't register
> as such. Now I will not be able to unsee it.
>
>
--
Jani Nikula, Intel