[PATCH v4 07/11] crashdump/ppc: Add get_crash_kernel_load_range() function

Daniel Kiper daniel.kiper at oracle.com
Tue Feb 14 14:29:29 PST 2017


On Tue, Feb 14, 2017 at 03:09:19PM -0600, Eric DeVolder wrote:
> From: Daniel Kiper <daniel.kiper at oracle.com>
>
> Implement get_crash_kernel_load_range() in support of
> print crash kernel region size option.
>
> Signed-off-by: Daniel Kiper <daniel.kiper at oracle.com>
> Signed-off-by: Eric DeVolder <eric.devolder at oracle.com>
> Reviewed-by: Daniel Kiper <daniel.kiper at oracle.com>
> ---
> v4: Incorporated feedback:
>     - changes for coding convention and formatting
> v3: Incorporated feedback:
>     - changes for coding convention and formatting
>     - restructured to introduce get_crash_kernel_load_range() for each
>       architecture, and then a single function in kexec/kexec.c to call
>       the per-architecture get_crash_kernel_load_range() and print the
>       result.
>     - changed print_crashkernel_region_size() to get_crash_kernel_load_range()
>     - introduced get_devtree_value()
> v2: Incorporated feedback:
>     - utilize the is_crashkernel_mem_reserved() function common in all archs
>     - utilize device-tree values to print size
> v1: Posted to kexec-tools mailing list
> ---
>  kexec/arch/ppc/crashdump-powerpc.c | 27 ++++++++++++++++++++++++++-
>  kexec/arch/ppc/kexec-ppc.c         | 28 ++++++++++++++++++++++++++++
>  kexec/arch/ppc/kexec-ppc.h         |  1 +
>  3 files changed, 55 insertions(+), 1 deletion(-)
>
> diff --git a/kexec/arch/ppc/crashdump-powerpc.c b/kexec/arch/ppc/crashdump-powerpc.c
> index 3dc35eb..186005c 100644
> --- a/kexec/arch/ppc/crashdump-powerpc.c
> +++ b/kexec/arch/ppc/crashdump-powerpc.c
> @@ -16,6 +16,9 @@
>  #include "kexec-ppc.h"
>  #include "crashdump-powerpc.h"
>
> +#define DEVTREE_CRASHKERNEL_BASE "/proc/device-tree/chosen/linux,crashkernel-base"
> +#define DEVTREE_CRASHKERNEL_SIZE "/proc/device-tree/chosen/linux,crashkernel-size"
> +
>  #ifdef CONFIG_PPC64
>  static struct crash_elf_info elf_info64 = {
>  class: ELFCLASS64,
> @@ -397,11 +400,33 @@ void add_usable_mem_rgns(unsigned long long base, unsigned long long size)
>  		usablemem_rgns.size, base, size);
>  }
>
> +int get_crash_kernel_load_range(uint64_t *start, uint64_t *end)
> +{
> +	unsigned long long value;
> +	int ret = 0;
> +
> +	if (!get_devtree_value(DEVTREE_CRASHKERNEL_BASE, &value))
> +		*start = value;
> +	else {
> +		*start = 0;

I have a feeling that this is not needed. If it is true then we can also
drop curly brackets and leave just ret assignment only.

> +		ret = -1;
> +	}
> +
> +	if (!get_devtree_value(DEVTREE_CRASHKERNEL_SIZE, &value))
> +		*end = *start + value - 1;
> +	else {
> +		*end = 0;

Ditto.

IIRC, same thing applies to ppc64.

Daniel



More information about the kexec mailing list