* [PATCH] Revert "drm/amdgpu: Init mcm_addr look up table"
@ 2026-04-22 22:06 Alex Deucher
2026-04-22 22:06 ` [PATCH] Revert "drm/amdgpu: update mcm_addr_lut data for imu v12_1" Alex Deucher
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Alex Deucher @ 2026-04-22 22:06 UTC (permalink / raw)
To: amd-gfx; +Cc: Shiwu Zhang, Hawking Zhang, Alex Deucher
From: Shiwu Zhang <shiwu.zhang@amd.com>
This reverts commit e7820045fde15d25b5b2706f03499e0cb9ae778e.
As vBIOS add the support for partition switch programming.
Signed-off-by: Shiwu Zhang <shiwu.zhang@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_imu.h | 1 -
drivers/gpu/drm/amd/amdgpu/imu_v12_1.c | 6 ------
2 files changed, 7 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_imu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_imu.h
index 9c56be725ff3d..eb8537558f5fb 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_imu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_imu.h
@@ -39,7 +39,6 @@ struct amdgpu_imu_funcs {
int (*switch_compute_partition)(struct amdgpu_device *adev,
int num_xccs_per_xcp,
int compute_partition_mode);
- void (*init_mcm_addr_lut)(struct amdgpu_device *adev);
};
struct imu_rlc_ram_golden {
diff --git a/drivers/gpu/drm/amd/amdgpu/imu_v12_1.c b/drivers/gpu/drm/amd/amdgpu/imu_v12_1.c
index 539785a51f69f..8e33ffcdfa4cc 100644
--- a/drivers/gpu/drm/amd/amdgpu/imu_v12_1.c
+++ b/drivers/gpu/drm/amd/amdgpu/imu_v12_1.c
@@ -153,14 +153,8 @@ static int imu_v12_1_switch_compute_partition(struct amdgpu_device *adev,
return 0;
}
-static void imu_v12_1_init_mcm_addr_lut(struct amdgpu_device *adev)
-{
- /* todo: fill in when interface is ready */
-}
-
const struct amdgpu_imu_funcs gfx_v12_1_imu_funcs = {
.init_microcode = imu_v12_1_init_microcode,
.load_microcode = imu_v12_1_load_microcode,
.switch_compute_partition = imu_v12_1_switch_compute_partition,
- .init_mcm_addr_lut = imu_v12_1_init_mcm_addr_lut,
};
--
2.53.0
^ permalink raw reply related [flat|nested] 4+ messages in thread* [PATCH] Revert "drm/amdgpu: update mcm_addr_lut data for imu v12_1" 2026-04-22 22:06 [PATCH] Revert "drm/amdgpu: Init mcm_addr look up table" Alex Deucher @ 2026-04-22 22:06 ` Alex Deucher 2026-04-22 22:06 ` [PATCH] drm/amdgpu: use the ASP command for partition switch Alex Deucher 2026-04-22 22:06 ` [PATCH] drm/amdgpu: Add node_id-to-die-name decoding for ih v7_1 Alex Deucher 2 siblings, 0 replies; 4+ messages in thread From: Alex Deucher @ 2026-04-22 22:06 UTC (permalink / raw) To: amd-gfx; +Cc: Shiwu Zhang, Hawking Zhang, Alex Deucher From: Shiwu Zhang <shiwu.zhang@amd.com> This reverts commit 60481d95ad989f556da15fa40bc6edb648324b02. As the vBIOS support the partition switch programming. Signed-off-by: Shiwu Zhang <shiwu.zhang@amd.com> Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> --- drivers/gpu/drm/amd/amdgpu/soc_v1_0.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/soc_v1_0.c b/drivers/gpu/drm/amd/amdgpu/soc_v1_0.c index d06953c237ed9..e88bebd928eff 100644 --- a/drivers/gpu/drm/amd/amdgpu/soc_v1_0.c +++ b/drivers/gpu/drm/amd/amdgpu/soc_v1_0.c @@ -739,15 +739,8 @@ static int soc_v1_0_switch_partition_mode(struct amdgpu_xcp_mgr *xcp_mgr, num_xcc_per_xcp = __soc_v1_0_get_xcc_per_xcp(xcp_mgr, mode); if (adev->gfx.imu.funcs && - adev->gfx.imu.funcs->switch_compute_partition) { - ret = adev->gfx.imu.funcs->switch_compute_partition(xcp_mgr->adev, num_xcc_per_xcp, mode); - if (ret) - goto out; - } - if (adev->gfx.imu.funcs && - adev->gfx.imu.funcs->init_mcm_addr_lut && - amdgpu_emu_mode) - adev->gfx.imu.funcs->init_mcm_addr_lut(adev); + adev->gfx.imu.funcs->switch_compute_partition) + adev->gfx.imu.funcs->switch_compute_partition(xcp_mgr->adev, num_xcc_per_xcp, mode); /* Init info about new xcps */ *num_xcps = num_xcc / num_xcc_per_xcp; -- 2.53.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH] drm/amdgpu: use the ASP command for partition switch 2026-04-22 22:06 [PATCH] Revert "drm/amdgpu: Init mcm_addr look up table" Alex Deucher 2026-04-22 22:06 ` [PATCH] Revert "drm/amdgpu: update mcm_addr_lut data for imu v12_1" Alex Deucher @ 2026-04-22 22:06 ` Alex Deucher 2026-04-22 22:06 ` [PATCH] drm/amdgpu: Add node_id-to-die-name decoding for ih v7_1 Alex Deucher 2 siblings, 0 replies; 4+ messages in thread From: Alex Deucher @ 2026-04-22 22:06 UTC (permalink / raw) To: amd-gfx; +Cc: Shiwu Zhang, Likun Gao, Hawking Zhang, Alex Deucher From: Shiwu Zhang <shiwu.zhang@amd.com> Pass the compute partition mode to ASP. v2: Squash fixes (Alex) Reviewed-by: Likun Gao <Likun.Gao@amd.com> Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com> Signed-off-by: Shiwu Zhang <shiwu.zhang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> --- drivers/gpu/drm/amd/amdgpu/imu_v12_1.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/imu_v12_1.c b/drivers/gpu/drm/amd/amdgpu/imu_v12_1.c index 8e33ffcdfa4cc..fe20cf2b94545 100644 --- a/drivers/gpu/drm/amd/amdgpu/imu_v12_1.c +++ b/drivers/gpu/drm/amd/amdgpu/imu_v12_1.c @@ -140,16 +140,12 @@ static int imu_v12_1_switch_compute_partition(struct amdgpu_device *adev, int ret; if (adev->psp.funcs) { - /*TODO: revisit asp interface once it's avaialble */ - ret = psp_spatial_partition(&adev->psp, - NUM_XCC(adev->gfx.xcc_mask) / - num_xccs_per_xcp); + ret = psp_spatial_partition(&adev->psp, compute_partition_mode); if (ret) return ret; } adev->gfx.num_xcc_per_xcp = num_xccs_per_xcp; - return 0; } -- 2.53.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH] drm/amdgpu: Add node_id-to-die-name decoding for ih v7_1 2026-04-22 22:06 [PATCH] Revert "drm/amdgpu: Init mcm_addr look up table" Alex Deucher 2026-04-22 22:06 ` [PATCH] Revert "drm/amdgpu: update mcm_addr_lut data for imu v12_1" Alex Deucher 2026-04-22 22:06 ` [PATCH] drm/amdgpu: use the ASP command for partition switch Alex Deucher @ 2026-04-22 22:06 ` Alex Deucher 2 siblings, 0 replies; 4+ messages in thread From: Alex Deucher @ 2026-04-22 22:06 UTC (permalink / raw) To: amd-gfx; +Cc: Hawking Zhang, Lijo Lazar, Alex Deucher From: Hawking Zhang <Hawking.Zhang@amd.com> Converts node_id values into human-readable die names to facilitate debugging v2: squash in fix (Alex) Signed-off-by: Hawking Zhang <Hawking.Zhang@amd.com> Reviewed-by: Lijo Lazar <lijo.lazar@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> --- drivers/gpu/drm/amd/amdgpu/amdgpu_ih.h | 6 ++++ drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c | 13 +++++++++ drivers/gpu/drm/amd/amdgpu/ih_v7_0.c | 40 +++++++++++++++++++++++++- 3 files changed, 58 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ih.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ih.h index f58b6be7fccc0..444437c300886 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ih.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ih.h @@ -91,6 +91,12 @@ struct amdgpu_ih_funcs { uint64_t (*decode_iv_ts)(struct amdgpu_ih_ring *ih, u32 rptr, signed int offset); void (*set_rptr)(struct amdgpu_device *adev, struct amdgpu_ih_ring *ih); + /* Decode IH cookie node_id into a human-readable die name string. + * Returns buf, or NULL if this IH version does not support node_id decoding. + */ + const char *(*node_id_to_die_name)(struct amdgpu_device *adev, + unsigned int node_id, + char *buf, size_t size); }; #define amdgpu_ih_get_wptr(adev, ih) (adev)->irq.ih_funcs->get_wptr((adev), (ih)) diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c b/drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c index 7ea7b9c30bca9..855cd29cbffaa 100644 --- a/drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c @@ -112,6 +112,8 @@ static int gmc_v12_1_process_interrupt(struct amdgpu_device *adev, const char *hub_name; int ret, xcc_id = 0; uint32_t status = 0; + const char *die_name; + char die_name_buf[32]; u64 addr; node_id = entry->node_id; @@ -201,6 +203,17 @@ static int gmc_v12_1_process_interrupt(struct amdgpu_device *adev, dev_err(adev->dev, " in page starting at address 0x%016llx from IH client %d (%s)\n", addr, entry->client_id, soc_v1_0_ih_clientid_name[entry->client_id]); + if (adev->irq.ih_funcs && + adev->irq.ih_funcs->node_id_to_die_name) { + die_name = adev->irq.ih_funcs->node_id_to_die_name(adev, node_id, + die_name_buf, + sizeof(die_name_buf)); + if (die_name) + dev_err(adev->dev, + " cookie node_id %d fault from die %s\n", + node_id, die_name); + } + if (amdgpu_sriov_vf(adev)) return 0; diff --git a/drivers/gpu/drm/amd/amdgpu/ih_v7_0.c b/drivers/gpu/drm/amd/amdgpu/ih_v7_0.c index 1fbe904f4223b..6de9e87e04e1a 100644 --- a/drivers/gpu/drm/amd/amdgpu/ih_v7_0.c +++ b/drivers/gpu/drm/amd/amdgpu/ih_v7_0.c @@ -798,6 +798,43 @@ static void ih_v7_0_get_clockgating_state(struct amdgpu_ip_block *ip_block, u64 return; } +/* + * ih_v7_0_node_id_to_die_name - Decode IH cookie node_id to a die name string + * + * Currently, only applies to IH v7_1. For other IH versions returns NULL. + * + * IH v7_1 node_id encoding: + * node_id[N:3] = MID index + * node_id[2:0] = sub-slot: 0=MID, 1=AID, 2-5=AID.XCD, 6-7=RSV + */ +static const char *ih_v7_0_node_id_to_die_name(struct amdgpu_device *adev, + unsigned int node_id, + char *buf, size_t size) +{ + int mid_id, sub_slot; + + /* Node ID to die name decoding is only defined for IH v7_1 currenlty. */ + if (amdgpu_ip_version(adev, OSSSYS_HWIP, 0) != IP_VERSION(7, 1, 0)) + return NULL; + + mid_id = node_id >> 3; + sub_slot = node_id & 0x7; + + if (mid_id > 1) + return "UNKNOWN"; + + if (sub_slot == 0) + snprintf(buf, size, "MID%d", mid_id); + else if (sub_slot == 1) + snprintf(buf, size, "AID%d", mid_id); + else if (sub_slot <= 5) + snprintf(buf, size, "AID%d.XCD%d", mid_id, sub_slot - 2); + else + snprintf(buf, size, "RSV"); + + return buf; +} + static const struct amd_ip_funcs ih_v7_0_ip_funcs = { .name = "ih_v7_0", .early_init = ih_v7_0_early_init, @@ -819,7 +856,8 @@ static const struct amdgpu_ih_funcs ih_v7_0_funcs = { .get_wptr = ih_v7_0_get_wptr, .decode_iv = amdgpu_ih_decode_iv_helper, .decode_iv_ts = amdgpu_ih_decode_iv_ts_helper, - .set_rptr = ih_v7_0_set_rptr + .set_rptr = ih_v7_0_set_rptr, + .node_id_to_die_name = ih_v7_0_node_id_to_die_name, }; static void ih_v7_0_set_interrupt_funcs(struct amdgpu_device *adev) -- 2.53.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-04-22 22:06 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-04-22 22:06 [PATCH] Revert "drm/amdgpu: Init mcm_addr look up table" Alex Deucher 2026-04-22 22:06 ` [PATCH] Revert "drm/amdgpu: update mcm_addr_lut data for imu v12_1" Alex Deucher 2026-04-22 22:06 ` [PATCH] drm/amdgpu: use the ASP command for partition switch Alex Deucher 2026-04-22 22:06 ` [PATCH] drm/amdgpu: Add node_id-to-die-name decoding for ih v7_1 Alex Deucher
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.