]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915: Don't clobber plane state on internal disables
authorMatt Roper <matthew.d.roper@intel.com>
Wed, 4 Mar 2015 18:49:04 +0000 (10:49 -0800)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 17 Mar 2015 21:29:59 +0000 (22:29 +0100)
commit0b70917a3f711fd5823125839ef3d3137821bb78
treee10f6f149bfb2bc51df4ffd36bce84f2c731875c
parentd73225b73a68a3c48ddadc1cb55a84fba473730c
drm/i915: Don't clobber plane state on internal disables

We need to disable all sprite planes when disabling the CRTC.  We had
been using the top-level atomic 'disable' entrypoint to accomplish this,
which was wrong.  Not only can this lead to various locking issues, it
also modifies the actual plane state, making it impossible to restore
the plane properly later.  For example, a DPMS off followed by a DPMS on
will result in any sprite planes in use not being restored properly.

The proper solution here is to call directly into our 'commit plane'
hook with a copy of the plane's current state that has 'visible' set to
false.  Committing this dummy state will turn off the plane, but will
not touch the actual plane->state pointer, allowing us to properly
restore the plane state later.

Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_display.c