[PATCH v17 02/10] of: Add a common kexec FDT setup function
nramas at linux.microsoft.com
Wed Feb 10 12:59:45 EST 2021
On 2/10/21 9:23 AM, Rob Herring wrote:
> On Tue, Feb 09, 2021 at 10:21:52AM -0800, Lakshmi Ramasubramanian wrote:
>> From: Rob Herring <robh at kernel.org>
>> Both arm64 and powerpc do essentially the same FDT /chosen setup for
>> kexec. The differences are either omissions that arm64 should have
>> or additional properties that will be ignored. The setup code can be
>> combined and shared by both powerpc and arm64.
>> 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.
>> Combine the code for setting up the /chosen node in the FDT and updating
>> the memory reservation for kexec, for powerpc and arm64, in
>> of_kexec_alloc_and_setup_fdt() and move it to "drivers/of/kexec.c".
>> Signed-off-by: Rob Herring <robh at kernel.org>
>> Signed-off-by: Lakshmi Ramasubramanian <nramas at linux.microsoft.com>
>> drivers/of/Makefile | 6 ++
>> drivers/of/kexec.c | 258 ++++++++++++++++++++++++++++++++++++++++++++
>> include/linux/of.h | 13 +++
>> 3 files changed, 277 insertions(+)
>> create mode 100644 drivers/of/kexec.c
>> diff --git a/include/linux/of.h b/include/linux/of.h
>> index 4b27c9a27df3..f0eff5e84353 100644
>> --- a/include/linux/of.h
>> +++ b/include/linux/of.h
>> @@ -560,6 +560,19 @@ int of_map_id(struct device_node *np, u32 id,
>> phys_addr_t of_dma_get_max_cpu_address(struct device_node *np);
>> + * Additional space needed for the buffer to build the new FDT
>> + * so that we can add initrd, bootargs, kaslr-seed, rng-seed,
>> + * userable-memory-range and elfcorehdr.
>> + */
>> +#define FDT_EXTRA_SPACE 0x1000
> No need for this to be public now. Move it to of/kexec.c.
More information about the linux-arm-kernel