[Intel-xe] [CI 2/4] drm/xe/kunit: Move fake pci data to test-priv
Lucas De Marchi
lucas.demarchi at intel.com
Tue Dec 5 13:39:52 UTC 2023
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.
Reviewed-by: Matt Roper <matthew.d.roper at intel.com>
Link: https://lore.kernel.org/r/20231129232807.1499826-4-lucas.demarchi@intel.com
Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>
---
drivers/gpu/drm/xe/tests/xe_pci.c | 14 ++++++++------
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, 22 insertions(+), 20 deletions(-)
diff --git a/drivers/gpu/drm/xe/tests/xe_pci.c b/drivers/gpu/drm/xe/tests/xe_pci.c
index c1aa785cac18..b93cb1e96108 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,7 +123,7 @@ 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;
}
@@ -131,10 +133,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 a1d204133cc1..4a6972897675 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 01ea974591ea..045afae43891 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
More information about the Intel-xe
mailing list