Comment 24 for bug 812638

Revision history for this message
Jose Plans (jplans) wrote :

SRU Justification:

Impact:
  Every Lenovo x420s with Samsung panels will present a corrupted display when booting / mode setting. The systems are not usable.

Fixes:
  https://bugs.launchpad.net/ubuntu/+source/linux/+bug/812638

Fix:
  Backported patch commit from upstream: b24e71798871089da1a4ab049db2800afc1aac0c drm/i915: add pipe/plane
enable/disable functions by Jesse Barnes.

Test case:
  The reproducer is to simply boot the system with any kernels prior to Oneiric and using Lenovo x420 and it's Intel graphical chipset.

Hardware tested was:
  - Lenovo x301 and on Lenovo x420s with Samsung panel.

Note:
  This a very intrusive patch, I have spent some time studying it and I came to the conclusion it would be safer and easier to maintain if this patch was include as-is rather than providing a forked patch. I would like the list opinion on this.

  There are three major changes:
 (1) Addition of functions allowing to cleanly add or remove pipes / planes.
 (2) Addition of assertion functions to alert help prevent scenarios where pipes or planes are not present and they should be. For example a plane is being activated but there was no pipe active to contain it.
 (3) During crtc mode setting, now the pipe and planes are allocated later in the process conforming to intel specifications. Seen at the changes made in: intel_crtc_mode_set() only affecting ironlake+/sandybridge.

(3) is the real fix for this panel issue, however (1) is necessary for
it as well as (2) helps preventing further regressions.

 drivers/gpu/drm/i915/i915_reg.h | 5 +-
 drivers/gpu/drm/i915/intel_display.c | 308
+++++++++++++++++++++++----------
 2 files changed, 217 insertions(+), 96 deletions(-)