mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-23 14:16:39 -04:00
drm/xe/rtp: Add kunit tests to exercise FIELD_SET_FUNC action
Add a couple additional tests to the RTP kunit suite that ensure FIELD_SET_FUNC() actions are evaluated properly and the values properly consolidate/conflict with values coming from other literal SET/FIELD_SET rules. Suggested-by: Gustavo Sousa <gustavo.sousa@intel.com> Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com> Link: https://patch.msgid.link/20260617-rtp_with_dynamic_vals-v2-5-3f4cb34c2ea1@intel.com Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
This commit is contained in:
@@ -280,6 +280,11 @@ static void xe_rtp_rules_tests(struct kunit *test)
|
||||
KUNIT_EXPECT_EQ(test, err, param->expected_err);
|
||||
}
|
||||
|
||||
static u32 bits_2_3_set(struct xe_gt *gt, struct xe_hw_engine *hwe)
|
||||
{
|
||||
return REG_BIT(2) | REG_BIT(3);
|
||||
}
|
||||
|
||||
static const struct rtp_to_sr_test_case rtp_to_sr_cases[] = {
|
||||
{
|
||||
.name = "coalesce-same-reg",
|
||||
@@ -300,6 +305,29 @@ static const struct rtp_to_sr_test_case rtp_to_sr_cases[] = {
|
||||
},
|
||||
),
|
||||
},
|
||||
{
|
||||
.name = "coalesce-same-reg-literal-and-func",
|
||||
.expected_reg = REGULAR_REG1,
|
||||
.expected_set_bits = REG_BIT(0) | REG_BIT(1) | REG_BIT(2) | REG_BIT(3),
|
||||
.expected_clr_bits = REG_BIT(0) | REG_BIT(1) | REG_BIT(2) | REG_BIT(3),
|
||||
.expected_active = BIT(0) | BIT(1),
|
||||
.expected_count_sr_entries = 1,
|
||||
/* Different bits on the same register: create a single entry */
|
||||
.table = XE_RTP_TABLE_SR(
|
||||
{ XE_RTP_NAME("basic-1"),
|
||||
XE_RTP_RULES(FUNC(match_yes)),
|
||||
XE_RTP_ACTIONS(FIELD_SET(REGULAR_REG1,
|
||||
REG_BIT(0) | REG_BIT(1),
|
||||
REG_BIT(0) | REG_BIT(1)))
|
||||
},
|
||||
{ XE_RTP_NAME("basic-2"),
|
||||
XE_RTP_RULES(FUNC(match_yes)),
|
||||
XE_RTP_ACTIONS(FIELD_SET_FUNC(REGULAR_REG1,
|
||||
REG_BIT(2) | REG_BIT(3),
|
||||
bits_2_3_set))
|
||||
},
|
||||
),
|
||||
},
|
||||
{
|
||||
.name = "no-match-no-add",
|
||||
.expected_reg = REGULAR_REG1,
|
||||
@@ -417,6 +445,30 @@ static const struct rtp_to_sr_test_case rtp_to_sr_cases[] = {
|
||||
},
|
||||
),
|
||||
},
|
||||
{
|
||||
.name = "conflict-not-disjoint-literal-and-func",
|
||||
.expected_reg = REGULAR_REG1,
|
||||
.expected_set_bits = REG_BIT(1) | REG_BIT(2),
|
||||
.expected_clr_bits = REG_BIT(1) | REG_BIT(2),
|
||||
.expected_active = BIT(0) | BIT(1),
|
||||
.expected_count_sr_entries = 1,
|
||||
.expected_sr_errors = 1,
|
||||
.table = XE_RTP_TABLE_SR(
|
||||
{ XE_RTP_NAME("basic-1"),
|
||||
XE_RTP_RULES(FUNC(match_yes)),
|
||||
XE_RTP_ACTIONS(FIELD_SET(REGULAR_REG1,
|
||||
REG_BIT(1) | REG_BIT(2),
|
||||
REG_BIT(1) | REG_BIT(2)))
|
||||
},
|
||||
/* drop: bits are not disjoint with previous entries */
|
||||
{ XE_RTP_NAME("basic-2"),
|
||||
XE_RTP_RULES(FUNC(match_yes)),
|
||||
XE_RTP_ACTIONS(FIELD_SET_FUNC(REGULAR_REG1,
|
||||
REG_BIT(2) | REG_BIT(3),
|
||||
bits_2_3_set))
|
||||
},
|
||||
),
|
||||
},
|
||||
{
|
||||
.name = "conflict-reg-type",
|
||||
.expected_reg = REGULAR_REG1,
|
||||
|
||||
Reference in New Issue
Block a user