Subject: Re: [PATCH] powerpc: make ioport_map() handle already mapped ranges

From: [email-masked] (Olof Johansson)
Date: Sat, 12 May 2007 17:36:23 -0500

On Sun, May 13, 2007 at 12:18:42AM +0200, Arnd Bergmann wrote:
> On Saturday 12 May 2007, Olof Johansson wrote:
> > Make ioport_map() handle already mapped port range without trying
> > to add _IO_BASE to them.
> > 
> > 
> > Signed-off-by: Olof Johansson <[email-masked]>
> > 
> > Index: 2.6.21/arch/powerpc/kernel/iomap.c
> > ===================================================================
> > --- 2.6.21.orig/arch/powerpc/kernel/iomap.c
> > +++ 2.6.21/arch/powerpc/kernel/iomap.c
> > @@ -106,7 +106,13 @@ EXPORT_SYMBOL(iowrite32_rep);
> > ?
> > ?void __iomem *ioport_map(unsigned long port, unsigned int len)
> > ?{
> > -???????return (void __iomem *) (port + _IO_BASE);
> > +???????/* Do nothing if we're being asked to map an already
> > +??????? * ioremapped() address
> > +??????? */
> > +???????if (port >= IMALLOC_BASE && (port+len) < IMALLOC_END)
> > +???????????????return (void __iomem *) port;
> > +???????else
> > +???????????????return (void __iomem *) (port + _IO_BASE);
> > ?}
> 
> This patch looks wrong to me, it's an indication that either a driver
> is confusing ioport and __iomem addresses, or that something went
> wrong during the initialization of the primary PCI bus.

It's not for PCI. See discussion in:

http://ozlabs.org/pipermail/linuxppc-dev/2007-May/035744.html

> We have a bug on cell that would be fixed with this patch, so it
> might be the same problem, see the patch that I suggested for
> this at http://patchwork.ozlabs.org/linuxppc/patch?id=10840 .

Not in this case, but thanks for the pointer. Your case is still based
on the fact that you only have one io space range, you're just making
sure you're allocating out of that range. In my case, I have two distinct
ranges, they're even on different busses...

-Olof