#include <kunit/test-bug.h>
#include <kunit/test.h>
+#include <kunit/test-bug.h>
#include <kunit/visibility.h>
struct kunit_test_data {
}
EXPORT_SYMBOL_IF_KUNIT(xe_call_for_each_media_ip);
+static void fake_read_gmdid(struct xe_device *xe, enum xe_gmdid_type type,
+ u32 *ver, u32 *revid)
+{
+ struct kunit *test = kunit_get_current_test();
+ struct xe_pci_fake_data *data = test->priv;
+
+ if (type == GMDID_MEDIA) {
+ *ver = data->media_verx100;
+ *revid = xe_step_to_gmdid(data->media_step);
+ } else {
+ *ver = data->graphics_verx100;
+ *revid = xe_step_to_gmdid(data->graphics_step);
+ }
+}
+
int xe_pci_fake_device_init(struct xe_device *xe)
{
struct kunit *test = kunit_get_current_test();
return -ENODEV;
done:
+ kunit_activate_static_stub(test, read_gmdid, fake_read_gmdid);
+
xe_info_init_early(xe, desc, subplatform_desc);
xe_info_init(xe, desc->graphics, desc->media);
#ifndef _XE_PCI_TEST_H_
#define _XE_PCI_TEST_H_
+#include <linux/types.h>
+
#include "xe_platform_types.h"
struct xe_device;
struct xe_pci_fake_data {
enum xe_platform platform;
enum xe_subplatform subplatform;
+ u32 graphics_verx100;
+ u32 media_verx100;
+ u32 graphics_step;
+ u32 media_step;
};
int xe_pci_fake_device_init(struct xe_device *xe);
#include "xe_pci.h"
+#include <kunit/static_stub.h>
#include <linux/device/driver.h>
#include <linux/module.h>
#include <linux/pci.h>
struct xe_reg gmdid_reg = GMD_ID;
u32 val;
+ KUNIT_STATIC_STUB_REDIRECT(read_gmdid, xe, type, ver, revid);
+
if (type == GMDID_MEDIA)
gmdid_reg.addr += MEDIA_GT_GSI_OFFSET;
struct xe_step_info xe_step_gmdid_get(struct xe_device *xe,
u32 graphics_gmdid_revid,
u32 media_gmdid_revid);
+static inline u32 xe_step_to_gmdid(enum xe_step step) { return step - STEP_A0; }
+
const char *xe_step_name(enum xe_step step);
#endif