* [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.