summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohan Kumar M <mohan@in.ibm.com>2006-10-09 14:56:19 +0530
committerSimon Horman <horms@verge.net.au>2006-10-13 16:04:17 +0900
commit2e9b9aed5d7ddf6195fb3d7da9c62596df11e308 (patch)
tree46dc575ae0a86336283ab364d3ecdf510f7f7aef
parentfcd1df8df66762b741a99319434405817e4c31ec (diff)
Check for crashkernel reservation in x86_64
Check whether memory for crashkernel is reserved or not by looking for the entry "Crash kernel" in /proc/iomem. Signed-off-by: Mohan Kumar M <mohan@in.ibm.com> Signed-off-by: Simon Horman <horms@verge.net.au>
-rw-r--r--kexec/arch/x86_64/crashdump-x86_64.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/kexec/arch/x86_64/crashdump-x86_64.c b/kexec/arch/x86_64/crashdump-x86_64.c
index 9d9ab66..c23fb30 100644
--- a/kexec/arch/x86_64/crashdump-x86_64.c
+++ b/kexec/arch/x86_64/crashdump-x86_64.c
@@ -808,3 +808,33 @@ int load_crashdump_segments(struct kexec_info *info, char* mod_cmdline,
}
return 0;
}
+
+int is_crashkernel_mem_reserved(void)
+{
+ const char iomem[]= "/proc/iomem";
+ char line[MAX_LINE];
+ FILE *fp;
+ unsigned long long start, end;
+ char *str;
+ int consumed;
+ int count;
+
+ fp = fopen(iomem, "r");
+ if (!fp)
+ die("Cannot open /proc/iomem");
+
+ while(fgets(line, sizeof(line), fp) != 0) {
+ count = sscanf(line, "%Lx-%Lx : %n", &start, &end, &consumed);
+ if (count != 2)
+ continue;
+ str = line + consumed;
+ if (memcmp(str, "Crash kernel\n", 13) == 0)
+ break;
+ }
+
+ fclose(fp);
+ if (!memcmp(str, "Crash kernel\n", 13) == 0 || (start == end))
+ return 0;
+ else
+ return 1;
+}