diff options
author | Daniel Kiper <daniel.kiper@oracle.com> | 2017-02-17 16:47:21 -0600 |
---|---|---|
committer | Simon Horman <horms@verge.net.au> | 2017-03-02 10:50:31 +0100 |
commit | 7fc80cfcd913897ea92889349d51c1dd33d2c4ed (patch) | |
tree | 27ae95ab8281dc64992f8a33894b7a261398ee48 /kexec/arch/ppc/crashdump-powerpc.c | |
parent | d2caf4c4c43b300c3746d85791a650cdcf0ae733 (diff) |
crashdump/ppc: Add get_crash_kernel_load_range() function
Implement get_crash_kernel_load_range() in support of
print crash kernel region size option.
Signed-off-by: Daniel Kiper <daniel.kiper@oracle.com>
Signed-off-by: Eric DeVolder <eric.devolder@oracle.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
Signed-off-by: Simon Horman <horms@verge.net.au>
Diffstat (limited to 'kexec/arch/ppc/crashdump-powerpc.c')
-rw-r--r-- | kexec/arch/ppc/crashdump-powerpc.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/kexec/arch/ppc/crashdump-powerpc.c b/kexec/arch/ppc/crashdump-powerpc.c index 3dc35eb..dde6de7 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,28 @@ 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; + + if (!get_devtree_value(DEVTREE_CRASHKERNEL_BASE, &value)) + *start = value; + else + return -1; + + if (!get_devtree_value(DEVTREE_CRASHKERNEL_SIZE, &value)) + *end = *start + value - 1; + else + return -1; + + return 0; +} + int is_crashkernel_mem_reserved(void) { int fd; - fd = open("/proc/device-tree/chosen/linux,crashkernel-base", O_RDONLY); + fd = open(DEVTREE_CRASHKERNEL_BASE, O_RDONLY); if (fd < 0) return 0; close(fd); |