mach/io.h cleanup and removal question

Russell King - ARM Linux linux at arm.linux.org.uk
Fri Jun 8 07:43:16 EDT 2012


On Fri, Jun 08, 2012 at 12:20:40PM +0200, Andrew Lunn wrote:
> Your patchset for mach/io.h cleanup and remove, causes problems on
> Orion5x.
> 
> mach/io.h for orion5x had a:
> 
> #define IO_SPACE_LIMIT		0xffffffff
> 
> which got removed. This results in a panic at boot:
> 
>         /*
>          * IORESOURCE_IO
>          */
>         sys->io_offset = 0;
>         res[0].name = "PCIe I/O Space";
>         res[0].flags = IORESOURCE_IO;
>         res[0].start = ORION5X_PCIE_IO_BUS_BASE;
>         res[0].end = res[0].start + ORION5X_PCIE_IO_SIZE - 1;
>         if (request_resource(&ioport_resource, &res[0]))
>                 panic("Request PCIe IO resource failed\n");
> 
> ORION5X_PCIE_IO_SIZE is 1MB, so the allocation fails because of the
> 64K default.
> 
> arch/arm/include/asm/io.h has the comment:
> 
> /*
>  * This is the limit of PC card/PCI/ISA IO space, which is by default
>  * 64K if we have PC card, PCI or ISA support.  Otherwise, default to
>  * zero to prevent ISA/PCI drivers claiming IO space (and potentially
>  * oopsing.)
>  *
>  * Only set this larger if you really need inb() et.al. to operate over
>  * a larger address space.  Note that SOC_COMMON ioremaps each sockets
>  * IO space area, and so inb() et.al. must be defined to operate as per
>  * readb() et.al. on such platforms.
>  */
> 
> Now, i know nothing about how PCI works... So i have a question:
> 
> Which is better, put back parts of io.h so allowing the 1MB
> request_resource, or reduce ORION5X_PCIE_IO_SIZE to 64KB, since from
> the comment it is unlikely an PCI card needs more than 64KB?

Well, the comment about SOC_COMMON doesn't apply as you're not using that.

Probably shrinking ORION5X_PCIE_IO_SIZE to 64K, unless we really have a
requirement to support a larger IO space.



More information about the linux-arm-kernel mailing list