From: Arnd Bergmann <[email protected]>
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 <[email protected]>
Signed-off-by: Baoquan He <[email protected]>
Cc: Helge Deller <[email protected]>
Cc: Thomas Zimmermann <[email protected]>
Cc: Christophe Leroy <[email protected]>
Cc: [email protected]
Cc: [email protected]
---
drivers/video/fbdev/aty/atyfb_base.c | 4 ++++
1 file changed, 4 insertions(+)
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;
--
2.34.1
On Wed, Mar 08, 2023 at 09:07:07PM +0800, Baoquan He wrote:
> From: Arnd Bergmann <[email protected]>
>
> 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 <[email protected]>
> Signed-off-by: Baoquan He <[email protected]>
> Cc: Helge Deller <[email protected]>
> Cc: Thomas Zimmermann <[email protected]>
> Cc: Christophe Leroy <[email protected]>
> Cc: [email protected]
> Cc: [email protected]
Reviewed-by: Luis Chamberlain <[email protected]>
Is anyone using this driver these days? How often do fbdev drivers get
audited to see what can be nuked?
Luis
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 <[email protected]>
>>
>> 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 <[email protected]>
>> Signed-off-by: Baoquan He <[email protected]>
>> Cc: Helge Deller <[email protected]>
>> Cc: Thomas Zimmermann <[email protected]>
>> Cc: Christophe Leroy <[email protected]>
>> Cc: [email protected]
>> Cc: [email protected]
>
> Reviewed-by: Luis Chamberlain <[email protected]>
>
> 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
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 <[email protected]>
>>>
>>> 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 <[email protected]>
>>> Signed-off-by: Baoquan He <[email protected]>
>>> Cc: Helge Deller <[email protected]>
>>> Cc: Thomas Zimmermann <[email protected]>
>>> Cc: Christophe Leroy <[email protected]>
>>> Cc: [email protected]
>>> Cc: [email protected]
>>
>> Reviewed-by: Luis Chamberlain <[email protected]>
>>
>> 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
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 <[email protected]>
> >
> > 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 <[email protected]>
> > Signed-off-by: Baoquan He <[email protected]>
> > Cc: Helge Deller <[email protected]>
> > Cc: Thomas Zimmermann <[email protected]>
> > Cc: Christophe Leroy <[email protected]>
> > Cc: [email protected]
> > Cc: [email protected]
>
> Reviewed-by: Luis Chamberlain <[email protected]>
>
> 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.
--
Ondrej Zary