Message ID | 1270018187-7923-2-git-send-email-apw@canonical.com |
---|---|
State | Accepted |
Delegated to: | Andy Whitcroft |
Headers | show |
Looks ok. Andy Whitcroft wrote: > From: Jesse Barnes <jbarnes@virtuousgeek.org> > > When we get a CRTC to use for load detection, we restore its DPMS state > if needed. We shouldn't, however, change the DRM configuration by > calling drm_helper_disable_unused_functions when we release the CRTC. > Doing so can cause problems with resume, since at suspend or lid close > time, X may choose to probe outputs. If it doesn't re-probe them at > open or resume time, LVDS won't be restored, since > drm_helper_disable_unused_functions will have turned it off, preventing > the mode set at lid open from restoring it. > > Fixes kernel bz #14997. > > Cc: stable at kernel.org > Tested-by: Takashi Iwai <tiwai at suse.de> > Tested-by: Thorsten Leemhuis <fedora at leemhuis.info> > Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org> > > BugLink: http://bugs.launchpad.net/bugs/488328 > [apw@canonical.com: that this fix was still under discussion upstream > with the likely final resolution being different. However the impact is > pretty great so we are taking this as an interim fix.] > > Signed-off-by: Chase Douglas <chase.douglas@canonical.com> > Signed-off-by: Andy Whitcroft <apw@canonical.com> Acked-by: Stefan Bader <stefan.bader@canonical.com> > --- > drivers/gpu/drm/i915/intel_display.c | 2 -- > 1 files changed, 0 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index 0d4c401..0574155 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -3742,7 +3742,6 @@ struct drm_crtc *intel_get_load_detect_pipe(struct intel_output *intel_output, > void intel_release_load_detect_pipe(struct intel_output *intel_output, int dpms_mode) > { > struct drm_encoder *encoder = &intel_output->enc; > - struct drm_device *dev = encoder->dev; > struct drm_crtc *crtc = encoder->crtc; > struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private; > struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private; > @@ -3752,7 +3751,6 @@ void intel_release_load_detect_pipe(struct intel_output *intel_output, int dpms_ > intel_output->base.encoder = NULL; > intel_output->load_detect_temp = false; > crtc->enabled = drm_helper_crtc_in_use(crtc); > - drm_helper_disable_unused_functions(dev); > } > > /* Switch crtc and output back off if necessary */
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 0d4c401..0574155 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -3742,7 +3742,6 @@ struct drm_crtc *intel_get_load_detect_pipe(struct intel_output *intel_output, void intel_release_load_detect_pipe(struct intel_output *intel_output, int dpms_mode) { struct drm_encoder *encoder = &intel_output->enc; - struct drm_device *dev = encoder->dev; struct drm_crtc *crtc = encoder->crtc; struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private; struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private; @@ -3752,7 +3751,6 @@ void intel_release_load_detect_pipe(struct intel_output *intel_output, int dpms_ intel_output->base.encoder = NULL; intel_output->load_detect_temp = false; crtc->enabled = drm_helper_crtc_in_use(crtc); - drm_helper_disable_unused_functions(dev); } /* Switch crtc and output back off if necessary */