patch from Andrew Morton tree from Arjan van de Ven fixes some oopses seen
authorDave Airlie <airlied@linux.ie>
Sat, 10 Apr 2004 08:15:48 +0000 (08:15 +0000)
committerDave Airlie <airlied@linux.ie>
Sat, 10 Apr 2004 08:15:48 +0000 (08:15 +0000)
    with 4G/4G split

linux-core/i810_dma.c
linux-core/i830_dma.c
linux/i810_dma.c
linux/i830_dma.c

index 6e7dc89..651b080 100644 (file)
@@ -244,7 +244,7 @@ int i810_dma_cleanup(drm_device_t *dev)
         * may not have been called from userspace and after dev_private
         * is freed, it's too late.
         */
-       if (dev->irq_enabled) DRM(irq_uninstall)(dev);
+       if ( dev->irq_enabled ) DRM(irq_uninstall)(dev);
 #endif
 
        if (dev->dev_private) {
@@ -851,11 +851,12 @@ static void i810_dma_dispatch_vertex(drm_device_t *dev,
        if (buf_priv->currently_mapped == I810_BUF_MAPPED) {
                unsigned int prim = (sarea_priv->vertex_prim & PR_MASK);
 
-               *(u32 *)buf_priv->virtual = (GFX_OP_PRIMITIVE | prim | 
-                                            ((used/4)-2));
+               DRM_PUT_USER_UNCHECKED((u32 *)buf_priv->virtual, 
+                                       (GFX_OP_PRIMITIVE | prim | 
+                                       ((used/4)-2)));
 
                if (used & 4) {
-                       *(u32 *)((u32)buf_priv->virtual + used) = 0;
+                       DRM_PUT_USER_UNCHECKED((u32 *)((u32)buf_priv->virtual + used), 0);
                        used += 4;
                }
 
index 626f84b..c2fd8c2 100644 (file)
@@ -1173,17 +1173,17 @@ static void i830_dma_dispatch_vertex(drm_device_t *dev,
        if (buf_priv->currently_mapped == I830_BUF_MAPPED) {
                u32 *vp = buf_priv->virtual;
 
-               vp[0] = (GFX_OP_PRIMITIVE |
+               DRM_PUT_USER_UNCHECKED(&vp[0], (GFX_OP_PRIMITIVE |
                         sarea_priv->vertex_prim |
-                        ((used/4)-2));
+                        ((used/4)-2)));
 
                if (dev_priv->use_mi_batchbuffer_start) {
-                       vp[used/4] = MI_BATCH_BUFFER_END; 
+                       DRM_PUT_USER_UNCHECKED(&vp[used/4], MI_BATCH_BUFFER_END);
                        used += 4; 
                }
                
                if (used & 4) {
-                       vp[used/4] = 0;
+                       DRM_PUT_USER_UNCHECKED(&vp[used/4], 0);
                        used += 4;
                }
 
index 6e7dc89..651b080 100644 (file)
@@ -244,7 +244,7 @@ int i810_dma_cleanup(drm_device_t *dev)
         * may not have been called from userspace and after dev_private
         * is freed, it's too late.
         */
-       if (dev->irq_enabled) DRM(irq_uninstall)(dev);
+       if ( dev->irq_enabled ) DRM(irq_uninstall)(dev);
 #endif
 
        if (dev->dev_private) {
@@ -851,11 +851,12 @@ static void i810_dma_dispatch_vertex(drm_device_t *dev,
        if (buf_priv->currently_mapped == I810_BUF_MAPPED) {
                unsigned int prim = (sarea_priv->vertex_prim & PR_MASK);
 
-               *(u32 *)buf_priv->virtual = (GFX_OP_PRIMITIVE | prim | 
-                                            ((used/4)-2));
+               DRM_PUT_USER_UNCHECKED((u32 *)buf_priv->virtual, 
+                                       (GFX_OP_PRIMITIVE | prim | 
+                                       ((used/4)-2)));
 
                if (used & 4) {
-                       *(u32 *)((u32)buf_priv->virtual + used) = 0;
+                       DRM_PUT_USER_UNCHECKED((u32 *)((u32)buf_priv->virtual + used), 0);
                        used += 4;
                }
 
index 626f84b..c2fd8c2 100644 (file)
@@ -1173,17 +1173,17 @@ static void i830_dma_dispatch_vertex(drm_device_t *dev,
        if (buf_priv->currently_mapped == I830_BUF_MAPPED) {
                u32 *vp = buf_priv->virtual;
 
-               vp[0] = (GFX_OP_PRIMITIVE |
+               DRM_PUT_USER_UNCHECKED(&vp[0], (GFX_OP_PRIMITIVE |
                         sarea_priv->vertex_prim |
-                        ((used/4)-2));
+                        ((used/4)-2)));
 
                if (dev_priv->use_mi_batchbuffer_start) {
-                       vp[used/4] = MI_BATCH_BUFFER_END; 
+                       DRM_PUT_USER_UNCHECKED(&vp[used/4], MI_BATCH_BUFFER_END);
                        used += 4; 
                }
                
                if (used & 4) {
-                       vp[used/4] = 0;
+                       DRM_PUT_USER_UNCHECKED(&vp[used/4], 0);
                        used += 4;
                }