[PATCH] powerpc: make ioport_map() handle already mapped ranges
Arnd Bergmann
arnd at arndb.de
Sun May 13 08:18:42 EST 2007
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 <olof at lixom.net>
>
> 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.
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 .
Arnd <><
More information about the Linuxppc-dev
mailing list