drm/i915: [sparse] __iomem fixes for gem
authorBen Widawsky <ben@bwidawsk.net>
Mon, 16 Apr 2012 21:07:47 +0000 (14:07 -0700)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 3 May 2012 09:18:01 +0000 (11:18 +0200)
As with one of the earlier patches in the series, we're forced to cast
for copy_[to|from]_user. Again because of the nature of the GEN x86
exclusivity, this should be safe.

Signed-off-by: Ben Widawsky <benjamin.widawsky@intel.com>
[danvet: Added some bikeshed.]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_gem.c

index 7bc4a40..9e9ea75 100644 (file)
@@ -282,8 +282,8 @@ __copy_to_user_swizzled(char __user *cpu_vaddr,
 }
 
 static inline int
-__copy_from_user_swizzled(char __user *gpu_vaddr, int gpu_offset,
-                         const char *cpu_vaddr,
+__copy_from_user_swizzled(char *gpu_vaddr, int gpu_offset,
+                         const char __user *cpu_vaddr,
                          int length)
 {
        int ret, cpu_offset = 0;
@@ -558,11 +558,14 @@ fast_user_write(struct io_mapping *mapping,
                char __user *user_data,
                int length)
 {
-       char *vaddr_atomic;
+       void __iomem *vaddr_atomic;
+       void *vaddr;
        unsigned long unwritten;
 
        vaddr_atomic = io_mapping_map_atomic_wc(mapping, page_base);
-       unwritten = __copy_from_user_inatomic_nocache(vaddr_atomic + page_offset,
+       /* We can use the cpu mem copy function because this is X86. */
+       vaddr = (void __force*)vaddr_atomic + page_offset;
+       unwritten = __copy_from_user_inatomic_nocache(vaddr,
                                                      user_data, length);
        io_mapping_unmap_atomic(vaddr_atomic);
        return unwritten;