Module: Mesa
Branch: master
Commit: 302e34d24bdac1abf5b14aadf7a3857f033e01b2
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=302e34d24bdac1abf5b14aadf7a3857f033e01b2

Author: Samuel Pitoiset <[email protected]>
Date:   Mon Sep 11 22:02:54 2017 +0200

radv: dump last 60 lines of dmesg when a hang occured

Copied from dd_dump_dmesg().

Signed-off-by: Samuel Pitoiset <[email protected]>
Reviewed-by: Bas Nieuwenhuizen <[email protected]>

---

 src/amd/vulkan/radv_debug.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/src/amd/vulkan/radv_debug.c b/src/amd/vulkan/radv_debug.c
index c93ebf1c77..ec43366de7 100644
--- a/src/amd/vulkan/radv_debug.c
+++ b/src/amd/vulkan/radv_debug.c
@@ -563,6 +563,24 @@ radv_get_saved_compute_pipeline(struct radv_device *device)
        return (struct radv_pipeline *)ptr[2];
 }
 
+static void
+radv_dump_dmesg(FILE *f)
+{
+       char line[2000];
+       FILE *p;
+
+       p = popen("dmesg | tail -n60", "r");
+       if (!p)
+               return;
+
+       fprintf(f, "\nLast 60 lines of dmesg:\n\n");
+       while (fgets(line, sizeof(line), p))
+               fputs(line, f);
+       fprintf(f, "\n");
+
+       pclose(p);
+}
+
 static bool
 radv_gpu_hang_occured(struct radv_queue *queue, enum ring_type ring)
 {
@@ -595,6 +613,8 @@ radv_check_gpu_hangs(struct radv_queue *queue, struct 
radeon_winsys_cs *cs)
        graphics_pipeline = radv_get_saved_graphics_pipeline(device);
        compute_pipeline = radv_get_saved_compute_pipeline(device);
 
+       radv_dump_dmesg(stderr);
+
        if (vm_fault_occurred) {
                fprintf(stderr, "VM fault report.\n\n");
                fprintf(stderr, "Failing VM page: 0x%08"PRIx64"\n\n", addr);

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to