mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 05:04:02 +02:00
drm/xe/rtp: Ensure device_oob_was only evaluates correct rules
This commit builds on the implementation of the GT WA testing, increasing
the scope of testing to include the device OOB workaround list. As well
as checking for XE_RTP_ENGINE_CLASS(), this test also checks for rules
involving XE_RTP_GRAPHICS() and XE_RTP_MEDIA(), as well as their
derivatives.
This test will raise expectation fails for any workarounds in the
device_oob_was list that has an invalid rule type, preventing evaluation
or inclusion of rules that could be applied in the wrong context.
v6:
- No change
v5:
- No change
v4:
- No change
v3:
- Removed "VISIBLE_IF_KUNIT" keyword from xe_wa.h
- Heavily reworked rule checking within _dev_oob_test() function for
easier understanding and interpreting of errors
v2:
- Changed xe_rtp_table_dev_oob_test() to follow format of
xe_rtp_table_gt_test
- Changed device_oob_was generated params to follow format of
gt_was
Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com>
Signed-off-by: Violet Monti <violet.monti@intel.com>
Link: https://patch.msgid.link/20260601200947.2032784-10-violet.monti@intel.com
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
This commit is contained in:
parent
e2cfc5bc0c
commit
94e15e89f4
|
|
@ -53,10 +53,33 @@ static void xe_rtp_table_oob_test(struct kunit *test)
|
|||
|
||||
RTP_TABLE_PARAM(oob_was);
|
||||
|
||||
static void xe_rtp_table_dev_oob_test(struct kunit *test)
|
||||
{
|
||||
const struct xe_rtp_entry *entry = test->param_value;
|
||||
|
||||
for (int i = 0; i < entry->n_rules; i++) {
|
||||
u8 match_type = entry->rules[i].match_type;
|
||||
|
||||
KUNIT_EXPECT_NE(test, match_type, XE_RTP_MATCH_ENGINE_CLASS);
|
||||
KUNIT_EXPECT_NE(test, match_type, XE_RTP_MATCH_NOT_ENGINE_CLASS);
|
||||
KUNIT_EXPECT_NE(test, match_type, XE_RTP_MATCH_GRAPHICS_VERSION);
|
||||
KUNIT_EXPECT_NE(test, match_type, XE_RTP_MATCH_GRAPHICS_VERSION_RANGE);
|
||||
KUNIT_EXPECT_NE(test, match_type, XE_RTP_MATCH_GRAPHICS_VERSION_ANY_GT);
|
||||
KUNIT_EXPECT_NE(test, match_type, XE_RTP_MATCH_GRAPHICS_STEP);
|
||||
KUNIT_EXPECT_NE(test, match_type, XE_RTP_MATCH_MEDIA_VERSION);
|
||||
KUNIT_EXPECT_NE(test, match_type, XE_RTP_MATCH_MEDIA_VERSION_RANGE);
|
||||
KUNIT_EXPECT_NE(test, match_type, XE_RTP_MATCH_MEDIA_VERSION_ANY_GT);
|
||||
KUNIT_EXPECT_NE(test, match_type, XE_RTP_MATCH_MEDIA_STEP);
|
||||
}
|
||||
}
|
||||
|
||||
RTP_TABLE_PARAM(device_oob_was);
|
||||
|
||||
static struct kunit_case xe_rtp_table_tests[] = {
|
||||
KUNIT_CASE_PARAM(xe_rtp_table_gt_test, gt_was_gen_params),
|
||||
KUNIT_CASE_PARAM(xe_rtp_table_gt_test, gt_tunings_gen_params),
|
||||
KUNIT_CASE_PARAM(xe_rtp_table_oob_test, oob_was_gen_params),
|
||||
KUNIT_CASE_PARAM(xe_rtp_table_dev_oob_test, device_oob_was_gen_params),
|
||||
{}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -815,10 +815,11 @@ static const struct xe_rtp_entry device_oob_was_entries[] = {
|
|||
|
||||
static_assert(ARRAY_SIZE(device_oob_was_entries) == _XE_DEVICE_WA_OOB_COUNT);
|
||||
|
||||
static __maybe_unused const struct xe_rtp_table device_oob_was = {
|
||||
VISIBLE_IF_KUNIT __maybe_unused const struct xe_rtp_table device_oob_was = {
|
||||
.entries = device_oob_was_entries,
|
||||
.n_entries = ARRAY_SIZE(device_oob_was_entries),
|
||||
};
|
||||
EXPORT_SYMBOL_IF_KUNIT(device_oob_was);
|
||||
|
||||
__diag_pop();
|
||||
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ int xe_wa_gt_dump(struct xe_gt *gt, struct drm_printer *p);
|
|||
#if IS_ENABLED(CONFIG_DRM_XE_KUNIT_TEST)
|
||||
extern const struct xe_rtp_table_sr gt_was;
|
||||
extern __maybe_unused const struct xe_rtp_table oob_was;
|
||||
extern __maybe_unused const struct xe_rtp_table device_oob_was;
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user