diff options
author | 2011-03-02 12:48:23 +1000 | |
---|---|---|
committer | 2011-03-02 12:48:23 +1000 | |
commit | 0366ebbf94cfafbdb1fd8c30da47a945294fe1a1 (patch) | |
tree | 188a4118f0df3d92200f02678b4458c645476ed7 | |
parent | Linux 2.6.38-rc7 (diff) | |
parent | drm/i915: fix memory corruption with GM965 and >4GB RAM (diff) | |
download | wireguard-linux-0366ebbf94cfafbdb1fd8c30da47a945294fe1a1.tar.xz wireguard-linux-0366ebbf94cfafbdb1fd8c30da47a945294fe1a1.zip |
Merge remote branch 'intel/drm-intel-fixes' of /ssd/git/drm-next into drm-fixes
-rw-r--r-- | drivers/gpu/drm/i915/i915_dma.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c index 17bd766f2081..e33d9be7df3b 100644 --- a/drivers/gpu/drm/i915/i915_dma.c +++ b/drivers/gpu/drm/i915/i915_dma.c @@ -1895,6 +1895,17 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags) if (IS_GEN2(dev)) dma_set_coherent_mask(&dev->pdev->dev, DMA_BIT_MASK(30)); + /* 965GM sometimes incorrectly writes to hardware status page (HWS) + * using 32bit addressing, overwriting memory if HWS is located + * above 4GB. + * + * The documentation also mentions an issue with undefined + * behaviour if any general state is accessed within a page above 4GB, + * which also needs to be handled carefully. + */ + if (IS_BROADWATER(dev) || IS_CRESTLINE(dev)) + dma_set_coherent_mask(&dev->pdev->dev, DMA_BIT_MASK(32)); + mmio_bar = IS_GEN2(dev) ? 1 : 0; dev_priv->regs = pci_iomap(dev->pdev, mmio_bar, 0); if (!dev_priv->regs) { |