Commit 5b2a63b4 authored by Lucas De Marchi's avatar Lucas De Marchi Committed by Rodrigo Vivi

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: default avatarMatt Roper <matthew.d.roper@intel.com>
Link: https://lore.kernel.org/r/20231129232807.1499826-4-lucas.demarchi@intel.com
Link: https://lore.kernel.org/r/20231205133954.2089546-2-lucas.demarchi@intel.comSigned-off-by: default avatarLucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
parent 1da0e581
......@@ -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:
......
......@@ -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
......@@ -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;
......
......@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment