diff mbox

io-mapping: Fixup for different names of writecombine

Message ID 20160823202233.4681-1-daniel.vetter@ffwll.ch (mailing list archive)
State New, archived
Headers show

Commit Message

Daniel Vetter Aug. 23, 2016, 8:22 p.m. UTC
Somehow architectures can't agree on this. And for good measure make
sure we have a fallback which should work everywhere (fingers
crossed).

This is to fix a compile fail on microblaze in gpiolib-of.c, which
misguidedly includes io-mapping.h (instead of screaming at whichever
achitecture doesn't correctly pull in asm/io.h from linux/io.h).

Not tested since there's no reasonable way to get at microblaze
toolchains :(

Fixes: ac96b5566926 ("io-mapping.h: s/PAGE_KERNEL_IO/PAGE_KERNEL/")
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: linux-mm@kvack.org
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
 include/linux/io-mapping.h | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Chris Wilson Aug. 24, 2016, 6:06 a.m. UTC | #1
On Tue, Aug 23, 2016 at 10:22:33PM +0200, Daniel Vetter wrote:
> Somehow architectures can't agree on this. And for good measure make
> sure we have a fallback which should work everywhere (fingers
> crossed).
> 
> This is to fix a compile fail on microblaze in gpiolib-of.c, which
> misguidedly includes io-mapping.h (instead of screaming at whichever
> achitecture doesn't correctly pull in asm/io.h from linux/io.h).
> 
> Not tested since there's no reasonable way to get at microblaze
> toolchains :(
> 
> Fixes: ac96b5566926 ("io-mapping.h: s/PAGE_KERNEL_IO/PAGE_KERNEL/")
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> Cc: linux-mm@kvack.org
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>

As mentioned I'm looking at reducing the number of unused includes of
io-mapping.h, discussion in progress over at gpio/mlx4.

On the positive side, this does at least mean the WC pgprot mess is
hidden away in the header!

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
Joonas Lahtinen Aug. 24, 2016, 6:54 a.m. UTC | #2
On ti, 2016-08-23 at 22:22 +0200, Daniel Vetter wrote:
> Somehow architectures can't agree on this. And for good measure make
> sure we have a fallback which should work everywhere (fingers
> crossed).
> 
> This is to fix a compile fail on microblaze in gpiolib-of.c, which
> misguidedly includes io-mapping.h (instead of screaming at whichever
> achitecture doesn't correctly pull in asm/io.h from linux/io.h).
> 
> Not tested since there's no reasonable way to get at microblaze
> toolchains :(
> 
> Fixes: ac96b5566926 ("io-mapping.h: s/PAGE_KERNEL_IO/PAGE_KERNEL/")
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> Cc: linux-mm@kvack.org
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> ---
>  include/linux/io-mapping.h | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/include/linux/io-mapping.h b/include/linux/io-mapping.h
> index a87dd7fffc0a..f4e33756c09c 100644
> --- a/include/linux/io-mapping.h
> +++ b/include/linux/io-mapping.h
> @@ -123,7 +123,13 @@ io_mapping_init_wc(struct io_mapping *iomap,
>  	iomap->base = base;
>  	iomap->size = size;
>  	iomap->iomem = ioremap_wc(base, size);
> +#ifdef pgprot_noncached_wc /* archs can't agree on a name ... */
> +	iomap->prot = pgprot_noncached_wc(PAGE_KERNEL);
> +#elif pgprot_writecombine

Maybe you meant #elif defined pgprot_writecombine?

Regards, Joonas

>  	iomap->prot = pgprot_writecombine(PAGE_KERNEL);
> +#else
> +	iomap->prot = pgprot_noncached(PAGE_KERNEL);
> +#endif
>  
>  	return iomap;
>  }
diff mbox

Patch

diff --git a/include/linux/io-mapping.h b/include/linux/io-mapping.h
index a87dd7fffc0a..f4e33756c09c 100644
--- a/include/linux/io-mapping.h
+++ b/include/linux/io-mapping.h
@@ -123,7 +123,13 @@  io_mapping_init_wc(struct io_mapping *iomap,
 	iomap->base = base;
 	iomap->size = size;
 	iomap->iomem = ioremap_wc(base, size);
+#ifdef pgprot_noncached_wc /* archs can't agree on a name ... */
+	iomap->prot = pgprot_noncached_wc(PAGE_KERNEL);
+#elif pgprot_writecombine
 	iomap->prot = pgprot_writecombine(PAGE_KERNEL);
+#else
+	iomap->prot = pgprot_noncached(PAGE_KERNEL);
+#endif
 
 	return iomap;
 }