On 12/1/25 12:02, Tvrtko Ursulin wrote:
> 
> On 01/12/2025 08:27, Christian König wrote:
>> On 11/28/25 16:08, Tvrtko Ursulin wrote:
>>> 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.
>>
>> Well that is actually not correct. It is only guaranteed to be CPU 
>> accessible on 64bit kernels!
>>
>> I suggest to use the appropriate test function to see if a BO is fully CPU 
>> accessible or not and just drop the check for the 
>> AMDGPU_GEM_CREATE_NO_CPU_ACCESS flag.
>>
>> BTW: It is perfectly normal for the framebuffer to not be in VRAM on APUs! 
>> So the check below is broken as well.
> 
> Hmm I also misread the tail end of this function. It wouldn't even work if 
> frame buffer was non-contiguous since it uses ttm_bo_kmap.

Oh, yeah that won't work for scanout from GTT.

But we never implemented non-contigius scanout from VRAM (it is still on the 
TODO list). So in theory you could use direct access for that case.

Regards,
Christian.

> Never mind then, archive to /dev/null please.
> 
> Regards,
> 
> Tvrtko
> 
>>>
>>> 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;
>>
> 

Reply via email to