[Crash-utility] [PATCH] LKCD: Use kernel start address from dump header
Dave Anderson
anderson at redhat.com
Fri Nov 9 22:43:21 UTC 2007
Bernhard Walle wrote:
> Hi,
>
> This patch uses the kernel start address from the dump header on IA64
> instead of the default value. This has been reported as bug on a SGI
> machine -- lcrash was able to open the dump because it uses the start
> address of the header, crash was not.
>
> Troy, ACK?
>
> Dave: That's my last LKCD patch for now. ;-)
>
For *now*?
I added Troy again to see if my cc: gets lost as well.
Anyway, I can't keep up with you any more -- I'm going
home...
Dave
>
> Signed-off-by: Bernhard Walle <bwalle at suse.de>
>
> ---
> defs.h | 2 ++
> ia64.c | 11 ++++++++++-
> lkcd_common.c | 21 +++++++++++++++++++++
> lkcd_fix_mem.c | 10 ++++++++++
> 4 files changed, 43 insertions(+), 1 deletion(-)
>
> --- a/defs.h
> +++ b/defs.h
> @@ -3874,6 +3874,7 @@ int fix_addr_v8(struct _dump_header_asm_
> int lkcd_dump_init_v8_arch(struct _dump_header_s *dh);
> int fix_addr_v7(int);
> int get_lkcd_regs_for_cpu_arch(int cpu, ulong *eip, ulong *esp);
> +int lkcd_get_kernel_start_v8(ulong *addr);
>
> /*
> * lkcd_v8.c
> @@ -4144,6 +4145,7 @@ int lkcd_load_dump_page_header(void *, u
> void lkcd_dumpfile_complaint(uint32_t, uint32_t, int);
> int set_mb_benchmark(ulong);
> ulonglong fix_lkcd_address(ulonglong);
> +int lkcd_get_kernel_start(ulong *addr);
> int get_lkcd_regs_for_cpu(struct bt_info *bt, ulong *eip, ulong *esp);
>
> /*
> --- a/ia64.c
> +++ b/ia64.c
> @@ -3810,7 +3810,16 @@ ia64_calc_phys_start(void)
> phys_start);
> }
> return;
> - }
> + } else if (LKCD_DUMPFILE()) {
> +
> + if (lkcd_get_kernel_start(&phys_start)) {
> + machdep->machspec->phys_start = phys_start;
> + if (CRASHDEBUG(1))
> + fprintf(fp,
> + "LKCD dump: phys_start: %lx\n",
> + phys_start);
> + }
> + }
>
> if ((vd = get_kdump_vmcore_data())) {
> /*
> --- a/lkcd_common.c
> +++ b/lkcd_common.c
> @@ -787,6 +787,27 @@ get_offset(uint64_t paddr)
> }
>
>
> +#ifdef IA64
> +
> +int
> +lkcd_get_kernel_start(ulong *addr)
> +{
> + if (!addr)
> + return 0;
> +
> + switch (lkcd->version)
> + {
> + case LKCD_DUMP_V8:
> + case LKCD_DUMP_V9:
> + return lkcd_get_kernel_start_v8(addr);
> +
> + default:
> + return 0;
> + }
> +}
> +
> +#endif
> +
>
> int
> lkcd_lseek(physaddr_t paddr)
> --- a/lkcd_fix_mem.c
> +++ b/lkcd_fix_mem.c
> @@ -97,4 +97,14 @@ get_lkcd_switch_stack(ulong task)
> return 0;
> }
>
> +int lkcd_get_kernel_start_v8(ulong *addr)
> +{
> + if (!addr)
> + return 0;
> +
> + *addr = ((dump_header_asm_t *)lkcd->dump_header_asm)->dha_kernel_addr;
> +
> + return 1;
> +}
> +
> #endif // IA64
>
> --
> Crash-utility mailing list
> Crash-utility at redhat.com
> https://www.redhat.com/mailman/listinfo/crash-utility
More information about the Crash-utility
mailing list