[PATCH 09/14] drm/amdgpu: add amdgpu_discovery_dump_mem_reserved_info_table
Alex Deucher <[email protected]>
| Newsgroups | org.freedesktop.lists.amd-gfx |
|---|---|
| Message-ID | <[email protected]> |
From: Feifei Xu <[email protected]> Walk the cached MEM_RESERVED_INFO table once at discovery init time and log every entry (region id, symbolic name, size, start). Add for debugging purpose. Signed-off-by: Feifei Xu <[email protected]> Reviewed-by: Hawking Zhang <[email protected]> Signed-off-by: Alex Deucher <[email protected]> --- drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c index 6cc390da10f95..7ab32e62c8a98 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c @@ -716,6 +716,9 @@ static int amdgpu_discovery_table_check(struct amdgpu_device *adev, return 0; } +static void amdgpu_discovery_dump_mem_reserved_info_table(struct amdgpu_device *adev, + struct mem_reserved_info_table_v1_0 *table); + static void amdgpu_discovery_log_bad_signature(struct amdgpu_device *adev, uint8_t *discovery_bin, const char *fw_name) @@ -789,10 +792,13 @@ static int amdgpu_discovery_init(struct amdgpu_device *adev) } /* - * Resolve the MEM_RESERVED_INFO table once at init time. The table - * is optional, so missing it is not a fatal error. + * Resolve and dump the MEM_RESERVED_INFO table once at init time. + * The table is optional, so missing it is not a fatal error. */ - amdgpu_discovery_get_mem_reserved_info_table(adev); + if (!amdgpu_discovery_get_mem_reserved_info_table(adev)) + amdgpu_discovery_dump_mem_reserved_info_table(adev, + adev->discovery.mem_reserved_table); + return 0; out: @@ -2409,6 +2415,24 @@ static const char *amdgpu_discovery_mem_reserved_region_name(u32 id) } } +/* Dump all the mem_reserved_info table entries for debugging */ +static void amdgpu_discovery_dump_mem_reserved_info_table(struct amdgpu_device *adev, + struct mem_reserved_info_table_v1_0 *table) +{ + u32 list_num = min_t(u32, le32_to_cpu(table->list_num), MAX_MEM_REGION_NUM); + u32 id, i; + + dev_info(adev->dev, "MEM_RESERVED_INFO: list_num=%u\n", list_num); + for (i = 0; i < list_num; i++) { + id = le32_to_cpu(table->list[i].reserved_region_id); + dev_info(adev->dev, " [%u] id=%u (%s) size=0x%llx start=0x%llx\n", + i, id, + amdgpu_discovery_mem_reserved_region_name(id), + le64_to_cpu(table->list[i].reserved_region_size), + le64_to_cpu(table->list[i].reserved_region_start)); + } +} + /* * Resolve the MEM_RESERVED_INFO table from the IP discovery binary and * cache it in adev->discovery.mem_reserved_table. -- 2.55.0