mirror of
https://github.com/torvalds/linux.git
synced 2026-07-29 02:31:27 +02:00
drm/xe/kunit: Add stub to read_gmdid
Currently it's not possible to test the WAs for platforms using gmdid since they don't have the IP information on the descriptor struct. In order to allow that, add a stub function for read_gmdid() that is activated when the test executes, replacing the iomap and read of the real register. Reviewed-by: Matt Roper <matthew.d.roper@intel.com> Link: https://lore.kernel.org/r/20231129232807.1499826-5-lucas.demarchi@intel.com Link: https://lore.kernel.org/r/20231205133954.2089546-3-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:
parent
5b2a63b40d
commit
6cad22853c
|
|
@ -9,6 +9,7 @@
|
||||||
|
|
||||||
#include <kunit/test-bug.h>
|
#include <kunit/test-bug.h>
|
||||||
#include <kunit/test.h>
|
#include <kunit/test.h>
|
||||||
|
#include <kunit/test-bug.h>
|
||||||
#include <kunit/visibility.h>
|
#include <kunit/visibility.h>
|
||||||
|
|
||||||
struct kunit_test_data {
|
struct kunit_test_data {
|
||||||
|
|
@ -107,6 +108,21 @@ void xe_call_for_each_media_ip(xe_media_fn xe_fn)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_IF_KUNIT(xe_call_for_each_media_ip);
|
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)
|
int xe_pci_fake_device_init(struct xe_device *xe)
|
||||||
{
|
{
|
||||||
struct kunit *test = kunit_get_current_test();
|
struct kunit *test = kunit_get_current_test();
|
||||||
|
|
@ -140,6 +156,8 @@ int xe_pci_fake_device_init(struct xe_device *xe)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
kunit_activate_static_stub(test, read_gmdid, fake_read_gmdid);
|
||||||
|
|
||||||
xe_info_init_early(xe, desc, subplatform_desc);
|
xe_info_init_early(xe, desc, subplatform_desc);
|
||||||
xe_info_init(xe, desc->graphics, desc->media);
|
xe_info_init(xe, desc->graphics, desc->media);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,8 @@
|
||||||
#ifndef _XE_PCI_TEST_H_
|
#ifndef _XE_PCI_TEST_H_
|
||||||
#define _XE_PCI_TEST_H_
|
#define _XE_PCI_TEST_H_
|
||||||
|
|
||||||
|
#include <linux/types.h>
|
||||||
|
|
||||||
#include "xe_platform_types.h"
|
#include "xe_platform_types.h"
|
||||||
|
|
||||||
struct xe_device;
|
struct xe_device;
|
||||||
|
|
@ -23,6 +25,10 @@ void xe_call_for_each_media_ip(xe_media_fn xe_fn);
|
||||||
struct xe_pci_fake_data {
|
struct xe_pci_fake_data {
|
||||||
enum xe_platform platform;
|
enum xe_platform platform;
|
||||||
enum xe_subplatform subplatform;
|
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);
|
int xe_pci_fake_device_init(struct xe_device *xe);
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
#include "xe_pci.h"
|
#include "xe_pci.h"
|
||||||
|
|
||||||
|
#include <kunit/static_stub.h>
|
||||||
#include <linux/device/driver.h>
|
#include <linux/device/driver.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
|
|
@ -456,6 +457,8 @@ static void read_gmdid(struct xe_device *xe, enum xe_gmdid_type type, u32 *ver,
|
||||||
struct xe_reg gmdid_reg = GMD_ID;
|
struct xe_reg gmdid_reg = GMD_ID;
|
||||||
u32 val;
|
u32 val;
|
||||||
|
|
||||||
|
KUNIT_STATIC_STUB_REDIRECT(read_gmdid, xe, type, ver, revid);
|
||||||
|
|
||||||
if (type == GMDID_MEDIA)
|
if (type == GMDID_MEDIA)
|
||||||
gmdid_reg.addr += MEDIA_GT_GSI_OFFSET;
|
gmdid_reg.addr += MEDIA_GT_GSI_OFFSET;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,8 @@ struct xe_step_info xe_step_pre_gmdid_get(struct xe_device *xe);
|
||||||
struct xe_step_info xe_step_gmdid_get(struct xe_device *xe,
|
struct xe_step_info xe_step_gmdid_get(struct xe_device *xe,
|
||||||
u32 graphics_gmdid_revid,
|
u32 graphics_gmdid_revid,
|
||||||
u32 media_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);
|
const char *xe_step_name(enum xe_step step);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user