[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