On Tue, Dec 11, 2012 at 05:30:13PM +0100, Thomas Petazzoni wrote: > arch/arm/mm/iomap.c is unconditionally compiled in all ARM kernels. And > in this file, ioport_map() and ioport_unmap() are implement as soon as > __io is defined. And basically, in arch/arm/include/asm/io.h, __io is > defined for all platforms
Actually, I think that's a major bug in the single-zImage conversion: #ifdef CONFIG_NEED_MACH_IO_H #include <mach/io.h> #elif defined(CONFIG_PCI) #define IO_SPACE_LIMIT ((resource_size_t)0xfffff) #define __io(a) __typesafe_io(PCI_IO_VIRT_BASE + ((a) & IO_SPACE_LIMIT)) #else #define __io(a) __typesafe_io((a) & IO_SPACE_LIMIT) #endif #ifndef IO_SPACE_LIMIT #if defined(CONFIG_PCMCIA_SOC_COMMON) || defined(CONFIG_PCMCIA_SOC_COMMON_MODULE) #define IO_SPACE_LIMIT ((resource_size_t)0xffffffff) #elif defined(CONFIG_PCI) || defined(CONFIG_ISA) || defined(CONFIG_PCCARD) #define IO_SPACE_LIMIT ((resource_size_t)0xffff) #else #define IO_SPACE_LIMIT ((resource_size_t)0) #endif #endif So, in the !PCI !PCMCIA !ISA !PCCARD case, IO_SPACE_LIMIT will be zero, which means the above common __io() functions will end up pointing the access at the NULL pointer - whereas we shouldn't be providing IO space support at all. (Okay, there's a couple of corner cases we've known about for a few _years_ but it's about time that stuff got fixed before we try and put yet more band-aids over this. Fix the root problems guys, don't create more problems.) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/