linux/drivers/gpu/drm/i915
Jan Niehusmann 6927faf309 drm/i915: fix memory corruption with GM965 and >4GB RAM
On a Thinkpad x61s, I noticed some memory corruption when
plugging/unplugging the external VGA connection. The symptoms are that
4 bytes at the beginning of a page get overwritten by zeroes.
The address of the corruption varies when rebooting the machine, but
stays constant while it's running (so it's possible to repeatedly write
some data and then corrupt it again by plugging the cable).

Further investigation revealed that the corrupted address is
(dev_priv->status_page_dmah->busaddr & 0xffffffff), ie. the beginning of
the hardware status page of the i965 graphics card, cut to 32 bits.

So it seems that for some memory access, the hardware uses only 32 bit
addressing. If the hardware status page is located >4GB, this
corrupts unrelated memory.

Signed-off-by: Jan Niehusmann <jan@gondor.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: stable@kernel.org
2011-03-01 23:18:44 +00:00
..
dvo_ch7xxx.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
dvo_ch7017.c drm/i915/dvo: Report LVDS attached to ch701x as connected 2010-12-30 13:50:43 +00:00
dvo_ivch.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
dvo_sil164.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
dvo_tfp410.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
dvo.h drm/i915: Subclass intel_encoder. 2010-08-09 11:24:28 -07:00
i915_debugfs.c drm/i915/debugfs: Correct format after changing type of err object 'size' 2011-01-12 20:24:50 +00:00
i915_dma.c drm/i915: fix memory corruption with GM965 and >4GB RAM 2011-03-01 23:18:44 +00:00
i915_drv.c drm/i915: Disable RC6 on Ironlake 2011-02-09 17:04:54 +00:00
i915_drv.h drm/i915: Disable RC6 on Ironlake 2011-02-09 17:04:54 +00:00
i915_gem_debug.c drm/i915: Use drm_i915_gem_object as the preferred type 2010-11-23 20:19:10 +00:00
i915_gem_evict.c drm/i915/evict: Ensure we completely cleanup on failure 2011-01-11 22:55:39 +00:00
i915_gem_execbuffer.c drm/i915: Fix use of invalid array size for ring->sync_seqno 2011-01-23 12:52:11 +00:00
i915_gem_gtt.c drm/i915,agp/intel: Do not clear stolen entries 2011-01-24 18:26:25 +00:00
i915_gem_tiling.c drm/i915: fix corruptions on i8xx due to relaxed fencing 2011-02-24 00:33:49 +00:00
i915_gem.c drm/i915,agp/intel: Do not clear stolen entries 2011-01-24 18:26:25 +00:00
i915_ioc32.c drm: convert drm_ioctl to unlocked_ioctl 2009-12-18 11:22:31 +10:00
i915_irq.c drm/i915: don't enable FDI & transcoder interrupts after all 2011-02-22 15:52:40 +00:00
i915_mem.c drm: Remove memory debugging infrastructure. 2009-06-18 13:00:33 -07:00
i915_reg.h drm/i915: Do not handle backlight combination mode specially 2011-02-21 15:25:43 -08:00
i915_suspend.c drm/i915: cleanup rc6 code 2011-01-11 20:43:59 +00:00
i915_trace_points.c drm/i915: Add tracepoints 2009-09-23 01:05:21 +01:00
i915_trace.h drm/i915: Kill the get_fence tracepoint 2010-12-02 10:20:47 +00:00
intel_acpi.c drm/i915: i915 cannot provide switcher services. 2010-12-08 15:40:44 +10:00
intel_bios.c drm/i915: Add a module option to override the use of SSC 2011-01-13 16:05:58 +00:00
intel_bios.h drm/i915: Initialize panel timing registers if VBIOS did not 2010-10-19 09:17:24 +01:00
intel_crt.c drm/i915/crt: Force the initial probe after reset 2011-01-25 19:23:29 +00:00
intel_display.c drm/i915: Fix unintended recursion in ironlake_disable_rc6 2011-02-24 17:16:43 +00:00
intel_dp.c drm/i915: Trigger modesetting if force-audio changes 2011-02-11 09:20:50 +00:00
intel_drv.h drm/i915: Disable RC6 on Ironlake 2011-02-09 17:04:54 +00:00
intel_dvo.c drm/i915/dvo: Fix panel and DDC i2c pins 2010-09-28 23:34:44 +01:00
intel_fb.c Revert "drm: Update fbdev fb_fix_screeninfo" 2011-01-14 16:10:28 -08:00
intel_hdmi.c drm/i915: Trigger modesetting if force-audio changes 2011-02-11 09:20:50 +00:00
intel_i2c.c Merge branch 'drm-intel-fixes' into drm-intel-next 2010-11-15 06:49:30 +00:00
intel_lvds.c drm/i915/lvds: Restore dithering on native modes for gen2/3 2011-02-06 15:53:30 +00:00
intel_modes.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
intel_opregion.c drm/i915: Use consistent mappings for OpRegion between ACPI and i915 2011-01-24 18:28:08 +00:00
intel_overlay.c drm/i915: Implement GPU semaphores for inter-ring synchronisation on SNB 2010-12-05 00:37:38 +00:00
intel_panel.c drm/i915: Do not handle backlight combination mode specially 2011-02-21 15:25:43 -08:00
intel_ringbuffer.c drm/i915: Invalidate TLB caches on SNB BLT/BSD rings 2011-02-02 15:52:38 +00:00
intel_ringbuffer.h drm/i915/ringbuffer: Fix use of stale HEAD position whilst polling for space 2011-01-20 17:26:57 +00:00
intel_sdvo_regs.h drm/i915/sdvo: Add missing TV filters 2010-08-09 11:24:29 -07:00
intel_sdvo.c drm/i915: Trigger modesetting if force-audio changes 2011-02-11 09:20:50 +00:00
intel_tv.c drm/i915/tv: Use polling rather than interrupt-based hotplug 2011-02-11 09:20:51 +00:00
Makefile drm/i915: Split i915_gem_execbuffer into its own file. 2010-11-25 21:19:25 +00:00