aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLucas De Marchi <[email protected]>2023-12-05 05:39:52 -0800
committerRodrigo Vivi <[email protected]>2023-12-21 11:45:23 -0500
commit5b2a63b40d5620ce453f2a509334ae6feb7b884e (patch)
tree221b4c364d5e5617a1cc5ca5e9405c3cc7580281
parent1da0e581983c6f212499d44573b23ae48c1a4d00 (diff)
drm/xe/kunit: Move fake pci data to test-priv
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 <[email protected]> Link: https://lore.kernel.org/r/[email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Lucas De Marchi <[email protected]> Signed-off-by: Rodrigo Vivi <[email protected]>
-rw-r--r--drivers/gpu/drm/xe/tests/xe_pci.c14
-rw-r--r--drivers/gpu/drm/xe/tests/xe_pci_test.h17
-rw-r--r--drivers/gpu/drm/xe/tests/xe_rtp_test.c4
-rw-r--r--drivers/gpu/drm/xe/tests/xe_wa_test.c7
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;