----- Original Message -----
{ PS: Missed this one in the series posted under
[PATCH v3 0/4] Kdump core analysis support for PPC32
}
This patch adds support for finding the page size of the crashed system from
the VMCOREINFO when available. If it is not available, fall back to the old
methods. This is more useful when we do cross-arch core dump analysis.
Signed-off-by: Suzuki K. Poulose <suzuki(a)in.ibm.com>
---
netdump.c | 27 +++++++++++++++++++++++++--
1 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/netdump.c b/netdump.c
index f7bf7d8..3228316 100644
--- a/netdump.c
+++ b/netdump.c
@@ -2700,6 +2700,25 @@ get_kdump_regs(struct bt_info *bt, ulong *eip,
ulong *esp)
get_netdump_regs(bt, eip, esp);
}
+/*
+ * Get the pagesize of the system from the VMCORE
+ * if it is available.
+ */
+static uint
+get_pagesize_vmcoreinfo()
+{
+ uint pagesz;
+ char *buf = nd->vmcoreinfo;
+
+ if(!buf)
+ return 0;
+ buf = strstr(buf, "PAGESIZE=");
+ if (!buf)
+ return 0;
+ sscanf(buf,"PAGESIZE=%d\n",&pagesz);
+ return pagesz;
+}
+
uint
kdump_page_size(void)
{
@@ -2708,8 +2727,12 @@ kdump_page_size(void)
if (!VMCORE_VALID())
return 0;
- if (!(pagesz = nd->page_size))
- pagesz = (uint)getpagesize();
+ if (!(pagesz = nd->page_size)) {
+ if (nd->vmcoreinfo)
+ nd->page_size = pagesz = get_pagesize_vmcoreinfo();
+ if (!pagesz)
+ pagesz = (uint)getpagesize();
+ }
return pagesz;
}
I'd prefer to use the pre-existing page-size-from-vmcoreinfo algorithm
by applying it to PPC and 32-bit ELF kdumps. Can you try the attached
patch?
Thanks,
Dave