[Mesa-dev] [PATCH 14/15] radv: dump last 60 lines of dmesg when a hang occured

Samuel Pitoiset samuel.pitoiset at gmail.com
Tue Sep 12 10:35:51 UTC 2017


Copied from dd_dump_dmesg().

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
---
 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 741bf76f15..106c6e4f64 100644
--- a/src/amd/vulkan/radv_debug.c
+++ b/src/amd/vulkan/radv_debug.c
@@ -535,6 +535,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)
 {
@@ -567,6 +585,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);
-- 
2.14.1



More information about the mesa-dev mailing list