Skip to content

Commit 5fa20ff

Browse files
committed
drm/xe/xe3p_xpc: Treat all PSMI MCR ranges as "INSTANCE0"
Early versions of the B-spec originally indicated that Xe3p_XPC had two ranges of PSMI registers requiring MCR steering (one starting at 0xB500, one starting at 0xB600), and that reads of registers in these ranges required different grpid values to ensure that a non-terminated value is obtained. A late-breaking spec update has simplified this; both ranges can be safely steered to grpid=0 for reads. Drop the "PSMI19" replication type and related code, and consolidate both register ranges into a single entry in the "INSTANCE0" steering table. Bspec: 74418 Fixes: be614ea ("drm/xe/xe3p_xpc: Add MCR steering") Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com> Link: https://lore.kernel.org/r/20251021224556.437970-2-matthew.d.roper@intel.com Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
1 parent 9ea9b45 commit 5fa20ff

2 files changed

Lines changed: 1 addition & 22 deletions

File tree

drivers/gpu/drm/xe/xe_gt_mcr.c

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -268,13 +268,8 @@ static const struct xe_mmio_range xe3p_xpc_gam_grp1_steering_table[] = {
268268
{},
269269
};
270270

271-
static const struct xe_mmio_range xe3p_xpc_psmi_grp19_steering_table[] = {
272-
{ 0x00B500, 0x00B5FF },
273-
{},
274-
};
275-
276271
static const struct xe_mmio_range xe3p_xpc_instance0_steering_table[] = {
277-
{ 0x00B600, 0x00B6FF }, /* PSMI0 */
272+
{ 0x00B500, 0x00B6FF }, /* PSMI */
278273
{ 0x00C800, 0x00CFFF }, /* GAMCTRL */
279274
{ 0x00F000, 0x00F0FF }, /* GAMCTRL */
280275
{},
@@ -452,12 +447,6 @@ static void init_steering_sqidi_psmi(struct xe_gt *gt)
452447
gt->steering[SQIDI_PSMI].instance_target = select & 0x1;
453448
}
454449

455-
static void init_steering_psmi(struct xe_gt *gt)
456-
{
457-
gt->steering[PSMI19].group_target = 19;
458-
gt->steering[PSMI19].instance_target = 0;
459-
}
460-
461450
static void init_steering_gam1(struct xe_gt *gt)
462451
{
463452
gt->steering[GAM1].group_target = 1;
@@ -474,7 +463,6 @@ static const struct {
474463
[DSS] = { "DSS / XeCore", init_steering_dss },
475464
[OADDRM] = { "OADDRM / GPMXMT", init_steering_oaddrm },
476465
[SQIDI_PSMI] = { "SQIDI_PSMI", init_steering_sqidi_psmi },
477-
[PSMI19] = { "PSMI[19]", init_steering_psmi },
478466
[GAM1] = { "GAMWKRS / STLB / GAMREQSTRM", init_steering_gam1 },
479467
[INSTANCE0] = { "INSTANCE 0", NULL },
480468
[IMPLICIT_STEERING] = { "IMPLICIT", NULL },
@@ -524,7 +512,6 @@ void xe_gt_mcr_init_early(struct xe_gt *gt)
524512
gt->steering[DSS].ranges = xe3p_xpc_xecore_steering_table;
525513
gt->steering[GAM1].ranges = xe3p_xpc_gam_grp1_steering_table;
526514
gt->steering[INSTANCE0].ranges = xe3p_xpc_instance0_steering_table;
527-
gt->steering[PSMI19].ranges = xe3p_xpc_psmi_grp19_steering_table;
528515
} else if (GRAPHICS_VER(xe) >= 20) {
529516
gt->steering[DSS].ranges = xe2lpg_dss_steering_table;
530517
gt->steering[SQIDI_PSMI].ranges = xe2lpg_sqidi_psmi_steering_table;

drivers/gpu/drm/xe/xe_gt_types.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -72,14 +72,6 @@ enum xe_steering_type {
7272
OADDRM,
7373
SQIDI_PSMI,
7474

75-
/*
76-
* The bspec lists multiple ranges as "PSMI," but the different
77-
* ranges with that label have different grpid steering values so we
78-
* treat them independently in code. Note that the ranges with grpid=0
79-
* are included in the INSTANCE0 group above.
80-
*/
81-
PSMI19,
82-
8375
/*
8476
* Although most GAM ranges must be steered to (0,0) and thus use the
8577
* INSTANCE0 type farther down, some platforms have special rules

0 commit comments

Comments
 (0)