[Intel-xe] [PATCH 3/6] drm/xe: Fix kunit integration due to missing prototypes
Matthew Auld
matthew.william.auld at gmail.com
Wed Feb 22 17:10:55 UTC 2023
On Wed, 22 Feb 2023 at 14:59, Lucas De Marchi <lucas.demarchi at intel.com> wrote:
>
> On Wed, Feb 22, 2023 at 10:02:08AM +0000, Matthew Auld wrote:
> >On Tue, 21 Feb 2023 at 23:34, Lucas De Marchi <lucas.demarchi at intel.com> wrote:
> >>
> >> In order to avoid -Werror=missing-prototypes, add the prototypes and
> >> move the functions to the end of the file, surrounded by
> >> `#if IS_ENABLED(CONFIG_DRM_XE_KUNIT_TEST)`.
> >
> >Is everything under tests/ not excluded from compilation when !XE_KUNIT_TEST?
>
> yes, except the ifdef is not in tests/. Example:
> drivers/gpu/drm/xe/tests/xe_bo.c
AFAICT xe/tests is only compiled if XE_KUNIT_TEST is enabled (looking
at the Makefile). tests/xe_bo.c is included at the bottom of xe_bo.c
but that is also wrapped in ifdef. So not seeing why we need to add
the ifdef stuff directly in tests/xe_bo.c, for example.
>
> The way the kunit tests in xe are split is: each .o in tests/ will
> create a separate module. In order to test a function like we are
> doing, the function needs to be declared !static and exported so the
> other module can call it.
>
> There are other possible ways to test functions on a different
> compilation unit: https://kunit.dev/third_party/kernel/docs/tips.html?highlight=static%20function#testing-static-functions
> I'm not so familiar with kunit yet to be able to say which one
> is better for our case, so I just went with the easy fix.
>
> +Thomas
>
> Lucas De Marchi
>
> >
> >>
> >> Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>
> >> ---
> >> drivers/gpu/drm/xe/tests/xe_bo.c | 54 +++++++++++++++------------
> >> drivers/gpu/drm/xe/tests/xe_dma_buf.c | 2 +
> >> drivers/gpu/drm/xe/tests/xe_migrate.c | 6 +++
> >> 3 files changed, 39 insertions(+), 23 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/xe/tests/xe_bo.c b/drivers/gpu/drm/xe/tests/xe_bo.c
> >> index 87ac21cc8ca9..2c94ddaacda6 100644
> >> --- a/drivers/gpu/drm/xe/tests/xe_bo.c
> >> +++ b/drivers/gpu/drm/xe/tests/xe_bo.c
> >> @@ -141,29 +141,6 @@ static void ccs_test_run_gt(struct xe_device *xe, struct xe_gt *gt,
> >> xe_bo_put(bo);
> >> }
> >>
> >> -static int ccs_test_run_device(struct xe_device *xe)
> >> -{
> >> - struct kunit *test = xe_cur_kunit();
> >> - struct xe_gt *gt;
> >> - int id;
> >> -
> >> - if (!xe_device_has_flat_ccs(xe)) {
> >> - kunit_info(test, "Skipping non-flat-ccs device.\n");
> >> - return 0;
> >> - }
> >> -
> >> - for_each_gt(gt, xe, id)
> >> - ccs_test_run_gt(xe, gt, test);
> >> -
> >> - return 0;
> >> -}
> >> -
> >> -void xe_ccs_migrate_kunit(struct kunit *test)
> >> -{
> >> - xe_call_for_each_device(ccs_test_run_device);
> >> -}
> >> -EXPORT_SYMBOL(xe_ccs_migrate_kunit);
> >> -
> >> static int evict_test_run_gt(struct xe_device *xe, struct xe_gt *gt, struct kunit *test)
> >> {
> >> struct xe_bo *bo, *external;
> >> @@ -278,6 +255,8 @@ static int evict_test_run_gt(struct xe_device *xe, struct xe_gt *gt, struct kuni
> >> return 0;
> >> }
> >>
> >> +#if IS_ENABLED(CONFIG_DRM_XE_KUNIT_TEST)
> >> +
> >> static int evict_test_run_device(struct xe_device *xe)
> >> {
> >> struct kunit *test = xe_cur_kunit();
> >> @@ -296,8 +275,37 @@ static int evict_test_run_device(struct xe_device *xe)
> >> return 0;
> >> }
> >>
> >> +void xe_bo_evict_kunit(struct kunit *test);
> >> +
> >> void xe_bo_evict_kunit(struct kunit *test)
> >> {
> >> xe_call_for_each_device(evict_test_run_device);
> >> }
> >> EXPORT_SYMBOL(xe_bo_evict_kunit);
> >> +
> >> +static int ccs_test_run_device(struct xe_device *xe)
> >> +{
> >> + struct kunit *test = xe_cur_kunit();
> >> + struct xe_gt *gt;
> >> + int id;
> >> +
> >> + if (!xe_device_has_flat_ccs(xe)) {
> >> + kunit_info(test, "Skipping non-flat-ccs device.\n");
> >> + return 0;
> >> + }
> >> +
> >> + for_each_gt(gt, xe, id)
> >> + ccs_test_run_gt(xe, gt, test);
> >> +
> >> + return 0;
> >> +}
> >> +
> >> +void xe_ccs_migrate_kunit(struct kunit *test);
> >> +
> >> +void xe_ccs_migrate_kunit(struct kunit *test)
> >> +{
> >> + xe_call_for_each_device(ccs_test_run_device);
> >> +}
> >> +EXPORT_SYMBOL(xe_ccs_migrate_kunit);
> >> +
> >> +#endif
> >> diff --git a/drivers/gpu/drm/xe/tests/xe_dma_buf.c b/drivers/gpu/drm/xe/tests/xe_dma_buf.c
> >> index 615d22e3f731..d8ad135d0e04 100644
> >> --- a/drivers/gpu/drm/xe/tests/xe_dma_buf.c
> >> +++ b/drivers/gpu/drm/xe/tests/xe_dma_buf.c
> >> @@ -252,6 +252,8 @@ static int dma_buf_run_device(struct xe_device *xe)
> >> return 0;
> >> }
> >>
> >> +void xe_dma_buf_kunit(struct kunit *test);
> >> +
> >> void xe_dma_buf_kunit(struct kunit *test)
> >> {
> >> xe_call_for_each_device(dma_buf_run_device);
> >> diff --git a/drivers/gpu/drm/xe/tests/xe_migrate.c b/drivers/gpu/drm/xe/tests/xe_migrate.c
> >> index 03a60d5b42f1..7be0c2543916 100644
> >> --- a/drivers/gpu/drm/xe/tests/xe_migrate.c
> >> +++ b/drivers/gpu/drm/xe/tests/xe_migrate.c
> >> @@ -352,6 +352,8 @@ static void xe_migrate_sanity_test(struct xe_migrate *m, struct kunit *test)
> >> xe_bo_vunmap(m->pt_bo);
> >> }
> >>
> >> +#if IS_ENABLED(CONFIG_DRM_XE_KUNIT_TEST)
> >> +
> >> static int migrate_test_run_device(struct xe_device *xe)
> >> {
> >> struct kunit *test = xe_cur_kunit();
> >> @@ -371,8 +373,12 @@ static int migrate_test_run_device(struct xe_device *xe)
> >> return 0;
> >> }
> >>
> >> +void xe_migrate_sanity_kunit(struct kunit *test);
> >> +
> >> void xe_migrate_sanity_kunit(struct kunit *test)
> >> {
> >> xe_call_for_each_device(migrate_test_run_device);
> >> }
> >> EXPORT_SYMBOL(xe_migrate_sanity_kunit);
> >> +
> >> +#endif
> >> --
> >> 2.39.0
> >>
More information about the Intel-xe
mailing list