mirror of
https://github.com/torvalds/linux.git
synced 2026-05-05 06:52:34 -04:00
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 <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.com Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
This commit is contained in:
committed by
Rodrigo Vivi
parent
1da0e58198
commit
5b2a63b40d
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user