IXP4xx: Indirect PCI MMIO compile failure
Krzysztof Halasa
khc at pm.waw.pl
Sat Nov 14 18:37:14 EST 2009
Russell King - ARM Linux <linux at arm.linux.org.uk> writes:
>> static inline void __indirect_iounmap(void __iomem *addr)
>> {
>> - if ((__force u32)addr >= VMALLOC_START)
>> + if (!is_pci_memory(__force u32)addr)
>
> So here you're testing a virtual address against a pci address.
There is 1:1 mapping on IXP4xx with indirect PCI MMIO:
static inline void __iomem *
__ixp4xx_ioremap(unsigned long addr, size_t size, unsigned int mtype)
{
if((addr < PCIBIOS_MIN_MEM) || (addr > 0x4fffffff))
return __arm_ioremap(addr, size, mtype);
return (void __iomem *)addr;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
}
The __iomem *addr is not really a pointer, it's just a cookie which can
only be passed to the indirect routines.
--
Krzysztof Halasa
More information about the linux-arm-kernel
mailing list