diff mbox series

[v4,1/4] video: fbdev: atyfb: only use ioremap_uc() on i386 and ia64

Message ID 20230308130710.368085-2-bhe@redhat.com (mailing list archive)
State New
Headers show
Series arch/*/io.h: remove ioremap_uc in some architectures | expand

Commit Message

Baoquan He March 8, 2023, 1:07 p.m. UTC
From: Arnd Bergmann <arnd@arndb.de>

ioremap_uc() is only meaningful on old x86-32 systems with the PAT
extension, and on ia64 with its slightly unconventional ioremap()
behavior, everywhere else this is the same as ioremap() anyway.

Change the only driver that still references ioremap_uc() to only do so
on x86-32/ia64 in order to allow removing that interface at some
point in the future for the other architectures.

On some architectures, ioremap_uc() just returns NULL, changing
the driver to call ioremap() means that they now have a chance
of working correctly.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Baoquan He <bhe@redhat.com>
Cc: Helge Deller <deller@gmx.de>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
---
 drivers/video/fbdev/aty/atyfb_base.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Luis Chamberlain March 8, 2023, 8:01 p.m. UTC | #1
On Wed, Mar 08, 2023 at 09:07:07PM +0800, Baoquan He wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> ioremap_uc() is only meaningful on old x86-32 systems with the PAT
> extension, and on ia64 with its slightly unconventional ioremap()
> behavior, everywhere else this is the same as ioremap() anyway.
> 
> Change the only driver that still references ioremap_uc() to only do so
> on x86-32/ia64 in order to allow removing that interface at some
> point in the future for the other architectures.
> 
> On some architectures, ioremap_uc() just returns NULL, changing
> the driver to call ioremap() means that they now have a chance
> of working correctly.
> 
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> Signed-off-by: Baoquan He <bhe@redhat.com>
> Cc: Helge Deller <deller@gmx.de>
> Cc: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
> Cc: linux-fbdev@vger.kernel.org
> Cc: dri-devel@lists.freedesktop.org

Reviewed-by: Luis Chamberlain <mcgrof@kernel.org>

Is anyone using this driver these days? How often do fbdev drivers get
audited to see what can be nuked?


  Luis
Arnd Bergmann March 8, 2023, 9:34 p.m. UTC | #2
0On Wed, Mar 8, 2023, at 21:01, Luis Chamberlain wrote:
> On Wed, Mar 08, 2023 at 09:07:07PM +0800, Baoquan He wrote:
>> From: Arnd Bergmann <arnd@arndb.de>
>> 
>> ioremap_uc() is only meaningful on old x86-32 systems with the PAT
>> extension, and on ia64 with its slightly unconventional ioremap()
>> behavior, everywhere else this is the same as ioremap() anyway.
>> 
>> Change the only driver that still references ioremap_uc() to only do so
>> on x86-32/ia64 in order to allow removing that interface at some
>> point in the future for the other architectures.
>> 
>> On some architectures, ioremap_uc() just returns NULL, changing
>> the driver to call ioremap() means that they now have a chance
>> of working correctly.
>> 
>> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
>> Signed-off-by: Baoquan He <bhe@redhat.com>
>> Cc: Helge Deller <deller@gmx.de>
>> Cc: Thomas Zimmermann <tzimmermann@suse.de>
>> Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
>> Cc: linux-fbdev@vger.kernel.org
>> Cc: dri-devel@lists.freedesktop.org
>
> Reviewed-by: Luis Chamberlain <mcgrof@kernel.org>
>
> Is anyone using this driver these days? How often do fbdev drivers get
> audited to see what can be nuked?

Geert already mentioned that this one is likely used on old
powermac systems. I think my arm boardfile removal orphaned
some other fbdev drivers though. I removed the ones that can
no longer be enabled, but think a bunch of other ones
are still selectable but have no platform_device definition
or DT support: FB_PXA168, FB_DA8XX, FB_MX3, and MMP_FB.

These four platforms are all still supported with DT, but
over time it gets less likely that anyone is still interested
in adding DT support to the fbdev drivers.

    Arnd
Helge Deller March 8, 2023, 9:49 p.m. UTC | #3
On 3/8/23 22:34, Arnd Bergmann wrote:
> 0On Wed, Mar 8, 2023, at 21:01, Luis Chamberlain wrote:
>> On Wed, Mar 08, 2023 at 09:07:07PM +0800, Baoquan He wrote:
>>> From: Arnd Bergmann <arnd@arndb.de>
>>>
>>> ioremap_uc() is only meaningful on old x86-32 systems with the PAT
>>> extension, and on ia64 with its slightly unconventional ioremap()
>>> behavior, everywhere else this is the same as ioremap() anyway.
>>>
>>> Change the only driver that still references ioremap_uc() to only do so
>>> on x86-32/ia64 in order to allow removing that interface at some
>>> point in the future for the other architectures.
>>>
>>> On some architectures, ioremap_uc() just returns NULL, changing
>>> the driver to call ioremap() means that they now have a chance
>>> of working correctly.
>>>
>>> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
>>> Signed-off-by: Baoquan He <bhe@redhat.com>
>>> Cc: Helge Deller <deller@gmx.de>
>>> Cc: Thomas Zimmermann <tzimmermann@suse.de>
>>> Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
>>> Cc: linux-fbdev@vger.kernel.org
>>> Cc: dri-devel@lists.freedesktop.org
>>
>> Reviewed-by: Luis Chamberlain <mcgrof@kernel.org>
>>
>> Is anyone using this driver these days? How often do fbdev drivers get
>> audited to see what can be nuked?
>
> Geert already mentioned that this one is likely used on old
> powermac systems.

and the latest generation of parisc machines use it too.

In addition, on parisc machines it's also important to map all io-space
memory uncacheable. Since ioremap() takes care of it anyway, the ioremap_uc()
was simply referencing the call to ioremap().

Helge

> I think my arm boardfile removal orphaned
> some other fbdev drivers though. I removed the ones that can
> no longer be enabled, but think a bunch of other ones
> are still selectable but have no platform_device definition
> or DT support: FB_PXA168, FB_DA8XX, FB_MX3, and MMP_FB.
>
> These four platforms are all still supported with DT, but
> over time it gets less likely that anyone is still interested
> in adding DT support to the fbdev drivers.
>
>      Arnd
Ondrej Zary March 8, 2023, 10:48 p.m. UTC | #4
On Wednesday 08 March 2023 21:01:09 Luis Chamberlain wrote:
> On Wed, Mar 08, 2023 at 09:07:07PM +0800, Baoquan He wrote:
> > From: Arnd Bergmann <arnd@arndb.de>
> > 
> > ioremap_uc() is only meaningful on old x86-32 systems with the PAT
> > extension, and on ia64 with its slightly unconventional ioremap()
> > behavior, everywhere else this is the same as ioremap() anyway.
> > 
> > Change the only driver that still references ioremap_uc() to only do so
> > on x86-32/ia64 in order to allow removing that interface at some
> > point in the future for the other architectures.
> > 
> > On some architectures, ioremap_uc() just returns NULL, changing
> > the driver to call ioremap() means that they now have a chance
> > of working correctly.
> > 
> > Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> > Signed-off-by: Baoquan He <bhe@redhat.com>
> > Cc: Helge Deller <deller@gmx.de>
> > Cc: Thomas Zimmermann <tzimmermann@suse.de>
> > Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
> > Cc: linux-fbdev@vger.kernel.org
> > Cc: dri-devel@lists.freedesktop.org
> 
> Reviewed-by: Luis Chamberlain <mcgrof@kernel.org>
> 
> Is anyone using this driver these days? How often do fbdev drivers get
> audited to see what can be nuked?

Older servers have integrated ATI Rage XL chips and this is the only driver for it.
diff mbox series

Patch

diff --git a/drivers/video/fbdev/aty/atyfb_base.c b/drivers/video/fbdev/aty/atyfb_base.c
index b02e4e645035..6553c71b113f 100644
--- a/drivers/video/fbdev/aty/atyfb_base.c
+++ b/drivers/video/fbdev/aty/atyfb_base.c
@@ -3440,11 +3440,15 @@  static int atyfb_setup_generic(struct pci_dev *pdev, struct fb_info *info,
 	}
 
 	info->fix.mmio_start = raddr;
+#if defined(__i386__) || defined(__ia64__)
 	/*
 	 * By using strong UC we force the MTRR to never have an
 	 * effect on the MMIO region on both non-PAT and PAT systems.
 	 */
 	par->ati_regbase = ioremap_uc(info->fix.mmio_start, 0x1000);
+#else
+	par->ati_regbase = ioremap(info->fix.mmio_start, 0x1000);
+#endif
 	if (par->ati_regbase == NULL)
 		return -ENOMEM;