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

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.com


Signed-off-by: default avatarLucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
parent 1da0e581
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -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:
+5 −12
Original line number Diff line number Diff line
@@ -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
+3 −1
Original line number Diff line number Diff line
@@ -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;
+6 −1
Original line number Diff line number Diff line
@@ -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;