[Intel-xe] [PATCH 1/3] drm/xe/kunit: Move fake pci data to test-priv
Matt Roper
matthew.d.roper at intel.com
Sat Nov 18 00:15:07 UTC 2023
On Fri, Nov 17, 2023 at 03:14:09PM -0800, Lucas De Marchi wrote:
> Instead of passing as parameter to xe_pci_fake_device_init(), use
> test->priv to pass parameters down the call stack. The main advantage is
> that then the data is readily available on other functions by using
> kunit_get_current_test().
>
> This is a preparation to fix the initialization of fake devices when
> they were supposed to be using GMD_ID.
>
> Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>
> ---
> drivers/gpu/drm/xe/tests/xe_pci.c | 16 +++++++++-------
> drivers/gpu/drm/xe/tests/xe_pci_test.h | 17 +++++------------
> drivers/gpu/drm/xe/tests/xe_rtp_test.c | 4 +++-
> drivers/gpu/drm/xe/tests/xe_wa_test.c | 7 ++++++-
> 4 files changed, 23 insertions(+), 21 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/tests/xe_pci.c b/drivers/gpu/drm/xe/tests/xe_pci.c
> index a40879da2fbe..d1bc029f7a13 100644
> --- a/drivers/gpu/drm/xe/tests/xe_pci.c
> +++ b/drivers/gpu/drm/xe/tests/xe_pci.c
> @@ -7,6 +7,7 @@
>
> #include "tests/xe_test.h"
>
> +#include <kunit/test-bug.h>
> #include <kunit/test.h>
> #include <kunit/visibility.h>
>
> @@ -106,14 +107,15 @@ void xe_call_for_each_media_ip(xe_media_fn xe_fn)
> }
> EXPORT_SYMBOL_IF_KUNIT(xe_call_for_each_media_ip);
>
> -int xe_pci_fake_device_init(struct xe_device *xe, enum xe_platform platform,
> - enum xe_subplatform subplatform)
> +int xe_pci_fake_device_init(struct xe_device *xe)
> {
> + struct kunit *test = kunit_get_current_test();
> + struct xe_pci_fake_data *data = test->priv;
> const struct pci_device_id *ent = pciidlist;
> const struct xe_device_desc *desc;
> const struct xe_subplatform_desc *subplatform_desc;
>
> - if (platform == XE_TEST_PLATFORM_ANY) {
> + if (!data) {
> desc = (const void *)ent->driver_data;
> subplatform_desc = NULL;
> goto done;
> @@ -121,14 +123,14 @@ int xe_pci_fake_device_init(struct xe_device *xe, enum xe_platform platform,
>
> for (ent = pciidlist; ent->device; ent++) {
> desc = (const void *)ent->driver_data;
> - if (desc->platform == platform)
> + if (desc->platform == data->platform)
> break;
> }
>
> if (!ent->device)
> return -ENODEV;
>
> - if (subplatform == XE_TEST_SUBPLATFORM_ANY) {
> + if (data->subplatform == XE_SUBPLATFORM_UNINITIALIZED) {
Is this case possible with any of our current tests? It doesn't look
like it is.
Anyway,
Reviewed-by: Matt Roper <matthew.d.roper at intel.com>
> subplatform_desc = desc->subplatforms;
> goto done;
> }
> @@ -136,10 +138,10 @@ int xe_pci_fake_device_init(struct xe_device *xe, enum xe_platform platform,
> for (subplatform_desc = desc->subplatforms;
> subplatform_desc && subplatform_desc->subplatform;
> subplatform_desc++)
> - if (subplatform_desc->subplatform == subplatform)
> + if (subplatform_desc->subplatform == data->subplatform)
> break;
>
> - if (subplatform != XE_SUBPLATFORM_NONE && !subplatform_desc)
> + if (data->subplatform != XE_SUBPLATFORM_NONE && !subplatform_desc)
> return -ENODEV;
>
> done:
> diff --git a/drivers/gpu/drm/xe/tests/xe_pci_test.h b/drivers/gpu/drm/xe/tests/xe_pci_test.h
> index cc0f1d141a4d..b4b3fb2df09c 100644
> --- a/drivers/gpu/drm/xe/tests/xe_pci_test.h
> +++ b/drivers/gpu/drm/xe/tests/xe_pci_test.h
> @@ -12,13 +12,6 @@ struct xe_device;
> struct xe_graphics_desc;
> struct xe_media_desc;
>
> -/*
> - * Some defines just for clarity: these mean the test doesn't care about what
> - * platform it will get since it doesn't depend on any platform-specific bits
> - */
> -#define XE_TEST_PLATFORM_ANY XE_PLATFORM_UNINITIALIZED
> -#define XE_TEST_SUBPLATFORM_ANY XE_SUBPLATFORM_UNINITIALIZED
> -
> typedef int (*xe_device_fn)(struct xe_device *);
> typedef void (*xe_graphics_fn)(const struct xe_graphics_desc *);
> typedef void (*xe_media_fn)(const struct xe_media_desc *);
> @@ -27,11 +20,11 @@ int xe_call_for_each_device(xe_device_fn xe_fn);
> void xe_call_for_each_graphics_ip(xe_graphics_fn xe_fn);
> void xe_call_for_each_media_ip(xe_media_fn xe_fn);
>
> -int xe_pci_fake_device_init(struct xe_device *xe, enum xe_platform platform,
> - enum xe_subplatform subplatform);
> +struct xe_pci_fake_data {
> + enum xe_platform platform;
> + enum xe_subplatform subplatform;
> +};
>
> -#define xe_pci_fake_device_init_any(xe__) \
> - xe_pci_fake_device_init(xe__, XE_TEST_PLATFORM_ANY, \
> - XE_TEST_SUBPLATFORM_ANY)
> +int xe_pci_fake_device_init(struct xe_device *xe);
>
> #endif
> diff --git a/drivers/gpu/drm/xe/tests/xe_rtp_test.c b/drivers/gpu/drm/xe/tests/xe_rtp_test.c
> index b2beba0019cd..5610051591e7 100644
> --- a/drivers/gpu/drm/xe/tests/xe_rtp_test.c
> +++ b/drivers/gpu/drm/xe/tests/xe_rtp_test.c
> @@ -281,7 +281,9 @@ static int xe_rtp_test_init(struct kunit *test)
> drm, DRIVER_GEM);
> KUNIT_ASSERT_NOT_ERR_OR_NULL(test, xe);
>
> - ret = xe_pci_fake_device_init_any(xe);
> + /* Initialize an empty device */
> + test->priv = NULL;
> + ret = xe_pci_fake_device_init(xe);
> KUNIT_ASSERT_EQ(test, ret, 0);
>
> xe->drm.dev = dev;
> diff --git a/drivers/gpu/drm/xe/tests/xe_wa_test.c b/drivers/gpu/drm/xe/tests/xe_wa_test.c
> index 6e1127b276ea..9185e520af58 100644
> --- a/drivers/gpu/drm/xe/tests/xe_wa_test.c
> +++ b/drivers/gpu/drm/xe/tests/xe_wa_test.c
> @@ -75,6 +75,10 @@ KUNIT_ARRAY_PARAM(platform, cases, platform_desc);
> static int xe_wa_test_init(struct kunit *test)
> {
> const struct platform_test_case *param = test->param_value;
> + struct xe_pci_fake_data data = {
> + .platform = param->platform,
> + .subplatform = param->subplatform,
> + };
> struct xe_device *xe;
> struct device *dev;
> int ret;
> @@ -87,7 +91,8 @@ static int xe_wa_test_init(struct kunit *test)
> drm, DRIVER_GEM);
> KUNIT_ASSERT_NOT_ERR_OR_NULL(test, xe);
>
> - ret = xe_pci_fake_device_init(xe, param->platform, param->subplatform);
> + test->priv = &data;
> + ret = xe_pci_fake_device_init(xe);
> KUNIT_ASSERT_EQ(test, ret, 0);
>
> xe->info.step = param->step;
> --
> 2.40.1
>
--
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation
More information about the Intel-xe
mailing list