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

From: Thiago Jung Bauermann
Date: Tue Dec 22 2020 - 16:49:41 EST



Rob Herring <robh@xxxxxxxxxx> writes:

> 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.

I especially like the elfcorehdr property. It always bothered me that we
pass it on the kernel command line, since it's not something that could
or should be set by an admin.

> - 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

Reviewed-by: Thiago Jung Bauermann <bauerman@xxxxxxxxxxxxx>

--
Thiago Jung Bauermann
IBM Linux Technology Center