XIP_KERNEL and !ARCH_MULTIPLATFORM

Chris Brandt Chris.Brandt at renesas.com
Thu Mar 19 13:57:21 PDT 2015


Eventually....I got it to boot.

I had to remove both CONFIG_HIGHMEM and CONFIG_SMP and then I could boot completely from ROM (which for me is external QSPI flash that is memory mapping into linear CPU space at address 0x18000000)

So, the total changes was:

1. start with shmobile_defconfig
2. remove all architectures but RZ/A1 (ARCH_R7S72100)
3. remove !ARCH_MULTIPLATFORM from XIP_KERNEL's dependencies
4. modify  'select ARM_PATCH_PHYS_VIRT if !XIP_KERNEL'  in PHYS_OFFSET (because I need to be able to set PHYS_OFFSET)
5. patch up mmu.c, proc-v7.S and link-vmlinux.sh
6. remove CONFIG_HIGHMEM and CONFIG_SMP

I also modified the DT to use internal RAM instead external SDRAM.

Of course to actually boot an XIP kernel, you have to make a custom command in u-boot (using bootm or go is not going to work).


Generally this exercise has taught me that  XIP and ARCH_MULTIPLATFORM do not play well together.

So while I think linux-4.0 will have the ability to run XIP with and ARMv7 (with a handful of patches), you'll definitely need to start with an out of tree config.

Chris



More information about the linux-arm-kernel mailing list