drm/i915: Unset cursor if out-of-bounds upon mode change (v4)
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 9 Jul 2010 07:45:04 +0000 (08:45 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 10 Aug 2010 18:09:22 +0000 (11:09 -0700)
commit5078304217e1e87bc7ffe8d7a4076e4cb0c0a318
tree822c5101b0e7db6fdac509a4c0e1cabce713b50e
parentc1899005b1dc135bf42198ce65cfb52c22f5bdf9
drm/i915: Unset cursor if out-of-bounds upon mode change (v4)

commit cda4b7d3a5b1dcbc0d8e7bad52134347798e9047 upstream.

The docs warn that to position the cursor such that no part of it is
visible on the pipe is an undefined operation. Avoid such circumstances
upon changing the mode, or at any other time, by unsetting the cursor if
it moves out of bounds.

"For normal high resolution display modes, the cursor must have at least a
single pixel positioned over the active screen.” (p143, p148 of the hardware
registers docs).

Fixes:

  Bug 24748 - [965G] Graphics crashes when resolution is changed with KMS
              enabled
  https://bugs.freedesktop.org/show_bug.cgi?id=24748

v2: Only update the cursor registers if they change.
v3: Fix the unsigned comparision of x,y against width,height.
v4: Always set CUR.BASE or else the cursor may become corrupt.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reported-by: Christian Eggers <ceggers@gmx.de>
Cc: Christopher James Halse Rogers <chalserogers@gmail.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/gpu/drm/i915/intel_display.c
drivers/gpu/drm/i915/intel_drv.h