On 2018-04-27 06:27 AM, Shirish S wrote: > This patch is in continuation to the > "843e3c7 drm/amd/display: defer modeset check in dm_update_planes_state" > where we started to eliminate the dependency on > DRM_MODE_ATOMIC_ALLOW_MODESET to be set by the user space, > which as such is not mandatory. > > After deferring, this patch eliminates the dependency on the flag > for overlay planes. > > This has to be done in stages as its a pretty complex and requires thorough > testing before we free primary planes as well from dependency on modeset > flag. > > Signed-off-by: Shirish S <shirish.s at amd.com> After the offline discussion I'm okay to go ahead with this as it should be relatively self-contained and currently unblocks one use-case. We'll definitely need to address this code soon and find a good way to stop abusing the allow_modeset flag. Reviewed-by: Harry Wentland <harry.wentland at amd.com> If this does cause unexpected fallout we can always revert and revisit. Harry > --- > drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > 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 1a63c04..87b661d 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > @@ -4174,7 +4174,7 @@ static void amdgpu_dm_commit_planes(struct drm_atomic_state *state, > } > spin_unlock_irqrestore(&crtc->dev->event_lock, flags); > > - if (!pflip_needed) { > + if (!pflip_needed || plane->type == DRM_PLANE_TYPE_OVERLAY) { > WARN_ON(!dm_new_plane_state->dc_state); > > plane_states_constructed[planes_count] = dm_new_plane_state->dc_state; > @@ -4884,7 +4884,8 @@ static int dm_update_planes_state(struct dc *dc, > > /* Remove any changed/removed planes */ > if (!enable) { > - if (pflip_needed) > + if (pflip_needed && > + plane && plane->type != DRM_PLANE_TYPE_OVERLAY) > continue; > > if (!old_plane_crtc) > @@ -4931,7 +4932,8 @@ static int dm_update_planes_state(struct dc *dc, > if (!dm_new_crtc_state->stream) > continue; > > - if (pflip_needed) > + if (pflip_needed && > + plane && plane->type != DRM_PLANE_TYPE_OVERLAY) > continue; > > WARN_ON(dm_new_plane_state->dc_state); >