]> Pileus Git - ~andy/linux/commitdiff
Merge remote branch 'intel/drm-intel-fixes' of /ssd/git/drm-next into drm-fixes
authorDave Airlie <airlied@redhat.com>
Wed, 2 Mar 2011 02:48:23 +0000 (12:48 +1000)
committerDave Airlie <airlied@redhat.com>
Wed, 2 Mar 2011 02:48:23 +0000 (12:48 +1000)
drivers/gpu/drm/i915/i915_dma.c

index 17bd766f20811ae5622a4276adf78de9a77c5208..e33d9be7df3b7455c4f4f72085079c0450d50903 100644 (file)
@@ -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) {