There is no need to draw the panic screen via the slow MMIO access on APUs, since the frame buffer is guaranteed to be CPU accessible.
Lets skip setting the .set_pixel method which allows the DRM panic core to just work and it renders much more quickly. Signed-off-by: Tvrtko Ursulin <[email protected]> Cc: Alex Deucher <[email protected]> Cc: "Christian König" <[email protected]> Cc: Melissa Wen <[email protected]> Cc: Rodrigo Siqueira <[email protected]> --- FWIW this draws the panic faster, but.. the whole DRM panic setup only appears to work with non-tiled modes. There is something broken in the dcn10_reset_surface_dcc_and_tiling() code with "more advanced" modes where thing the turning off compression seems to trigger some weird display engine behaviour. (On the Steam Deck at least.) --- drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c index b5d34797d606..7f75f1319d3f 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c @@ -1900,7 +1900,8 @@ int amdgpu_display_get_scanout_buffer(struct drm_plane *plane, sb->pitch[0] = fb->pitches[0]; - if (abo->flags & AMDGPU_GEM_CREATE_NO_CPU_ACCESS) { + if (!(amdgpu_ttm_adev(abo->tbo.bdev)->flags & AMD_IS_APU) && + (abo->flags & AMDGPU_GEM_CREATE_NO_CPU_ACCESS)) { if (abo->tbo.resource->mem_type != TTM_PL_VRAM) { drm_warn(plane->dev, "amdgpu panic, framebuffer not in VRAM\n"); return -EINVAL; -- 2.51.1
