XIP_KERNEL and !ARCH_MULTIPLATFORM

Chris Brandt Chris.Brandt at renesas.com
Sat Mar 21 08:39:30 PDT 2015


> At first glance, HIGHMEM shouldn't be affected by XIP_KERNEL at all.

I really didn't find the root cause of this. I just remember looking at the crashed log and it seemed like removing HIGHMEM would fix it....and it did (can't remember the details).

> However, SMP_ON_UP is incompatible with XIP_KERNEL (as already listed in its dependencies) and building with SMP=y without SMP_ON_UP, and trying to run on UP hardware will definitely fail.

So, it sounds like you are saying XIP_KERNEL and SMP is not going to happen.

However, you said:
> To put that another way:
> 1. SMP_ON_UP relies on being able to change the kernel text, which it
>    can't do with an XIP kernel.

But, what kernel text are we talking about? All of it, or just certain parts?
What if I changed the linker to put all those files in a specific area and then remap that one area to RAM (of course and copy the binary too). Yes, sounds pretty hack-ish, but if XIP can't go past single core, it might not have a long term future anyway.


> I'm not sure what you mean by this.  We have:
>
> config PHYS_OFFSET
>         hex "Physical address of main memory" if MMU
>         depends on !ARM_PATCH_PHYS_VIRT
>
> which is quite correct - PHYS_OFFSET depends on not having the phys offset patching code enabled.  However, for
> an XIP kernel, you don't want to have the phys offset patching code enabled, so you want ARM_PATCH_PHYS_VIRT to be off.

You are correct...maybe my wording was confusing. This is what I meant:

config ARCH_MULTIPLATFORM
	bool "Allow multiple platforms to be selected"
	depends on MMU
	select ARCH_WANT_OPTIONAL_GPIOLIB
	select ARM_HAS_SG_CHAIN
-	select ARM_PATCH_PHYS_VIRT
+	select ARM_PATCH_PHYS_VIRT if !XIP_KERNEL
	select AUTO_ZRELADDR


Chris




More information about the linux-arm-kernel mailing list