Lakshmi Ramasubramanian <nramas@xxxxxxxxxxxxxxxxxxx> writes:
On 12/11/20 2:10 PM, Rob Herring wrote:
Hi Rob,
Both arm64 and powerpc do essentially the same FDT /chosen setup for
kexec. We can simply combine everything each arch does. The differences
are either omissions that arm64 should have or additional properties
that will be ignored.
The differences relative to the arm64 version:
- If /chosen doesn't exist, it will be created (should never happen).
- Any old dtb and initrd reserved memory will be released.
- The new initrd and elfcorehdr are marked reserved.
- "linux,booted-from-kexec" is set.
The differences relative to the powerpc version:
- "kaslr-seed" and "rng-seed" may be set.
- "linux,elfcorehdr" is set.
- Any existing "linux,usable-memory-range" is removed.
Signed-off-by: Rob Herring <robh@xxxxxxxxxx>
---
This could be taken a step further and do the allocation of the new
FDT. The difference is arm64 uses vmalloc and powerpc uses kmalloc. The
arm64 version also retries with a bigger allocation. That seems
unnecessary.
---
drivers/of/Makefile | 1 +
drivers/of/kexec.c | 228 ++++++++++++++++++++++++++++++++++++++++++++
include/linux/of.h | 5 +
3 files changed, 234 insertions(+)
create mode 100644 drivers/of/kexec.c
diff --git a/drivers/of/Makefile b/drivers/of/Makefile
index 6e1e5212f058..8ce11955afde 100644
--- a/drivers/of/Makefile
+++ b/drivers/of/Makefile
@@ -13,5 +13,6 @@ obj-$(CONFIG_OF_RESERVED_MEM) += of_reserved_mem.o
obj-$(CONFIG_OF_RESOLVE) += resolver.o
obj-$(CONFIG_OF_OVERLAY) += overlay.o
obj-$(CONFIG_OF_NUMA) += of_numa.o
+obj-$(CONFIG_KEXEC_FILE) += kexec.o
For the functions moved from powerpc & arm64 to "drivers/of/kexec.c" in this
patch, compiling kexec.c when CONFIG_KEXEC_FILE is enabled is fine. But when
more functions (such as remove_ima_buffer()) are moved to this file, Makefile
needs to be updated for other ima kexec related CONFIGs.
IMA kexec is only available if CONFIG_KEXEC_FILE is enabled, so I don't
understand what problem you are seeing.