[PATCH v2] ARM: kexec: selective MMU identity mapping
Per Fransson
per.fransson.ml at gmail.com
Thu Feb 3 05:14:45 EST 2011
Hi,
Ok, I've tried to summarize your comments:
* Break out turning off the MMU.
- Not sure about this one, the changes rely on each other anyway.
But if you insist...
* Don't add a kexec specific structure as argument to identity_mapping_add().
- How about a separate 'store_mapping_for(<address to store for>,
<where to store>)' function?
Could it be placed idmap.c as well?
* Always use processor.reset, regardless of #ifdef MULTI_CPU
- Yes
* beq -> bneq in relocate_new_kernel()
- errare humanum est =o)
* better way to check for the MMU actually being off?
- Will reading the M bit of the System Control Register do?
* Prettier, more general copy lists for restoring the page table entries.
- Are there any such pre-existing types, e.g.
struct {
size_t howmuch;
void * towhere;
char what[0];
}
or something similar?
* The old 0x0-PAGE_OFFSET 1-1 mapping doesn't cover the physical
addresses needed if these are
higher, e.g. 0xd0000000--. Thus it will never work.
- My patch will identity map the needed addresses regardless of
whether they are located in the
user or kernel space ranges. This at least *could* work, if we are
lucky and it doesn't coincide
with the mappings for the code we still need to run before turning
off the MMU.
* The jump to physical addresses in cpu_reset() needs to account for
PHYS_OFFSET!=0
- Yes
* Move ARM specific struct definitions to ARM specific header
- Yes
* Tested on ARMv4/v5 CPUs?
- No, sorry, there are none available to me. They should work like
they used to if they don't use
any other code than the cpu_reset() and relocate_new_kernel()
functions once the MMU has been
turned off.
Regards,
Per
More information about the kexec
mailing list