----- 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 <[email protected]>
> ---
>
> 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
--- crash-6.0.2/netdump.c.orig
+++ crash-6.0.2/netdump.c
@@ -52,7 +52,7 @@ static void kdump_get_osrelease(void);
* which can differ from the host machine's page size.
*/
#define READ_PAGESIZE_FROM_VMCOREINFO() \
- (machine_type("IA64") || machine_type("PPC64"))
+ (machine_type("IA64") || machine_type("PPC64") || machine_type("PPC"))
/*
* kdump installs NT_PRSTATUS elf notes only to the cpus
@@ -1740,6 +1740,9 @@ dump_Elf32_Nhdr(Elf32_Off offset, int st
netdump_print("(unused)\n");
nd->vmcoreinfo = (char *)(ptr + note->n_namesz + 1);
nd->size_vmcoreinfo = note->n_descsz;
+ if (READ_PAGESIZE_FROM_VMCOREINFO() && store)
+ nd->page_size = (uint)
+ vmcoreinfo_read_integer("PAGESIZE", 0);
} else if (eraseinfo) {
netdump_print("(unused)\n");
if (note->n_descsz)
--
Crash-utility mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/crash-utility