Fix System hangs on black screen when reboot

Bug #1949321 reported by koba
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
HWE Next
Fix Released
Undecided
Unassigned
linux (Ubuntu)
Fix Released
Undecided
koba
Focal
Invalid
Undecided
Unassigned
Hirsute
Won't Fix
Undecided
koba
Impish
Won't Fix
Undecided
koba
Jammy
Fix Released
Undecided
koba
linux-oem-5.10 (Ubuntu)
Invalid
Undecided
Unassigned
Focal
Won't Fix
Undecided
koba
Hirsute
Invalid
Undecided
Unassigned
Impish
Invalid
Undecided
Unassigned
Jammy
Invalid
Undecided
Unassigned
linux-oem-5.14 (Ubuntu)
Invalid
Undecided
Unassigned
Focal
Fix Released
Undecided
koba
Hirsute
Invalid
Undecided
Unassigned
Impish
Invalid
Undecided
Unassigned
Jammy
Invalid
Undecided
Unassigned

Bug Description

[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.

koba (kobako)
Changed in linux (Ubuntu Hirsute):
assignee: nobody → koba (kobako)
status: New → In Progress
Changed in linux (Ubuntu Impish):
assignee: nobody → koba (kobako)
status: New → In Progress
Changed in linux (Ubuntu Jammy):
assignee: nobody → koba (kobako)
status: New → In Progress
Changed in linux-oem-5.10 (Ubuntu Focal):
assignee: nobody → koba (kobako)
status: New → In Progress
Changed in linux-oem-5.14 (Ubuntu Focal):
assignee: nobody → koba (kobako)
status: New → In Progress
koba (kobako)
description: updated
koba (kobako)
tags: added: oem-priority originate-from-1946057 somerville
tags: added: originate-from-1942069
Timo Aaltonen (tjaalton)
Changed in linux-oem-5.14 (Ubuntu Focal):
status: In Progress → Fix Committed
Changed in linux-oem-5.14 (Ubuntu Jammy):
status: New → Invalid
Changed in linux-oem-5.10 (Ubuntu Jammy):
status: New → Invalid
koba (kobako)
tags: added: verification-done-focal
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package linux-oem-5.14 - 5.14.0-1007.7

---------------
linux-oem-5.14 (5.14.0-1007.7) focal; urgency=medium

  * focal/linux-oem-5.14: 5.14.0-1007.7 -proposed tracker (LP: #1949349)

  * Intel I225-IT ethernet controller: igc: probe of 0000:02:00.0 failed with
    error -1 (LP: #1945576)
    - igc: Remove _I_PHY_ID checking
    - igc: Remove phy->type checking

  * Fix Screen freeze after resume from suspend with iGPU [1002:6987]
    (LP: #1949050)
    - drm/amdgpu: reenable BACO support for 699F:C7 polaris12 SKU
    - drm/amdgpu: add missing cleanups for Polaris12 UVD/VCE on suspend
    - drm/amdgpu: Fix crash on device remove/driver unload

  * Fail to detect audio output from external monitor (LP: #1948767)
    - ALSA: hda: intel: Allow repeatedly probing on codec configuration errors

  * Fix System hangs on black screen when reboot (LP: #1949321)
    - SAUCE: drm/i915: Don't request GMBUS to generate irqs when called while irqs
      are off
    - SAUCE: drm/i915/hdmi: Turn DP++ TMDS output buffers back on in
      encoder->shutdown()

 -- Timo Aaltonen <email address hidden> Mon, 01 Nov 2021 12:38:15 +0200

Changed in linux-oem-5.14 (Ubuntu Focal):
status: Fix Committed → Fix Released
Timo Aaltonen (tjaalton)
Changed in linux-oem-5.14 (Ubuntu Hirsute):
status: New → Invalid
Changed in linux-oem-5.14 (Ubuntu Impish):
status: New → Invalid
Changed in linux-oem-5.10 (Ubuntu Hirsute):
status: New → Invalid
Changed in linux-oem-5.10 (Ubuntu Impish):
status: New → Invalid
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package linux - 5.15.0-17.17

---------------
linux (5.15.0-17.17) jammy; urgency=medium

  * jammy/linux: 5.15.0-17.17 -proposed tracker (LP: #1957809)

 -- Andrea Righi <email address hidden> Thu, 13 Jan 2022 17:11:21 +0100

Changed in linux (Ubuntu Jammy):
status: In Progress → Fix Released
Revision history for this message
Brian Murray (brian-murray) wrote :

Ubuntu 21.10 (Impish Indri) has reached end of life, so this bug will not be fixed for that specific release.

Changed in linux (Ubuntu Impish):
status: In Progress → Won't Fix
Timo Aaltonen (tjaalton)
Changed in linux (Ubuntu Hirsute):
status: In Progress → Won't Fix
Changed in linux (Ubuntu Focal):
status: New → Invalid
Changed in linux-oem-5.10 (Ubuntu Focal):
status: In Progress → Won't Fix
Changed in hwe-next:
status: New → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.