LKCD patch (was: Re: [Crash-utility] Increase of NR_CPUS on IA64)

Bernhard Walle bwalle at suse.de
Tue Oct 30 13:30:12 UTC 2007


* Dave Anderson <anderson at redhat.com> [2007-10-29 20:34]:
> > Dave Anderson <anderson redhat com> [2007-10-22 15:32]:
> >> Troy Heber wrote:
> >>> On 10/19/07 12:23, Dave Anderson wrote:
> >>>> So my biggest worry would be if this somehow breaks
> >>>> backwards-compatibility, but I'm presuming that you took
> >>>> that into account.  But anyway, I leave this all up
> >>>> to Troy.
> >>> I just did a quick sanity check on a couple of old IA64 LKCD dumps and
> >>> everything seems to work, so I'm happy.
> >>> Troy
> >
> > Troy, thanks for checking this!
> >
> >> Bernhard, can you post a cleaned-up patch for queueing?
> >
> > Here it is (attached). I didn't see any warnings in the crash code
> > with 'make warn' now. I have used your own definition of offsetof()
> > but moved it into the header file.
>
> My biggest worry came true, so I'm going to have to NAK
> this patch in its current state.

I'm sorry. Unfortunately, I have no old dumps to test here. Only SLES9
and SLES10, and that's v8/v9.

This patch should fix this.


---
 defs.h        |    3 ++-
 lkcd_common.c |   12 ++++++++++++
 lkcd_v8.c     |    6 +++---
 3 files changed, 17 insertions(+), 4 deletions(-)

--- a/defs.h
+++ b/defs.h
@@ -3845,7 +3845,7 @@ int get_lkcd_regs_for_cpu_arch(int cpu, 
 /*
  * lkcd_v8.c
  */
-int get_lkcd_regs_for_cpu(struct bt_info *bt, ulong *eip, ulong *esp);
+int get_lkcd_regs_for_cpu_v8(struct bt_info *bt, ulong *eip, ulong *esp);
 
 /*
  *  ia64.c
@@ -4111,6 +4111,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 get_lkcd_regs_for_cpu(struct bt_info *bt, ulong *eip, ulong *esp);
 
 /*
  * lkcd_v1.c
--- a/lkcd_common.c
+++ b/lkcd_common.c
@@ -1401,3 +1401,15 @@ lkcd_dumpfile_complaint(uint32_t realpag
 	}
 }
 
+int
+get_lkcd_regs_for_cpu(struct bt_info *bt, ulong *eip, ulong *esp)
+{
+	switch (lkcd->version) {
+	case LKCD_DUMP_V8:
+	case LKCD_DUMP_V9:
+		return get_lkcd_regs_for_cpu_v8(bt, eip, esp);
+	default:
+		return -1;
+	}
+}
+
--- a/lkcd_v8.c
+++ b/lkcd_v8.c
@@ -69,12 +69,12 @@ get_lkcd_regs_for_cpu_arch(int cpu, ulon
 
 
 int
-get_lkcd_regs_for_cpu(struct bt_info *bt, ulong *eip, ulong *esp)
+get_lkcd_regs_for_cpu_v8(struct bt_info *bt, ulong *eip, ulong *esp)
 {
 	int cpu;
 
 	if (!bt || !bt->tc) {
-		fprintf(stderr, "get_lkcd_regs_for_cpu: invalid tc "
+		fprintf(stderr, "get_lkcd_regs_for_cpu_v8: invalid tc "
 				"(CPU=%d)\n", cpu);
 		return -EINVAL;
 	}
@@ -82,7 +82,7 @@ get_lkcd_regs_for_cpu(struct bt_info *bt
 	cpu = bt->tc->processor;
 
 	if (cpu >= NR_CPUS) {
-		fprintf(stderr, "get_lkcd_regs_for_cpu, cpu (%d) too high\n", cpu);
+		fprintf(stderr, "get_lkcd_regs_for_cpu_v8, cpu (%d) too high\n", cpu);
 		return -EINVAL;
 	}
 




More information about the Crash-utility mailing list