summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLijo Lazar <lijo.lazar@amd.com>2026-08-04 11:43:04 +0530
committerAlex Deucher <alexander.deucher@amd.com>2026-08-25 18:41:52 -0400
commit6028808e373c2da6025c2a09403cb7f71bbf317c (patch)
tree70fc5fa8d2b032f6a2e0cb7639344dee5165ff13
parentae6552ed047ddbbac335179e717e682b12e48695 (diff)
drm/amdgpu: Use partition switch shadow register
Control register is access restricted. Use the read-only copy to read the partition settings. Signed-off-by: Lijo Lazar <lijo.lazar@amd.com> Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gfx_v12_1.c11
-rw-r--r--drivers/gpu/drm/amd/include/asic_reg/gc/gc_12_1_0_offset.h2
-rw-r--r--drivers/gpu/drm/amd/include/asic_reg/gc/gc_12_1_0_sh_mask.h4
3 files changed, 9 insertions, 8 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v12_1.c b/drivers/gpu/drm/amd/amdgpu/gfx_v12_1.c
index 9dd7a3335719..3f757dfcd1c3 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v12_1.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v12_1.c
@@ -839,19 +839,16 @@ static void gfx_v12_1_select_me_pipe_q(struct amdgpu_device *adev,
soc_v1_0_grbm_select(adev, me, pipe, q, vm, GET_INST(GC, xcc_id));
}
-#define regGFX_IMU_PARTITION_SWITCH 0x5f8c
-#define regGFX_IMU_PARTITION_SWITCH_BASE_IDX 1
-#define GFX_IMU_PARTITION_SWITCH__TOTAL_XCCS_IN_XCP__SHIFT 0x2
-#define GFX_IMU_PARTITION_SWITCH__TOTAL_XCCS_IN_XCP_MASK 0x0000003CL
-
static int gfx_v12_1_get_xccs_per_xcp(struct amdgpu_device *adev)
{
u32 reg_data;
/* the register data is expected to be the same on all instances */
- reg_data = RREG32_SOC15(GC, GET_INST(GC, 0), regGFX_IMU_PARTITION_SWITCH);
+ reg_data = RREG32_SOC15(GC, GET_INST(GC, 0),
+ regGFX_IMU_PARTITION_SWITCH_SHADOW);
- return REG_GET_FIELD(reg_data, GFX_IMU_PARTITION_SWITCH, TOTAL_XCCS_IN_XCP);
+ return REG_GET_FIELD(reg_data, GFX_IMU_PARTITION_SWITCH_SHADOW,
+ TOTAL_XCCS_IN_XCP);
}
static int gfx_v12_1_ih_to_xcc_inst(struct amdgpu_device *adev, int ih_node)
diff --git a/drivers/gpu/drm/amd/include/asic_reg/gc/gc_12_1_0_offset.h b/drivers/gpu/drm/amd/include/asic_reg/gc/gc_12_1_0_offset.h
index 025e5490e6f1..dbd497d9fac1 100644
--- a/drivers/gpu/drm/amd/include/asic_reg/gc/gc_12_1_0_offset.h
+++ b/drivers/gpu/drm/amd/include/asic_reg/gc/gc_12_1_0_offset.h
@@ -7369,6 +7369,8 @@
#define regGFX_IMU_TIMER1_VALUE 0x40d1
#define regGFX_IMU_TIMER1_VALUE_BASE_IDX 1
#define regGFX_IMU_FUSE_CTRL 0x40e0
+#define regGFX_IMU_PARTITION_SWITCH_SHADOW 0x40f8
+#define regGFX_IMU_PARTITION_SWITCH_SHADOW_BASE_IDX 1
#define regGFX_IMU_FUSE_CTRL_BASE_IDX 1
#define regGFX_IMU_D_RAM_ADDR 0x40fc
#define regGFX_IMU_D_RAM_ADDR_BASE_IDX 1
diff --git a/drivers/gpu/drm/amd/include/asic_reg/gc/gc_12_1_0_sh_mask.h b/drivers/gpu/drm/amd/include/asic_reg/gc/gc_12_1_0_sh_mask.h
index 1cf890de35cb..68dfafd8d027 100644
--- a/drivers/gpu/drm/amd/include/asic_reg/gc/gc_12_1_0_sh_mask.h
+++ b/drivers/gpu/drm/amd/include/asic_reg/gc/gc_12_1_0_sh_mask.h
@@ -23556,7 +23556,9 @@
//GFX_IMU_I_RAM_DATA
#define GFX_IMU_I_RAM_DATA__DATA__SHIFT 0x0
#define GFX_IMU_I_RAM_DATA__DATA_MASK 0xFFFFFFFFL
-
+//GFX_IMU_PARTITION_SWITCH_SHADOW
+#define GFX_IMU_PARTITION_SWITCH_SHADOW__TOTAL_XCCS_IN_XCP__SHIFT 0x2
+#define GFX_IMU_PARTITION_SWITCH_SHADOW__TOTAL_XCCS_IN_XCP_MASK 0x0000003CL
// addressBlock: CHIP_XCD_gfxip_xcc_gfx_se_gfx_se_grbmhdec
//GRBMH_CNTL