From 1ae6fcfbafd69d432d7928da38666bb52f38d921 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Fri, 29 Nov 2024 08:44:15 +0100 Subject: [PATCH] radv: add a small helper to dump VM fault with the GPU hang report Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_debug.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/amd/vulkan/radv_debug.c b/src/amd/vulkan/radv_debug.c index 1330259f8ba..b860ca0679f 100644 --- a/src/amd/vulkan/radv_debug.c +++ b/src/amd/vulkan/radv_debug.c @@ -687,6 +687,16 @@ radv_dump_umr_waves(struct radv_queue *queue, const char *wave_dump, FILE *f) fprintf(f, "\nUMR GFX waves:\n\n%s", wave_dump ? wave_dump : ""); } +static void +radv_dump_vm_fault(struct radv_device *device, const struct radv_winsys_gpuvm_fault_info *fault_info, FILE *f) +{ + struct radv_physical_device *pdev = radv_device_physical(device); + + fprintf(f, "VM fault report.\n\n"); + fprintf(f, "Failing VM page: 0x%08" PRIx64 "\n", fault_info->addr); + ac_print_gpuvm_fault_status(f, pdev->info.gfx_level, fault_info->status); +} + static bool radv_gpu_hang_occurred(struct radv_queue *queue, enum amd_ip_type ring) { @@ -837,11 +847,8 @@ radv_check_gpu_hangs(struct radv_queue *queue, const struct radv_winsys_submit_i device->ws->dump_bo_log(device->ws, f); break; case RADV_DEVICE_FAULT_CHUNK_VM_FAULT: - if (vm_fault_occurred) { - fprintf(f, "VM fault report.\n\n"); - fprintf(f, "Failing VM page: 0x%08" PRIx64 "\n", fault_info.addr); - ac_print_gpuvm_fault_status(f, pdev->info.gfx_level, fault_info.status); - } + if (vm_fault_occurred) + radv_dump_vm_fault(device, &fault_info, f); break; case RADV_DEVICE_FAULT_CHUNK_APP_INFO: radv_dump_app_info(device, f);