From: Daniel Vetter <daniel@ffwll.ch>
To: Christophe Leroy <christophe.leroy@c-s.fr>
Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Dominik Brodowski <linux@dominikbrodowski.net>,
Geoff Levand <geoff@infradead.org>, Jens Axboe <axboe@kernel.dk>,
Kumar Gala <galak@kernel.crashing.org>,
Li Yang <leoyang.li@nxp.com>,
Michael Ellerman <mpe@ellerman.id.au>,
Nicholas Piggin <npiggin@gmail.com>,
Paul Mackerras <paulus@samba.org>, Scott Wood <oss@buserror.net>,
aneesh.kumar@linux.vnet.ibm.com, linux-fbdev@vger.kernel.org,
linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
linux-block@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v2 02/24] drivers/video/fbdev: use ioremap_wc/wt() instead of __ioremap()
Date: Thu, 13 Sep 2018 15:33:46 +0200 [thread overview]
Message-ID: <20180913133346.GD11082@phenom.ffwll.local> (raw)
In-Reply-To: <2f980cf32a05415662272cf052c2b9e2a94c756f.1536692743.git.christophe.leroy@c-s.fr>
On Wed, Sep 12, 2018 at 03:58:17PM +0000, Christophe Leroy wrote:
> _PAGE_NO_CACHE is a platform specific flag. In addition, this flag
> is misleading because one would think it requests a noncached page
> whereas a noncached page is _PAGE_NO_CACHE | _PAGE_GUARDED
>
> _PAGE_NO_CACHE alone means write combined noncached page, so lets
> use ioremap_wc() instead.
>
> _PAGE_WRITETHRU is also platform specific flag. Use ioremap_wt()
> instead.
>
> Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
I wondered why this all showed up in my gfx inbox, then spotted this patch
here.
I trust you way more on the _PAGE_ flags than me, but this looks
reasonable.
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> ---
> drivers/video/fbdev/chipsfb.c | 3 +--
> drivers/video/fbdev/controlfb.c | 5 +----
> drivers/video/fbdev/platinumfb.c | 5 +----
> drivers/video/fbdev/valkyriefb.c | 12 ++++++------
> 4 files changed, 9 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/video/fbdev/chipsfb.c b/drivers/video/fbdev/chipsfb.c
> index f103665cad43..40182ed85648 100644
> --- a/drivers/video/fbdev/chipsfb.c
> +++ b/drivers/video/fbdev/chipsfb.c
> @@ -27,7 +27,6 @@
> #include <linux/init.h>
> #include <linux/pci.h>
> #include <linux/console.h>
> -#include <asm/io.h>
>
> #ifdef CONFIG_PMAC_BACKLIGHT
> #include <asm/backlight.h>
> @@ -401,7 +400,7 @@ static int chipsfb_pci_init(struct pci_dev *dp, const struct pci_device_id *ent)
> #endif /* CONFIG_PMAC_BACKLIGHT */
>
> #ifdef CONFIG_PPC
> - p->screen_base = __ioremap(addr, 0x200000, _PAGE_NO_CACHE);
> + p->screen_base = ioremap_wc(addr, 0x200000);
> #else
> p->screen_base = ioremap(addr, 0x200000);
> #endif
> diff --git a/drivers/video/fbdev/controlfb.c b/drivers/video/fbdev/controlfb.c
> index 8d14b29aafea..9cb0ef7ac29e 100644
> --- a/drivers/video/fbdev/controlfb.c
> +++ b/drivers/video/fbdev/controlfb.c
> @@ -48,9 +48,7 @@
> #include <linux/nvram.h>
> #include <linux/adb.h>
> #include <linux/cuda.h>
> -#include <asm/io.h>
> #include <asm/prom.h>
> -#include <asm/pgtable.h>
> #include <asm/btext.h>
>
> #include "macmodes.h"
> @@ -715,8 +713,7 @@ static int __init control_of_init(struct device_node *dp)
> goto error_out;
> }
> /* map at most 8MB for the frame buffer */
> - p->frame_buffer = __ioremap(p->frame_buffer_phys, 0x800000,
> - _PAGE_WRITETHRU);
> + p->frame_buffer = ioremap_wt(p->frame_buffer_phys, 0x800000);
>
> if (!p->control_regs_phys ||
> !request_mem_region(p->control_regs_phys, p->control_regs_size,
> diff --git a/drivers/video/fbdev/platinumfb.c b/drivers/video/fbdev/platinumfb.c
> index 377d3399a3ad..bf6b7fb83cf4 100644
> --- a/drivers/video/fbdev/platinumfb.c
> +++ b/drivers/video/fbdev/platinumfb.c
> @@ -32,9 +32,7 @@
> #include <linux/nvram.h>
> #include <linux/of_device.h>
> #include <linux/of_platform.h>
> -#include <asm/io.h>
> #include <asm/prom.h>
> -#include <asm/pgtable.h>
>
> #include "macmodes.h"
> #include "platinumfb.h"
> @@ -577,8 +575,7 @@ static int platinumfb_probe(struct platform_device* odev)
>
> /* frame buffer - map only 4MB */
> pinfo->frame_buffer_phys = pinfo->rsrc_fb.start;
> - pinfo->frame_buffer = __ioremap(pinfo->rsrc_fb.start, 0x400000,
> - _PAGE_WRITETHRU);
> + pinfo->frame_buffer = ioremap_wt(pinfo->rsrc_fb.start, 0x400000);
> pinfo->base_frame_buffer = pinfo->frame_buffer;
>
> /* registers */
> diff --git a/drivers/video/fbdev/valkyriefb.c b/drivers/video/fbdev/valkyriefb.c
> index 275fb98236d3..d51c3a8009cb 100644
> --- a/drivers/video/fbdev/valkyriefb.c
> +++ b/drivers/video/fbdev/valkyriefb.c
> @@ -54,13 +54,11 @@
> #include <linux/nvram.h>
> #include <linux/adb.h>
> #include <linux/cuda.h>
> -#include <asm/io.h>
> #ifdef CONFIG_MAC
> #include <asm/macintosh.h>
> #else
> #include <asm/prom.h>
> #endif
> -#include <asm/pgtable.h>
>
> #include "macmodes.h"
> #include "valkyriefb.h"
> @@ -318,7 +316,7 @@ static void __init valkyrie_choose_mode(struct fb_info_valkyrie *p)
> int __init valkyriefb_init(void)
> {
> struct fb_info_valkyrie *p;
> - unsigned long frame_buffer_phys, cmap_regs_phys, flags;
> + unsigned long frame_buffer_phys, cmap_regs_phys;
> int err;
> char *option = NULL;
>
> @@ -337,7 +335,6 @@ int __init valkyriefb_init(void)
> /* Hardcoded addresses... welcome to 68k Macintosh country :-) */
> frame_buffer_phys = 0xf9000000;
> cmap_regs_phys = 0x50f24000;
> - flags = IOMAP_NOCACHE_SER; /* IOMAP_WRITETHROUGH?? */
> #else /* ppc (!CONFIG_MAC) */
> {
> struct device_node *dp;
> @@ -354,7 +351,6 @@ int __init valkyriefb_init(void)
>
> frame_buffer_phys = r.start;
> cmap_regs_phys = r.start + 0x304000;
> - flags = _PAGE_WRITETHRU;
> }
> #endif /* ppc (!CONFIG_MAC) */
>
> @@ -369,7 +365,11 @@ int __init valkyriefb_init(void)
> }
> p->total_vram = 0x100000;
> p->frame_buffer_phys = frame_buffer_phys;
> - p->frame_buffer = __ioremap(frame_buffer_phys, p->total_vram, flags);
> +#ifdef CONFIG_MAC
> + p->frame_buffer = ioremap_nocache(frame_buffer_phys, p->total_vram);
> +#else
> + p->frame_buffer = ioremap_wt(frame_buffer_phys, p->total_vram);
> +#endif
> p->cmap_regs_phys = cmap_regs_phys;
> p->cmap_regs = ioremap(p->cmap_regs_phys, 0x1000);
> p->valkyrie_regs_phys = cmap_regs_phys+0x6000;
> --
> 2.13.3
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
WARNING: multiple messages have this Message-ID (diff)
From: Daniel Vetter <daniel@ffwll.ch>
To: Christophe Leroy <christophe.leroy@c-s.fr>
Cc: Jens Axboe <axboe@kernel.dk>,
linux-block@vger.kernel.org, linux-fbdev@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
Geoff Levand <geoff@infradead.org>,
dri-devel@lists.freedesktop.org,
Kumar Gala <galak@kernel.crashing.org>,
Dominik Brodowski <linux@dominikbrodowski.net>,
Li Yang <leoyang.li@nxp.com>, Scott Wood <oss@buserror.net>,
Paul Mackerras <paulus@samba.org>,
Nicholas Piggin <npiggin@gmail.com>,
Michael Ellerman <mpe@ellerman.id.au>,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
aneesh.kumar@linux.vnet.ibm.com
Subject: Re: [PATCH v2 02/24] drivers/video/fbdev: use ioremap_wc/wt() instead of __ioremap()
Date: Thu, 13 Sep 2018 13:33:46 +0000 [thread overview]
Message-ID: <20180913133346.GD11082@phenom.ffwll.local> (raw)
In-Reply-To: <2f980cf32a05415662272cf052c2b9e2a94c756f.1536692743.git.christophe.leroy@c-s.fr>
On Wed, Sep 12, 2018 at 03:58:17PM +0000, Christophe Leroy wrote:
> _PAGE_NO_CACHE is a platform specific flag. In addition, this flag
> is misleading because one would think it requests a noncached page
> whereas a noncached page is _PAGE_NO_CACHE | _PAGE_GUARDED
>
> _PAGE_NO_CACHE alone means write combined noncached page, so lets
> use ioremap_wc() instead.
>
> _PAGE_WRITETHRU is also platform specific flag. Use ioremap_wt()
> instead.
>
> Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
I wondered why this all showed up in my gfx inbox, then spotted this patch
here.
I trust you way more on the _PAGE_ flags than me, but this looks
reasonable.
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> ---
> drivers/video/fbdev/chipsfb.c | 3 +--
> drivers/video/fbdev/controlfb.c | 5 +----
> drivers/video/fbdev/platinumfb.c | 5 +----
> drivers/video/fbdev/valkyriefb.c | 12 ++++++------
> 4 files changed, 9 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/video/fbdev/chipsfb.c b/drivers/video/fbdev/chipsfb.c
> index f103665cad43..40182ed85648 100644
> --- a/drivers/video/fbdev/chipsfb.c
> +++ b/drivers/video/fbdev/chipsfb.c
> @@ -27,7 +27,6 @@
> #include <linux/init.h>
> #include <linux/pci.h>
> #include <linux/console.h>
> -#include <asm/io.h>
>
> #ifdef CONFIG_PMAC_BACKLIGHT
> #include <asm/backlight.h>
> @@ -401,7 +400,7 @@ static int chipsfb_pci_init(struct pci_dev *dp, const struct pci_device_id *ent)
> #endif /* CONFIG_PMAC_BACKLIGHT */
>
> #ifdef CONFIG_PPC
> - p->screen_base = __ioremap(addr, 0x200000, _PAGE_NO_CACHE);
> + p->screen_base = ioremap_wc(addr, 0x200000);
> #else
> p->screen_base = ioremap(addr, 0x200000);
> #endif
> diff --git a/drivers/video/fbdev/controlfb.c b/drivers/video/fbdev/controlfb.c
> index 8d14b29aafea..9cb0ef7ac29e 100644
> --- a/drivers/video/fbdev/controlfb.c
> +++ b/drivers/video/fbdev/controlfb.c
> @@ -48,9 +48,7 @@
> #include <linux/nvram.h>
> #include <linux/adb.h>
> #include <linux/cuda.h>
> -#include <asm/io.h>
> #include <asm/prom.h>
> -#include <asm/pgtable.h>
> #include <asm/btext.h>
>
> #include "macmodes.h"
> @@ -715,8 +713,7 @@ static int __init control_of_init(struct device_node *dp)
> goto error_out;
> }
> /* map at most 8MB for the frame buffer */
> - p->frame_buffer = __ioremap(p->frame_buffer_phys, 0x800000,
> - _PAGE_WRITETHRU);
> + p->frame_buffer = ioremap_wt(p->frame_buffer_phys, 0x800000);
>
> if (!p->control_regs_phys ||
> !request_mem_region(p->control_regs_phys, p->control_regs_size,
> diff --git a/drivers/video/fbdev/platinumfb.c b/drivers/video/fbdev/platinumfb.c
> index 377d3399a3ad..bf6b7fb83cf4 100644
> --- a/drivers/video/fbdev/platinumfb.c
> +++ b/drivers/video/fbdev/platinumfb.c
> @@ -32,9 +32,7 @@
> #include <linux/nvram.h>
> #include <linux/of_device.h>
> #include <linux/of_platform.h>
> -#include <asm/io.h>
> #include <asm/prom.h>
> -#include <asm/pgtable.h>
>
> #include "macmodes.h"
> #include "platinumfb.h"
> @@ -577,8 +575,7 @@ static int platinumfb_probe(struct platform_device* odev)
>
> /* frame buffer - map only 4MB */
> pinfo->frame_buffer_phys = pinfo->rsrc_fb.start;
> - pinfo->frame_buffer = __ioremap(pinfo->rsrc_fb.start, 0x400000,
> - _PAGE_WRITETHRU);
> + pinfo->frame_buffer = ioremap_wt(pinfo->rsrc_fb.start, 0x400000);
> pinfo->base_frame_buffer = pinfo->frame_buffer;
>
> /* registers */
> diff --git a/drivers/video/fbdev/valkyriefb.c b/drivers/video/fbdev/valkyriefb.c
> index 275fb98236d3..d51c3a8009cb 100644
> --- a/drivers/video/fbdev/valkyriefb.c
> +++ b/drivers/video/fbdev/valkyriefb.c
> @@ -54,13 +54,11 @@
> #include <linux/nvram.h>
> #include <linux/adb.h>
> #include <linux/cuda.h>
> -#include <asm/io.h>
> #ifdef CONFIG_MAC
> #include <asm/macintosh.h>
> #else
> #include <asm/prom.h>
> #endif
> -#include <asm/pgtable.h>
>
> #include "macmodes.h"
> #include "valkyriefb.h"
> @@ -318,7 +316,7 @@ static void __init valkyrie_choose_mode(struct fb_info_valkyrie *p)
> int __init valkyriefb_init(void)
> {
> struct fb_info_valkyrie *p;
> - unsigned long frame_buffer_phys, cmap_regs_phys, flags;
> + unsigned long frame_buffer_phys, cmap_regs_phys;
> int err;
> char *option = NULL;
>
> @@ -337,7 +335,6 @@ int __init valkyriefb_init(void)
> /* Hardcoded addresses... welcome to 68k Macintosh country :-) */
> frame_buffer_phys = 0xf9000000;
> cmap_regs_phys = 0x50f24000;
> - flags = IOMAP_NOCACHE_SER; /* IOMAP_WRITETHROUGH?? */
> #else /* ppc (!CONFIG_MAC) */
> {
> struct device_node *dp;
> @@ -354,7 +351,6 @@ int __init valkyriefb_init(void)
>
> frame_buffer_phys = r.start;
> cmap_regs_phys = r.start + 0x304000;
> - flags = _PAGE_WRITETHRU;
> }
> #endif /* ppc (!CONFIG_MAC) */
>
> @@ -369,7 +365,11 @@ int __init valkyriefb_init(void)
> }
> p->total_vram = 0x100000;
> p->frame_buffer_phys = frame_buffer_phys;
> - p->frame_buffer = __ioremap(frame_buffer_phys, p->total_vram, flags);
> +#ifdef CONFIG_MAC
> + p->frame_buffer = ioremap_nocache(frame_buffer_phys, p->total_vram);
> +#else
> + p->frame_buffer = ioremap_wt(frame_buffer_phys, p->total_vram);
> +#endif
> p->cmap_regs_phys = cmap_regs_phys;
> p->cmap_regs = ioremap(p->cmap_regs_phys, 0x1000);
> p->valkyrie_regs_phys = cmap_regs_phys+0x6000;
> --
> 2.13.3
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
WARNING: multiple messages have this Message-ID (diff)
From: daniel@ffwll.ch (Daniel Vetter)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 02/24] drivers/video/fbdev: use ioremap_wc/wt() instead of __ioremap()
Date: Thu, 13 Sep 2018 15:33:46 +0200 [thread overview]
Message-ID: <20180913133346.GD11082@phenom.ffwll.local> (raw)
In-Reply-To: <2f980cf32a05415662272cf052c2b9e2a94c756f.1536692743.git.christophe.leroy@c-s.fr>
On Wed, Sep 12, 2018 at 03:58:17PM +0000, Christophe Leroy wrote:
> _PAGE_NO_CACHE is a platform specific flag. In addition, this flag
> is misleading because one would think it requests a noncached page
> whereas a noncached page is _PAGE_NO_CACHE | _PAGE_GUARDED
>
> _PAGE_NO_CACHE alone means write combined noncached page, so lets
> use ioremap_wc() instead.
>
> _PAGE_WRITETHRU is also platform specific flag. Use ioremap_wt()
> instead.
>
> Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
I wondered why this all showed up in my gfx inbox, then spotted this patch
here.
I trust you way more on the _PAGE_ flags than me, but this looks
reasonable.
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> ---
> drivers/video/fbdev/chipsfb.c | 3 +--
> drivers/video/fbdev/controlfb.c | 5 +----
> drivers/video/fbdev/platinumfb.c | 5 +----
> drivers/video/fbdev/valkyriefb.c | 12 ++++++------
> 4 files changed, 9 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/video/fbdev/chipsfb.c b/drivers/video/fbdev/chipsfb.c
> index f103665cad43..40182ed85648 100644
> --- a/drivers/video/fbdev/chipsfb.c
> +++ b/drivers/video/fbdev/chipsfb.c
> @@ -27,7 +27,6 @@
> #include <linux/init.h>
> #include <linux/pci.h>
> #include <linux/console.h>
> -#include <asm/io.h>
>
> #ifdef CONFIG_PMAC_BACKLIGHT
> #include <asm/backlight.h>
> @@ -401,7 +400,7 @@ static int chipsfb_pci_init(struct pci_dev *dp, const struct pci_device_id *ent)
> #endif /* CONFIG_PMAC_BACKLIGHT */
>
> #ifdef CONFIG_PPC
> - p->screen_base = __ioremap(addr, 0x200000, _PAGE_NO_CACHE);
> + p->screen_base = ioremap_wc(addr, 0x200000);
> #else
> p->screen_base = ioremap(addr, 0x200000);
> #endif
> diff --git a/drivers/video/fbdev/controlfb.c b/drivers/video/fbdev/controlfb.c
> index 8d14b29aafea..9cb0ef7ac29e 100644
> --- a/drivers/video/fbdev/controlfb.c
> +++ b/drivers/video/fbdev/controlfb.c
> @@ -48,9 +48,7 @@
> #include <linux/nvram.h>
> #include <linux/adb.h>
> #include <linux/cuda.h>
> -#include <asm/io.h>
> #include <asm/prom.h>
> -#include <asm/pgtable.h>
> #include <asm/btext.h>
>
> #include "macmodes.h"
> @@ -715,8 +713,7 @@ static int __init control_of_init(struct device_node *dp)
> goto error_out;
> }
> /* map at most 8MB for the frame buffer */
> - p->frame_buffer = __ioremap(p->frame_buffer_phys, 0x800000,
> - _PAGE_WRITETHRU);
> + p->frame_buffer = ioremap_wt(p->frame_buffer_phys, 0x800000);
>
> if (!p->control_regs_phys ||
> !request_mem_region(p->control_regs_phys, p->control_regs_size,
> diff --git a/drivers/video/fbdev/platinumfb.c b/drivers/video/fbdev/platinumfb.c
> index 377d3399a3ad..bf6b7fb83cf4 100644
> --- a/drivers/video/fbdev/platinumfb.c
> +++ b/drivers/video/fbdev/platinumfb.c
> @@ -32,9 +32,7 @@
> #include <linux/nvram.h>
> #include <linux/of_device.h>
> #include <linux/of_platform.h>
> -#include <asm/io.h>
> #include <asm/prom.h>
> -#include <asm/pgtable.h>
>
> #include "macmodes.h"
> #include "platinumfb.h"
> @@ -577,8 +575,7 @@ static int platinumfb_probe(struct platform_device* odev)
>
> /* frame buffer - map only 4MB */
> pinfo->frame_buffer_phys = pinfo->rsrc_fb.start;
> - pinfo->frame_buffer = __ioremap(pinfo->rsrc_fb.start, 0x400000,
> - _PAGE_WRITETHRU);
> + pinfo->frame_buffer = ioremap_wt(pinfo->rsrc_fb.start, 0x400000);
> pinfo->base_frame_buffer = pinfo->frame_buffer;
>
> /* registers */
> diff --git a/drivers/video/fbdev/valkyriefb.c b/drivers/video/fbdev/valkyriefb.c
> index 275fb98236d3..d51c3a8009cb 100644
> --- a/drivers/video/fbdev/valkyriefb.c
> +++ b/drivers/video/fbdev/valkyriefb.c
> @@ -54,13 +54,11 @@
> #include <linux/nvram.h>
> #include <linux/adb.h>
> #include <linux/cuda.h>
> -#include <asm/io.h>
> #ifdef CONFIG_MAC
> #include <asm/macintosh.h>
> #else
> #include <asm/prom.h>
> #endif
> -#include <asm/pgtable.h>
>
> #include "macmodes.h"
> #include "valkyriefb.h"
> @@ -318,7 +316,7 @@ static void __init valkyrie_choose_mode(struct fb_info_valkyrie *p)
> int __init valkyriefb_init(void)
> {
> struct fb_info_valkyrie *p;
> - unsigned long frame_buffer_phys, cmap_regs_phys, flags;
> + unsigned long frame_buffer_phys, cmap_regs_phys;
> int err;
> char *option = NULL;
>
> @@ -337,7 +335,6 @@ int __init valkyriefb_init(void)
> /* Hardcoded addresses... welcome to 68k Macintosh country :-) */
> frame_buffer_phys = 0xf9000000;
> cmap_regs_phys = 0x50f24000;
> - flags = IOMAP_NOCACHE_SER; /* IOMAP_WRITETHROUGH?? */
> #else /* ppc (!CONFIG_MAC) */
> {
> struct device_node *dp;
> @@ -354,7 +351,6 @@ int __init valkyriefb_init(void)
>
> frame_buffer_phys = r.start;
> cmap_regs_phys = r.start + 0x304000;
> - flags = _PAGE_WRITETHRU;
> }
> #endif /* ppc (!CONFIG_MAC) */
>
> @@ -369,7 +365,11 @@ int __init valkyriefb_init(void)
> }
> p->total_vram = 0x100000;
> p->frame_buffer_phys = frame_buffer_phys;
> - p->frame_buffer = __ioremap(frame_buffer_phys, p->total_vram, flags);
> +#ifdef CONFIG_MAC
> + p->frame_buffer = ioremap_nocache(frame_buffer_phys, p->total_vram);
> +#else
> + p->frame_buffer = ioremap_wt(frame_buffer_phys, p->total_vram);
> +#endif
> p->cmap_regs_phys = cmap_regs_phys;
> p->cmap_regs = ioremap(p->cmap_regs_phys, 0x1000);
> p->valkyrie_regs_phys = cmap_regs_phys+0x6000;
> --
> 2.13.3
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
WARNING: multiple messages have this Message-ID (diff)
From: Daniel Vetter <daniel@ffwll.ch>
To: Christophe Leroy <christophe.leroy@c-s.fr>
Cc: Jens Axboe <axboe@kernel.dk>,
linux-block@vger.kernel.org, linux-fbdev@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
Geoff Levand <geoff@infradead.org>,
dri-devel@lists.freedesktop.org,
Kumar Gala <galak@kernel.crashing.org>,
Dominik Brodowski <linux@dominikbrodowski.net>,
Li Yang <leoyang.li@nxp.com>, Scott Wood <oss@buserror.net>,
Paul Mackerras <paulus@samba.org>,
Nicholas Piggin <npiggin@gmail.com>,
Michael Ellerman <mpe@ellerman.id.au>,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
aneesh.kumar@linux.vnet.ibm.com
Subject: Re: [PATCH v2 02/24] drivers/video/fbdev: use ioremap_wc/wt() instead of __ioremap()
Date: Thu, 13 Sep 2018 15:33:46 +0200 [thread overview]
Message-ID: <20180913133346.GD11082@phenom.ffwll.local> (raw)
In-Reply-To: <2f980cf32a05415662272cf052c2b9e2a94c756f.1536692743.git.christophe.leroy@c-s.fr>
On Wed, Sep 12, 2018 at 03:58:17PM +0000, Christophe Leroy wrote:
> _PAGE_NO_CACHE is a platform specific flag. In addition, this flag
> is misleading because one would think it requests a noncached page
> whereas a noncached page is _PAGE_NO_CACHE | _PAGE_GUARDED
>
> _PAGE_NO_CACHE alone means write combined noncached page, so lets
> use ioremap_wc() instead.
>
> _PAGE_WRITETHRU is also platform specific flag. Use ioremap_wt()
> instead.
>
> Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
I wondered why this all showed up in my gfx inbox, then spotted this patch
here.
I trust you way more on the _PAGE_ flags than me, but this looks
reasonable.
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> ---
> drivers/video/fbdev/chipsfb.c | 3 +--
> drivers/video/fbdev/controlfb.c | 5 +----
> drivers/video/fbdev/platinumfb.c | 5 +----
> drivers/video/fbdev/valkyriefb.c | 12 ++++++------
> 4 files changed, 9 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/video/fbdev/chipsfb.c b/drivers/video/fbdev/chipsfb.c
> index f103665cad43..40182ed85648 100644
> --- a/drivers/video/fbdev/chipsfb.c
> +++ b/drivers/video/fbdev/chipsfb.c
> @@ -27,7 +27,6 @@
> #include <linux/init.h>
> #include <linux/pci.h>
> #include <linux/console.h>
> -#include <asm/io.h>
>
> #ifdef CONFIG_PMAC_BACKLIGHT
> #include <asm/backlight.h>
> @@ -401,7 +400,7 @@ static int chipsfb_pci_init(struct pci_dev *dp, const struct pci_device_id *ent)
> #endif /* CONFIG_PMAC_BACKLIGHT */
>
> #ifdef CONFIG_PPC
> - p->screen_base = __ioremap(addr, 0x200000, _PAGE_NO_CACHE);
> + p->screen_base = ioremap_wc(addr, 0x200000);
> #else
> p->screen_base = ioremap(addr, 0x200000);
> #endif
> diff --git a/drivers/video/fbdev/controlfb.c b/drivers/video/fbdev/controlfb.c
> index 8d14b29aafea..9cb0ef7ac29e 100644
> --- a/drivers/video/fbdev/controlfb.c
> +++ b/drivers/video/fbdev/controlfb.c
> @@ -48,9 +48,7 @@
> #include <linux/nvram.h>
> #include <linux/adb.h>
> #include <linux/cuda.h>
> -#include <asm/io.h>
> #include <asm/prom.h>
> -#include <asm/pgtable.h>
> #include <asm/btext.h>
>
> #include "macmodes.h"
> @@ -715,8 +713,7 @@ static int __init control_of_init(struct device_node *dp)
> goto error_out;
> }
> /* map at most 8MB for the frame buffer */
> - p->frame_buffer = __ioremap(p->frame_buffer_phys, 0x800000,
> - _PAGE_WRITETHRU);
> + p->frame_buffer = ioremap_wt(p->frame_buffer_phys, 0x800000);
>
> if (!p->control_regs_phys ||
> !request_mem_region(p->control_regs_phys, p->control_regs_size,
> diff --git a/drivers/video/fbdev/platinumfb.c b/drivers/video/fbdev/platinumfb.c
> index 377d3399a3ad..bf6b7fb83cf4 100644
> --- a/drivers/video/fbdev/platinumfb.c
> +++ b/drivers/video/fbdev/platinumfb.c
> @@ -32,9 +32,7 @@
> #include <linux/nvram.h>
> #include <linux/of_device.h>
> #include <linux/of_platform.h>
> -#include <asm/io.h>
> #include <asm/prom.h>
> -#include <asm/pgtable.h>
>
> #include "macmodes.h"
> #include "platinumfb.h"
> @@ -577,8 +575,7 @@ static int platinumfb_probe(struct platform_device* odev)
>
> /* frame buffer - map only 4MB */
> pinfo->frame_buffer_phys = pinfo->rsrc_fb.start;
> - pinfo->frame_buffer = __ioremap(pinfo->rsrc_fb.start, 0x400000,
> - _PAGE_WRITETHRU);
> + pinfo->frame_buffer = ioremap_wt(pinfo->rsrc_fb.start, 0x400000);
> pinfo->base_frame_buffer = pinfo->frame_buffer;
>
> /* registers */
> diff --git a/drivers/video/fbdev/valkyriefb.c b/drivers/video/fbdev/valkyriefb.c
> index 275fb98236d3..d51c3a8009cb 100644
> --- a/drivers/video/fbdev/valkyriefb.c
> +++ b/drivers/video/fbdev/valkyriefb.c
> @@ -54,13 +54,11 @@
> #include <linux/nvram.h>
> #include <linux/adb.h>
> #include <linux/cuda.h>
> -#include <asm/io.h>
> #ifdef CONFIG_MAC
> #include <asm/macintosh.h>
> #else
> #include <asm/prom.h>
> #endif
> -#include <asm/pgtable.h>
>
> #include "macmodes.h"
> #include "valkyriefb.h"
> @@ -318,7 +316,7 @@ static void __init valkyrie_choose_mode(struct fb_info_valkyrie *p)
> int __init valkyriefb_init(void)
> {
> struct fb_info_valkyrie *p;
> - unsigned long frame_buffer_phys, cmap_regs_phys, flags;
> + unsigned long frame_buffer_phys, cmap_regs_phys;
> int err;
> char *option = NULL;
>
> @@ -337,7 +335,6 @@ int __init valkyriefb_init(void)
> /* Hardcoded addresses... welcome to 68k Macintosh country :-) */
> frame_buffer_phys = 0xf9000000;
> cmap_regs_phys = 0x50f24000;
> - flags = IOMAP_NOCACHE_SER; /* IOMAP_WRITETHROUGH?? */
> #else /* ppc (!CONFIG_MAC) */
> {
> struct device_node *dp;
> @@ -354,7 +351,6 @@ int __init valkyriefb_init(void)
>
> frame_buffer_phys = r.start;
> cmap_regs_phys = r.start + 0x304000;
> - flags = _PAGE_WRITETHRU;
> }
> #endif /* ppc (!CONFIG_MAC) */
>
> @@ -369,7 +365,11 @@ int __init valkyriefb_init(void)
> }
> p->total_vram = 0x100000;
> p->frame_buffer_phys = frame_buffer_phys;
> - p->frame_buffer = __ioremap(frame_buffer_phys, p->total_vram, flags);
> +#ifdef CONFIG_MAC
> + p->frame_buffer = ioremap_nocache(frame_buffer_phys, p->total_vram);
> +#else
> + p->frame_buffer = ioremap_wt(frame_buffer_phys, p->total_vram);
> +#endif
> p->cmap_regs_phys = cmap_regs_phys;
> p->cmap_regs = ioremap(p->cmap_regs_phys, 0x1000);
> p->valkyrie_regs_phys = cmap_regs_phys+0x6000;
> --
> 2.13.3
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2018-09-13 13:33 UTC|newest]
Thread overview: 87+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-12 15:58 [PATCH v2 00/24] ban the use of _PAGE_XXX flags outside platform specific code Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` [PATCH v2 01/24] powerpc/32: Add ioremap_wt() and ioremap_coherent() Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` [PATCH v2 02/24] drivers/video/fbdev: use ioremap_wc/wt() instead of __ioremap() Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-13 13:33 ` Daniel Vetter [this message]
2018-09-13 13:33 ` Daniel Vetter
2018-09-13 13:33 ` Daniel Vetter
2018-09-13 13:33 ` Daniel Vetter
2018-09-13 17:02 ` Bartlomiej Zolnierkiewicz
2018-09-13 17:02 ` Bartlomiej Zolnierkiewicz
2018-09-13 17:02 ` Bartlomiej Zolnierkiewicz
2018-09-13 17:02 ` Bartlomiej Zolnierkiewicz
2018-09-12 15:58 ` [PATCH v2 03/24] drivers/block/z2ram: use ioremap_wt() instead of __ioremap(_PAGE_WRITETHRU) Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` [PATCH v2 04/24] soc/fsl/qbman: use ioremap_cache() instead of ioremap_prot(0) Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` [PATCH v2 05/24] powerpc: don't use ioremap_prot() nor __ioremap() unless really needed Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` [PATCH v2 06/24] powerpc/mm: properly set PAGE_KERNEL flags in ioremap() Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` [PATCH v2 07/24] powerpc: handover page flags with a pgprot_t parameter Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-18 17:21 ` Christophe LEROY
2018-09-12 15:58 ` [PATCH v2 08/24] powerpc/mm: don't use _PAGE_EXEC in book3s/32 Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` [PATCH v2 09/24] powerpc/mm: move some nohash pte helpers in nohash/[32:64]/pgtable.h Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` [PATCH v2 10/24] powerpc/mm: add pte helpers to query and change pte flags Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` [PATCH v2 11/24] powerpc/mm: don't use _PAGE_EXEC for calling hash_preload() Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-17 7:59 ` Aneesh Kumar K.V
2018-09-17 7:59 ` Aneesh Kumar K.V
2018-09-17 7:59 ` Aneesh Kumar K.V
2018-09-12 15:58 ` [PATCH v2 12/24] powerpc/mm: use pte helpers in generic code Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` [PATCH v2 13/24] powerpc/mm: Split dump_pagelinuxtables flag_array table Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` [PATCH v2 14/24] powerpc/mm: drop unused page flags Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` [PATCH v2 15/24] powerpc/mm: move __P and __S tables in the common pgtable.h Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` [PATCH v2 16/24] powerpc/book3s/32: do not include pte-common.h Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` [PATCH v2 17/24] powerpc/mm: Move pte_user() into nohash/pgtable.h Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` [PATCH v2 18/24] powerpc/mm: Distribute platform specific PAGE and PMD flags and definitions Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` [PATCH v2 19/24] powerpc/nohash/64: do not include pte-common.h Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` [PATCH v2 20/24] powerpc/mm: Allow platforms to redefine some helpers Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` [PATCH v2 21/24] powerpc/mm: Define platform default caches related flags Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` [PATCH v2 22/24] powerpc/mm: Get rid of pte-common.h Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:58 ` Christophe Leroy
2018-09-12 15:59 ` [PATCH v2 23/24] powerpc/8xx: change name of a few page flags to avoid confusion Christophe Leroy
2018-09-12 15:59 ` Christophe Leroy
2018-09-12 15:59 ` Christophe Leroy
2018-09-12 15:59 ` [PATCH v2 24/24] powerpc/book3s64: Avoid multiple endian conversion in pte helpers Christophe Leroy
2018-09-12 15:59 ` Christophe Leroy
2018-09-12 15:59 ` Christophe Leroy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180913133346.GD11082@phenom.ffwll.local \
--to=daniel@ffwll.ch \
--cc=aneesh.kumar@linux.vnet.ibm.com \
--cc=axboe@kernel.dk \
--cc=b.zolnierkie@samsung.com \
--cc=benh@kernel.crashing.org \
--cc=christophe.leroy@c-s.fr \
--cc=dri-devel@lists.freedesktop.org \
--cc=galak@kernel.crashing.org \
--cc=geoff@infradead.org \
--cc=leoyang.li@nxp.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-fbdev@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@dominikbrodowski.net \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mpe@ellerman.id.au \
--cc=npiggin@gmail.com \
--cc=oss@buserror.net \
--cc=paulus@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.