----- "Luciano Chavez" <lnx1138@xxxxxxxxxxxxxxxxxx> wrote: > Hi Dave, > > > > I like this particular solution best! Simple and straightforward. I'll > > work on a patch that does exactly as suggested. I'll post it for review > > once I have it done this afternoon. Thanks for the help! > > Below is the simpler revised patch. It applies and compiles to the > latest crash 5.0.1 source cleanly. > > I still need to verify it still fixes the original problem. I am > confident it will but just wanted to post the patch up first. > > BTW, I was able to briefly access a POWER7 box this morning and > confirmed that at least the CPU count displayed would be worse on one of > those systems if indeed SMT was disabled and when using the current code > minus the patch. Queued for the next release. Thanks, Dave > > ~ # cat /sys/devices/system/cpu/online > 0-23 > ~ # ppc64_cpu --smt=off > ~ # cat /sys/devices/system/cpu/online > 0,4,8,12,16,20 > > The current 5.0.1 code would display CPUS: 21 rather than CPUS: 6 > > Once I confirm the patch fixes this problem, I will post a followup. > > -- > Luciano Chavez <lnx1138@xxxxxxxxxxxxxxxxxx> > IBM Linux Technology Center > > diff -up crash-5.0.1/defs.h.old crash-5.0.1/defs.h > --- crash-5.0.1/defs.h.old 2010-03-08 14:23:57.000000000 -0600 > +++ crash-5.0.1/defs.h 2010-03-08 14:34:29.000000000 -0600 > @@ -3717,6 +3717,7 @@ int get_cpus_online(void); > int get_cpus_present(void); > int get_cpus_possible(void); > int get_highest_cpu_online(void); > +int get_cpus_to_display(void); > int in_cpu_map(int, int); > void paravirt_init(void); > void print_stack_text_syms(struct bt_info *, ulong, ulong); > diff -up crash-5.0.1/kernel.c.old crash-5.0.1/kernel.c > --- crash-5.0.1/kernel.c.old 2010-03-08 14:23:45.000000000 -0600 > +++ crash-5.0.1/kernel.c 2010-03-08 15:09:05.000000000 -0600 > @@ -3871,7 +3871,8 @@ display_sys_stats(void) > } > > > - fprintf(fp, " CPUS: %d\n", kt->cpus); > + fprintf(fp, " CPUS: %d\n", > + machine_type("PPC64") ? get_cpus_to_display() : kt->cpus); > if (ACTIVE()) > get_symbol_data("xtime", sizeof(struct timespec), > &kt->date); > fprintf(fp, " DATE: %s\n", > @@ -6256,6 +6257,18 @@ get_cpus_possible() > return possible; > } > > + > +/* > + * For when displaying cpus, return the number of cpus online if > possible, otherwise kt->cpus. > + */ > +int > +get_cpus_to_display(void) > +{ > + int online = get_cpus_online(); > + > + return (online ? online : kt->cpus); > +} > + > /* > * Xen machine-address to pseudo-physical-page translator. > */ > diff -up crash-5.0.1/ppc64.c.old crash-5.0.1/ppc64.c > --- crash-5.0.1/ppc64.c.old 2010-03-08 14:24:07.000000000 -0600 > +++ crash-5.0.1/ppc64.c 2010-03-08 14:38:10.000000000 -0600 > @@ -2215,7 +2215,7 @@ ppc64_display_machine_stats(void) > > fprintf(fp, " MACHINE TYPE: %s\n", uts->machine); > fprintf(fp, " MEMORY SIZE: %s\n", > get_memory_size(buf)); > - fprintf(fp, " CPUS: %d\n", kt->cpus); > + fprintf(fp, " CPUS: %d\n", > get_cpus_to_display()); > fprintf(fp, " PROCESSOR SPEED: "); > if ((mhz = machdep->processor_speed())) > fprintf(fp, "%ld Mhz\n", mhz); > > > -- > Crash-utility mailing list > Crash-utility@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/crash-utility -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility