radv: dump last 60 lines of dmesg when a hang occured
Copied from dd_dump_dmesg(). Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
@@ -563,6 +563,24 @@ radv_get_saved_compute_pipeline(struct radv_device *device)
|
|||||||
return (struct radv_pipeline *)ptr[2];
|
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
|
static bool
|
||||||
radv_gpu_hang_occured(struct radv_queue *queue, enum ring_type ring)
|
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);
|
graphics_pipeline = radv_get_saved_graphics_pipeline(device);
|
||||||
compute_pipeline = radv_get_saved_compute_pipeline(device);
|
compute_pipeline = radv_get_saved_compute_pipeline(device);
|
||||||
|
|
||||||
|
radv_dump_dmesg(stderr);
|
||||||
|
|
||||||
if (vm_fault_occurred) {
|
if (vm_fault_occurred) {
|
||||||
fprintf(stderr, "VM fault report.\n\n");
|
fprintf(stderr, "VM fault report.\n\n");
|
||||||
fprintf(stderr, "Failing VM page: 0x%08"PRIx64"\n\n", addr);
|
fprintf(stderr, "Failing VM page: 0x%08"PRIx64"\n\n", addr);
|
||||||
|
Reference in New Issue
Block a user