drm/i915: io unmap functions want __iomem
Don't cast away the __iomem from the io_mapping functions so that sparse won't be so unhappy when we pass the pointer to the unmap functions. Instead let's move the cast to where we actually use the pointer. Fixes the following sparse warnings: i915_gem.c:1022:33: warning: incorrect type in argument 1 (different address spaces) i915_gem.c:1022:33: expected void [noderef] <asn:2>*vaddr i915_gem.c:1022:33: got void *[assigned] vaddr i915_gem.c:1027:34: warning: incorrect type in argument 1 (different address spaces) i915_gem.c:1027:34: expected void [noderef] <asn:2>*vaddr i915_gem.c:1027:34: got void *[assigned] vaddr i915_gem.c:1199:33: warning: incorrect type in argument 1 (different address spaces) i915_gem.c:1199:33: expected void [noderef] <asn:2>*vaddr i915_gem.c:1199:33: got void *[assigned] vaddr i915_gem.c:1204:34: warning: incorrect type in argument 1 (different address spaces) i915_gem.c:1204:34: expected void [noderef] <asn:2>*vaddr i915_gem.c:1204:34: got void *[assigned] vaddr Cc: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20170901171252.31025-2-ville.syrjala@linux.intel.com Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
c23aa71bcf
commit
afe722bee4
1 changed files with 15 additions and 12 deletions
|
@ -1013,17 +1013,20 @@ gtt_user_read(struct io_mapping *mapping,
|
|||
loff_t base, int offset,
|
||||
char __user *user_data, int length)
|
||||
{
|
||||
void *vaddr;
|
||||
void __iomem *vaddr;
|
||||
unsigned long unwritten;
|
||||
|
||||
/* We can use the cpu mem copy function because this is X86. */
|
||||
vaddr = (void __force *)io_mapping_map_atomic_wc(mapping, base);
|
||||
unwritten = __copy_to_user_inatomic(user_data, vaddr + offset, length);
|
||||
vaddr = io_mapping_map_atomic_wc(mapping, base);
|
||||
unwritten = __copy_to_user_inatomic(user_data,
|
||||
(void __force *)vaddr + offset,
|
||||
length);
|
||||
io_mapping_unmap_atomic(vaddr);
|
||||
if (unwritten) {
|
||||
vaddr = (void __force *)
|
||||
io_mapping_map_wc(mapping, base, PAGE_SIZE);
|
||||
unwritten = copy_to_user(user_data, vaddr + offset, length);
|
||||
vaddr = io_mapping_map_wc(mapping, base, PAGE_SIZE);
|
||||
unwritten = copy_to_user(user_data,
|
||||
(void __force *)vaddr + offset,
|
||||
length);
|
||||
io_mapping_unmap(vaddr);
|
||||
}
|
||||
return unwritten;
|
||||
|
@ -1189,18 +1192,18 @@ ggtt_write(struct io_mapping *mapping,
|
|||
loff_t base, int offset,
|
||||
char __user *user_data, int length)
|
||||
{
|
||||
void *vaddr;
|
||||
void __iomem *vaddr;
|
||||
unsigned long unwritten;
|
||||
|
||||
/* We can use the cpu mem copy function because this is X86. */
|
||||
vaddr = (void __force *)io_mapping_map_atomic_wc(mapping, base);
|
||||
unwritten = __copy_from_user_inatomic_nocache(vaddr + offset,
|
||||
vaddr = io_mapping_map_atomic_wc(mapping, base);
|
||||
unwritten = __copy_from_user_inatomic_nocache((void __force *)vaddr + offset,
|
||||
user_data, length);
|
||||
io_mapping_unmap_atomic(vaddr);
|
||||
if (unwritten) {
|
||||
vaddr = (void __force *)
|
||||
io_mapping_map_wc(mapping, base, PAGE_SIZE);
|
||||
unwritten = copy_from_user(vaddr + offset, user_data, length);
|
||||
vaddr = io_mapping_map_wc(mapping, base, PAGE_SIZE);
|
||||
unwritten = copy_from_user((void __force *)vaddr + offset,
|
||||
user_data, length);
|
||||
io_mapping_unmap(vaddr);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue