Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/radeon: Don't flush the GART TLB if rdev->gart.ptr == NULL

This can be the case when the GPU is powered off, e.g. via vgaswitcheroo
or runpm. When the GPU is powered up again, radeon_gart_table_vram_pin
flushes the TLB after setting rdev->gart.ptr to non-NULL.

Fixes panic on powering off R7xx GPUs.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=61529
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org

authored by

Michel Dänzer and committed by
Alex Deucher
233709d2 5dfc71bc

+8 -4
+8 -4
drivers/gpu/drm/radeon/radeon_gart.c
··· 260 260 } 261 261 } 262 262 } 263 - mb(); 264 - radeon_gart_tlb_flush(rdev); 263 + if (rdev->gart.ptr) { 264 + mb(); 265 + radeon_gart_tlb_flush(rdev); 266 + } 265 267 } 266 268 267 269 /** ··· 308 306 page_base += RADEON_GPU_PAGE_SIZE; 309 307 } 310 308 } 311 - mb(); 312 - radeon_gart_tlb_flush(rdev); 309 + if (rdev->gart.ptr) { 310 + mb(); 311 + radeon_gart_tlb_flush(rdev); 312 + } 313 313 return 0; 314 314 } 315 315