[Intel-xe] [PATCH 3/6] drm/xe: Fix kunit integration due to missing prototypes

Lucas De Marchi lucas.demarchi at intel.com
Wed Feb 22 17:42:15 UTC 2023


On Wed, Feb 22, 2023 at 05:10:55PM +0000, Matthew Auld wrote:
>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.

ugh... I  read what I paste, sorry.

indeed, it shouldn't build that, so I think it's just the missing
prototype that I need to add. I will rework this patch.

thanks
Lucas De Marchi

>
>>
>> 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