Module: Mesa Branch: master Commit: 80177306d97beaafd8c5d45e6f5e633f9d8f035f URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=80177306d97beaafd8c5d45e6f5e633f9d8f035f
Author: Samuel Pitoiset <samuel.pitoi...@gmail.com> Date: Thu Aug 31 11:44:00 2017 +0200 radv: report VM faults if detected It's fairly simple for now, but this might be quite useful. Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com> Reviewed-by: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl> --- src/amd/vulkan/radv_debug.c | 13 +++++++++++++ src/amd/vulkan/radv_private.h | 3 +++ 2 files changed, 16 insertions(+) diff --git a/src/amd/vulkan/radv_debug.c b/src/amd/vulkan/radv_debug.c index 4024f75da8..949eeea2f3 100644 --- a/src/amd/vulkan/radv_debug.c +++ b/src/amd/vulkan/radv_debug.c @@ -28,6 +28,7 @@ #include <stdlib.h> #include <stdio.h> +#include "ac_debug.h" #include "radv_debug.h" bool @@ -44,6 +45,9 @@ radv_init_trace(struct radv_device *device) if (!device->trace_id_ptr) return false; + ac_vm_fault_occured(device->physical_device->rad_info.chip_class, + &device->dmesg_timestamp, NULL); + return true; } @@ -80,9 +84,18 @@ radv_gpu_hang_occured(struct radv_queue *queue) void radv_check_gpu_hangs(struct radv_queue *queue, struct radeon_winsys_cs *cs) { + struct radv_device *device = queue->device; + uint64_t addr; + if (!radv_gpu_hang_occured(queue)) return; + if (ac_vm_fault_occured(device->physical_device->rad_info.chip_class, + &device->dmesg_timestamp, &addr)) { + fprintf(stderr, "VM fault report.\n\n"); + fprintf(stderr, "Failing VM page: 0x%08"PRIx64"\n\n", addr); + } + radv_dump_trace(queue->device, cs); abort(); } diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h index 73f7bdbe8a..28e70e6915 100644 --- a/src/amd/vulkan/radv_private.h +++ b/src/amd/vulkan/radv_private.h @@ -555,6 +555,9 @@ struct radv_device { uint32_t fmask_mrt_offset_counter; struct list_head shader_slabs; mtx_t shader_slab_mutex; + + /* For detecting VM faults reported by dmesg. */ + uint64_t dmesg_timestamp; }; struct radv_device_memory { _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit