On 2026-06-23 04:28, Michel Dänzer wrote:
> On 6/22/26 19:17, [email protected] wrote:
>>
>> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c 
>> b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
>> index da118377b73a8..732ddafb5cfea 100644
>> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
>> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
>> @@ -4135,6 +4135,28 @@ static void amdgpu_dm_enable_self_refresh(struct 
>> amdgpu_display_manager *dm,
>>      }
>>  }
>>  
>> +static void dm_arm_vblank_event(struct amdgpu_crtc *acrtc,
>> +                            struct dm_crtc_state *acrtc_state,
>> +                            bool pflip_update,
>> +                            bool cursor_update)
>> +{
>> +    assert_spin_locked(&acrtc->base.dev->event_lock);
>> +
>> +    if (pflip_update && acrtc->base.state->event &&
>> +    acrtc_state->active_planes > 0) {
>> +            drm_crtc_vblank_get(&acrtc->base);
>> +            WARN_ON(acrtc->pflip_status != AMDGPU_FLIP_NONE);
>> +            /* Arm flip completion handling and event delivery after 
>> programming. */
>> +            prepare_flip_isr(acrtc);
>> +    } else if (cursor_update && acrtc_state->active_planes > 0) {
>> +            if (acrtc->base.state->event) {
>> +                    drm_crtc_vblank_get(&acrtc->base);
>> +                    acrtc->event = acrtc->base.state->event;
>> +                    acrtc->base.state->event = NULL;
>> +            }
>> +    }
>> +}
> 
> This looks like it can be cleaned up a bit (feel free to ignore though):
> 
> {
>       assert_spin_locked(&acrtc->base.dev->event_lock);
> 
>       if (acrtc->base.state->event && acrtc_state->active_planes > 0) {
>               if (pflip_update) {
>                       drm_crtc_vblank_get(&acrtc->base);
>                       WARN_ON(acrtc->pflip_status != AMDGPU_FLIP_NONE);
>                       /* Arm flip completion handling and event delivery 
> after programming. */
>                       prepare_flip_isr(acrtc);
>               } else if (cursor_update) {
>                       drm_crtc_vblank_get(&acrtc->base);
>                       acrtc->event = acrtc->base.state->event;
>                       acrtc->base.state->event = NULL;
>               }
>       }
> }
> 

This looks a lot nicer, will include when merging or in v3 if needed.
Likewise with the two other comments below.

Thanks,
Leo

> 
>> +    /*
>> +     * DCE depends on a combination of GRPH_FLIP, VLINE0, and VUPDATE for
>> +     * event delivery. Only GRPH_FLIP handler can send pflip events, and it
>> +     * only fires if HW latched to the flip. Maintain legacy behavior by
>> +     * arming event before programming.
>> +     */
>> +    if (amdgpu_ip_version(dm->adev, DCE_HWIP, 0) == 0) {
>> +            scoped_guard(spinlock_irqsave, &pcrtc->dev->event_lock)
>> +                    dm_arm_vblank_event(acrtc_attach, acrtc_state,
>> +                                    pflip_present, cursor_update);
>>      }
> 
> Coding style:
> 
>       if (amdgpu_ip_version(dm->adev, DCE_HWIP, 0) == 0) {
>               scoped_guard(spinlock_irqsave, &pcrtc->dev->event_lock) {
>                       dm_arm_vblank_event(acrtc_attach, acrtc_state,
>                                           pflip_present, cursor_update);
>               }
>       }
> 
> Nested multi-line statements require curly braces.
> 
> 
>> +            if (updated_planes_and_streams)
>> +                    flip_latched_during_prog =
>> +                            !dc_get_flip_pending_on_otg(dm->dc, 
>> acrtc_attach->otg_inst);
> 
>               if (updated_planes_and_streams) {
>                       flip_latched_during_prog =
>                               !dc_get_flip_pending_on_otg(dm->dc, 
> acrtc_attach->otg_inst);
>               }
> 
> 

Reply via email to