Op 08-04-16 om 01:23 schreef Matt Roper: > On Wed, Mar 23, 2016 at 02:58:07PM +0100, Maarten Lankhorst wrote: >> The modeset state checker no longer has full access to the hardware, >> instead it should only check affected crtc's. >> >> Looking for disabled stuff can be checked immediately after all crtc >> disables have completed, while each enabled crtc can be checked right >> after being enabled. >> >> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> >> --- >> drivers/gpu/drm/i915/intel_display.c | 24 +++++------------------- >> 1 file changed, 5 insertions(+), 19 deletions(-) >> >> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c >> index 4148b262f2a7..b6a75aa32e5a 100644 >> --- a/drivers/gpu/drm/i915/intel_display.c >> +++ b/drivers/gpu/drm/i915/intel_display.c >> @@ -13027,28 +13027,13 @@ check_disabled_dpll_state(struct drm_device *dev) >> } >> >> static void >> -intel_modeset_check_disabled(struct drm_device *dev, >> - struct drm_atomic_state *old_state) >> +intel_modeset_check_disabled(struct drm_device *dev) >> { >> check_encoder_state(dev); >> check_connector_state(dev, NULL); >> check_disabled_dpll_state(dev); >> } >> >> -static void >> -intel_modeset_check_state(struct drm_device *dev, >> - struct drm_atomic_state *old_state) >> -{ >> - struct drm_crtc_state *old_crtc_state; >> - struct drm_crtc *crtc; >> - int i; >> - >> - for_each_crtc_in_state(old_state, crtc, old_crtc_state, i) >> - intel_modeset_check_crtc(crtc, old_crtc_state, crtc->state); >> - >> - intel_modeset_check_disabled(dev, old_state); >> -} >> - >> static void update_scanline_offset(struct intel_crtc *crtc) >> { >> struct drm_device *dev = crtc->base.dev; >> @@ -13616,6 +13601,8 @@ static int intel_atomic_commit(struct drm_device *dev, >> if (dev_priv->display.modeset_commit_cdclk && >> intel_state->dev_cdclk != dev_priv->cdclk_freq) >> dev_priv->display.modeset_commit_cdclk(state); >> + >> + intel_modeset_check_disabled(dev); > As noted on patch #1, since we're checking all disabled state (and not > just the things that are newly-disabled by this transaction), we may not > hold full locks over everything that's disabled here and might be racing > with other updates. But we're no worse off than we were before. > > As a minor behavior change, it looks like we're also no longer calling > this when we're doing non-modeset pipe updates, but that should be fine. > This is true, but enabling a pipe requires connection_mutex, which is always held if we do a modeset anyway.. _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx