[PATCH 8/8] drm/ast: Avoid reprogramming primary-plane scanout address

Thomas Zimmermann tzimmermann at suse.de
Tue Oct 11 14:59:29 UTC 2022


Hi

Am 11.10.22 um 16:21 schrieb Jocelyn Falempe:
> On 10/10/2022 12:36, Thomas Zimmermann wrote:
>> Some AST-based BMCs stop display output for up to 5 seconds after
>> reprogramming the scanout address. As the address is fixed, avoid
>> re-setting the address' value.
>>
>> Reported-by: Jocelyn Falempe <jfalempe at redhat.com>
>> Signed-off-by: Thomas Zimmermann <tzimmermann at suse.de>
>> ---
>>   drivers/gpu/drm/ast/ast_mode.c | 12 ++++++++++--
>>   1 file changed, 10 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/ast/ast_mode.c 
>> b/drivers/gpu/drm/ast/ast_mode.c
>> index 1b991658290b..54a9643d86ce 100644
>> --- a/drivers/gpu/drm/ast/ast_mode.c
>> +++ b/drivers/gpu/drm/ast/ast_mode.c
>> @@ -672,9 +672,17 @@ static void 
>> ast_primary_plane_helper_atomic_update(struct drm_plane *plane,
>>       }
>>       ast_set_offset_reg(ast, fb);
>> -    ast_set_start_address_crt1(ast, (u32)ast_plane->offset);
>> -    ast_set_index_reg_mask(ast, AST_IO_SEQ_PORT, 0x1, 0xdf, 0x00);
>> +    /*
>> +     * Some BMCs stop scanning out the video signal after the driver
>> +     * reprogrammed the scanout address. This stalls display output
>> +     * for several seconds and makes the display unusable. Therefore
>> +     * only reprogram the address after enabling the plane.
>> +     */
>> +    if (!old_fb && fb) {
>> +        ast_set_start_address_crt1(ast, (u32)ast_plane->offset);
>> +        ast_set_index_reg_mask(ast, AST_IO_SEQ_PORT, 0x1, 0xdf, 0x00);
>> +    }
>>   }
> 
> I've tested the series, and BMC is still very slow with Gnome/Wayland.
> 
> It's because ast_set_offset_reg() also trigger a 5s freeze of the BMC.
> 
> I added this, and it works well:
> 
> if (!old_fb || old_fb->pitches[0] != fb->pitches[0])
>      ast_set_offset_reg(ast, fb);

Great thanks for testing. I'll add this to the next version.

I wonder if that problem is in all ast chips or just this one. :/

Best regards
Thomas

> 
> 
>>   static void ast_primary_plane_helper_atomic_disable(struct drm_plane 
>> *plane,
> 
> 
> 
> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Ivo Totev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20221011/a8694bb0/attachment-0001.sig>


More information about the dri-devel mailing list