[RFC PATCH 2/4] of: Add a common kexec FDT setup function
Lakshmi Ramasubramanian
nramas at linux.microsoft.com
Sat Dec 12 00:46:27 EST 2020
On 12/11/20 6:17 PM, Thiago Jung Bauermann wrote:
>
> Lakshmi Ramasubramanian <nramas at linux.microsoft.com> 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 at kernel.org>
>>> ---
>>> 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.
>
delete_fdt_mem_rsv() and setup_fdt() functions are defined when
CONFIG_KEXEC_FILE is enabled. So there is no problem with this patch as
such.
I was thinking when other arch independent functions such as
do_get_kexec_buffer() and remove_ima_buffer() are moved to
"drivers/of/kexec.c", they need to be defined only when
CONFIG_HAVE_IMA_KEXEC is enabled.
If CONFIG_HAVE_IMA_KEXEC is enabled, CONFIG_KEXEC_FILE is also enabled.
So there shouldn't be a problem moving those functions to
"drivers/of/kexec.c". You are right Thiago. Thanks.
-lakshmi
More information about the linux-arm-kernel
mailing list