[Crash-utility] [PATCH] Use dha_kernel_addr from LKCD header

Dave Anderson anderson at redhat.com
Wed Jun 13 15:02:38 UTC 2007


Bernhard Walle wrote:
> Currently, ia64_calc_phys_start() in ia64.c silently assumes DEFAULT_PHYS_START
> as start address with LKCD dumps.  There are machines where this is not true.
> 
> This patch implements querying from the dump header.
> 
> 
> Signed-off-by: Bernhard Walle <bwalle at suse.de>
> 
> ---
>  ia64.c         |   11 ++++++++++-
>  lkcd_common.c  |   18 ++++++++++++++++++
>  lkcd_fix_mem.c |   10 ++++++++++
>  3 files changed, 38 insertions(+), 1 deletion(-)
> 
> --- 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,24 @@ get_offset(uint64_t paddr)
>  }
>  
>  
> +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;
> +	}
> +}
> +
> +
>  
>  int
>  lkcd_lseek(physaddr_t paddr)
> --- a/lkcd_fix_mem.c
> +++ b/lkcd_fix_mem.c
> @@ -113,4 +113,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

Looks good on paper, but my tree doesn't have a "dha_kernel_addr":

# make
TARGET: IA64
  CRASH: 4.0-4.1
    GDB: 6.1

cc -c -g -DIA64  build_data.c
cc -c -g -DIA64  ia64.c
cc -c -g -DIA64  lkcd_common.c
cc -c -g -DIA64  lkcd_fix_mem.c
lkcd_fix_mem.c: In function ‘lkcd_get_kernel_start_v8’:
lkcd_fix_mem.c:121: error: ‘dump_header_asm_t’ has no member named ‘dha_kernel_a
ddr’
make[3]: *** [lkcd_fix_mem.o] Error 1
make[2]: *** [gdb] Error 2
make[1]: *** [gdb_merge] Error 2
make: *** [all] Error 2
#

Dave





More information about the Crash-utility mailing list