diff options
author | Ben Widawsky <ben@bwidawsk.net> | 2012-04-16 17:07:47 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-05-03 05:18:01 -0400 |
commit | 4f0c7cfbb4d25aad44137b6531365d29d3080349 (patch) | |
tree | 036ff522f3ac38827c116f406af9492dc13d2cd7 /drivers/gpu/drm/i915/i915_gem.c | |
parent | 0d38f00904bd74d791d60105dd4323c60f1767cb (diff) |
drm/i915: [sparse] __iomem fixes for gem
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>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 7bc4a40132ad..9e9ea759e496 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
@@ -282,8 +282,8 @@ __copy_to_user_swizzled(char __user *cpu_vaddr, | |||
282 | } | 282 | } |
283 | 283 | ||
284 | static inline int | 284 | static inline int |
285 | __copy_from_user_swizzled(char __user *gpu_vaddr, int gpu_offset, | 285 | __copy_from_user_swizzled(char *gpu_vaddr, int gpu_offset, |
286 | const char *cpu_vaddr, | 286 | const char __user *cpu_vaddr, |
287 | int length) | 287 | int length) |
288 | { | 288 | { |
289 | int ret, cpu_offset = 0; | 289 | int ret, cpu_offset = 0; |
@@ -558,11 +558,14 @@ fast_user_write(struct io_mapping *mapping, | |||
558 | char __user *user_data, | 558 | char __user *user_data, |
559 | int length) | 559 | int length) |
560 | { | 560 | { |
561 | char *vaddr_atomic; | 561 | void __iomem *vaddr_atomic; |
562 | void *vaddr; | ||
562 | unsigned long unwritten; | 563 | unsigned long unwritten; |
563 | 564 | ||
564 | vaddr_atomic = io_mapping_map_atomic_wc(mapping, page_base); | 565 | vaddr_atomic = io_mapping_map_atomic_wc(mapping, page_base); |
565 | unwritten = __copy_from_user_inatomic_nocache(vaddr_atomic + page_offset, | 566 | /* We can use the cpu mem copy function because this is X86. */ |
567 | vaddr = (void __force*)vaddr_atomic + page_offset; | ||
568 | unwritten = __copy_from_user_inatomic_nocache(vaddr, | ||
566 | user_data, length); | 569 | user_data, length); |
567 | io_mapping_unmap_atomic(vaddr_atomic); | 570 | io_mapping_unmap_atomic(vaddr_atomic); |
568 | return unwritten; | 571 | return unwritten; |