Re: [PATCH v5 4/9] drm: selftest: convert drm_format selftest to KUnit

From: Daniel Latypov
Date: Thu Jul 14 2022 - 20:03:25 EST


On Thu, Jul 14, 2022 at 4:51 PM Guenter Roeck <linux@xxxxxxxxxxxx> wrote:
>
> On Fri, Jul 08, 2022 at 05:30:47PM -0300, Maíra Canal wrote:
> > Considering the current adoption of the KUnit framework, convert the
> > DRM format selftest to the KUnit API.
> >
> > Tested-by: David Gow <davidgow@xxxxxxxxxx>
> > Acked-by: Daniel Latypov <dlatypov@xxxxxxxxxx>
> > Reviewed-by: Javier Martinez Canillas <javierm@xxxxxxxxxx>
> > Signed-off-by: Maíra Canal <maira.canal@xxxxxx>
>
> This patch results in:
>
> Building powerpc:allmodconfig ... failed
> --------------
> Error log:
> drivers/gpu/drm/tests/drm_format_test.c: In function 'igt_check_drm_format_min_pitch':
> drivers/gpu/drm/tests/drm_format_test.c:271:1: error: the frame size of 3712 bytes is larger than 2048 bytes
>
> presumably due to function nesting.

This can happen when there's a lot of KUNIT_EXPECT_* calls in a single function.
See [1] for some related context.
There were a number of patches that went into 5.18 ([2] and others) to
try and mitigate this, but it's not always enough.

Ideally the compiler would see that the stack-local variables used in
these macros don't need to stick around, but it doesn't always
happen...
One workaround would be to split up the test case functions into smaller chunks.

[1] https://lore.kernel.org/linux-kselftest/20210929212713.1213476-1-brendanhiggins@xxxxxxxxxx/
[2] https://lore.kernel.org/linux-kselftest/20220113165931.451305-1-dlatypov@xxxxxxxxxx/

Daniel