diff options
author | Daniel Kiper <daniel.kiper@oracle.com> | 2017-02-17 16:47:22 -0600 |
---|---|---|
committer | Simon Horman <horms@verge.net.au> | 2017-03-02 10:50:37 +0100 |
commit | e4280e22c8c45cab1f86860f1fc0beddda77a3a9 (patch) | |
tree | 3613926733e493b4fcfe754443dccb739b07f90f /kexec/arch/ppc64/crashdump-ppc64.c | |
parent | 7fc80cfcd913897ea92889349d51c1dd33d2c4ed (diff) |
crashdump/ppc64: 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/ppc64/crashdump-ppc64.c')
-rw-r--r-- | kexec/arch/ppc64/crashdump-ppc64.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/kexec/arch/ppc64/crashdump-ppc64.c b/kexec/arch/ppc64/crashdump-ppc64.c index f62b159..5a71d51 100644 --- a/kexec/arch/ppc64/crashdump-ppc64.c +++ b/kexec/arch/ppc64/crashdump-ppc64.c @@ -36,6 +36,9 @@ #include "../../fs2dt.h" #include "crashdump-ppc64.h" +#define DEVTREE_CRASHKERNEL_BASE "/proc/device-tree/chosen/linux,crashkernel-base" +#define DEVTREE_CRASHKERNEL_SIZE "/proc/device-tree/chosen/linux,crashkernel-size" + static struct crash_elf_info elf_info64 = { class: ELFCLASS64, @@ -526,11 +529,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); |