APPLIED [OEM-5.14] Re: [PATCH 0/3][SRU][U/H/I/OEM-5.10/OEM-5.14] Fix System hangs on black screen when reboot

Timo Aaltonen tjaalton at ubuntu.com
Mon Nov 1 09:17:08 UTC 2021


On 1.11.2021 6.14, Koba Ko wrote:
> BugLink: https://bugs.launchpad.net/bugs/1949321
> 
> [Impact]
> System hangs on black screen when reboot
> 
> [Fix]
> Looks like our VBIOS/GOP generally fail to turn the DP dual mode adater
> TMDS output buffers back on after a reboot. This leads to a black screen
> after reboot if we turned the TMDS output buffers off prior to reboot.
> And if i915 decides to do a fastboot the black screen will persist even
> after i915 takes over.
> 
> Apparently this has been a problem ever since commit b2ccb822d376 ("drm/i915:Enable/disable TMDS output buffers in DP++ adaptor as needed") if one rebooted while the display was turned off. And things became worse with commit fe0f1e3bfdfe ("drm/i915: Shut down displays gracefully on reboot") since now we always turn the display off before a reboot.
> 
> This was reported on a RKL, but I confirmed the same behaviour on my
> SNB as well. So looks pretty universal.
> 
> Let's fix this by explicitly turning the TMDS output buffers back on
> in the encoder->shutdown() hook. Note that this gets called after irqs
> have been disabled, so the i2c communication with the DP dual mode
> adapter has to be performed via polling (which the gmbus code is
> perfectly happy to do for us).
> 
> We also need a bit of care in handling DDI encoders which may or may
> not be set up for HDMI output. Specifically ddc_pin will not be
> populated for a DP only DDI encoder, in which case we don't want to
> call intel_gmbus_get_adapter(). We can handle that by simply doing
> the dual mode adapter type check before calling
> intel_gmbus_get_adapter().
> Ref: https://patchwork.freedesktop.org/series/96433/
> 
> [Test]
> 1. install kernel
> 2. reboot
> 3. check the monitor works well.
> 
> [Regression Potential]
> Medium, patch has sent to patchwork but may have a upgraded version in the furtue.
> 
> Ville Syrjälä (2):
>    drm/i915: Don't request GMBUS to generate irqs when called while irqs
>      are off
>    drm/i915/hdmi: Turn DP++ TMDS output buffers back on in
>      encoder->shutdown()
> 
>   drivers/gpu/drm/i915/display/g4x_hdmi.c    |  1 +
>   drivers/gpu/drm/i915/display/intel_ddi.c   |  1 +
>   drivers/gpu/drm/i915/display/intel_gmbus.c | 13 +++++++++++--
>   drivers/gpu/drm/i915/display/intel_hdmi.c  | 16 ++++++++++++++--
>   drivers/gpu/drm/i915/display/intel_hdmi.h  |  1 +
>   5 files changed, 28 insertions(+), 4 deletions(-)
> 

applied to oem-5.14, thanks


-- 
t



More information about the kernel-team mailing list