This patchset relaxes this constraint. Basically you just need to define in your platform code (include/asm-mips/mach-foo/spaces.h probably) PHYS_OFFSET that corresponds to the start of your physical memory and you're done. The first patch is just a fix for HIGHMEM, I just found it while writing this patchset. I haven't done any tests though, I have no hardwares to play with. The second and third patchs are the real meat. There are 2 points that I'm not really sure: - PHYS_OFFSET is defined in page.h, I'm not sure if it's the right place though. - ARCH_PFN_OFFSET is always defined whatever the memory model. I don't think it will hurt since physical memory always has a starting point in all cases. Please consider. Franck --- arch/mips/kernel/setup.c | 30 ++++++++++++++++++++++-------- arch/mips/mm/init.c | 30 +++++++++++++----------------- include/asm-mips/dma.h | 1 + include/asm-mips/io.h | 4 ++-- include/asm-mips/page.h | 25 +++++++++++++++++++++---- 5 files changed, 59 insertions(+), 31 deletions(-)