Re: [RFC PATCH 2/4] of: Add a common kexec FDT setup function

From: Thiago Jung Bauermann
Date: Fri Dec 11 2020 - 21:27:14 EST



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.

--
Thiago Jung Bauermann
IBM Linux Technology Center