Hi Dave, Am Mittwoch, den 29.04.2009, 14:04 -0400 schrieb Dave Anderson: > Hi Michael, > > I made a few other changes to your cpu map/mask patch: > > - cpu_map_size() has been changed to use the symbol-name-creation > scheme as cpu_map_addr() in order to absolutely maintain the > backwards-compatibility issue brought up by Robin. So if the > old symbol names still exist, the code does exactly the same > thing that it used to. fine. > - Your changes to get_cpus_present() and get_cpus_possible() were > incomplete because they were still using the hardwired "cpus_present_map" > and "cpus_possible_map" symbols. > > - I didn't change the s390.c and s390x.c s390[x]_get_smp_cpus() > functions beyond what you did, but I think they should be > changed to use get_cpus_online() instead of the way they > are doing it now. As it is now, they are restricting themselves > to the number of cpu bits in a per-arch long. If the > s390 CONFIG_NR_CPUS can exceed 32, or the s390x CONFIG_NR_CPUS > can exceed 64, then those two functions are incorrect. > If the architecture limits them to 32/64, then I suppose the > way it's done now is OK. That's your call... Right. Index: crash-4.0-8.9/s390.c =================================================================== --- crash-4.0-8.9.orig/s390.c +++ crash-4.0-8.9/s390.c @@ -999,16 +999,7 @@ s390_dis_filter(ulong vaddr, char *inbuf int s390_get_smp_cpus(void) { - unsigned long map = 0, addr; - int i, cpu_num = 0; - addr=symbol_value("cpu_online_map"); - readmem(addr, KVADDR, &map,sizeof(long), "cpu_online_map",FAULT_ON_ERROR); - for(i = 0; i < sizeof(map)*8;i++){ - if(map & 0x1UL) - cpu_num += 1; - map >>= 1; - } - return cpu_num; + return get_cpus_online(); } /* Index: crash-4.0-8.9/s390x.c =================================================================== --- crash-4.0-8.9.orig/s390x.c +++ crash-4.0-8.9/s390x.c @@ -1029,16 +1029,7 @@ s390x_dis_filter(ulong vaddr, char *inbu int s390x_get_smp_cpus(void) { - unsigned long map = 0, addr; - int i, cpu_num = 0; - addr=symbol_value("cpu_online_map"); - readmem(addr, KVADDR, &map,sizeof(long), "cpu_online_map",FAULT_ON_ERROR); - for(i = 0; i < sizeof(map)*8;i++){ - if(map & 0x1UL) - cpu_num += 1; - map >>= 1; - } - return cpu_num; + return get_cpus_online(); } /* > Also, the attached patch contains the changes for searching > for kernel module debuginfo files in the same directory tree > specified with "mod -S <directory>". Alternatively there > is a new "crash --mod <directory>" command line option, such > that "mod -S" with no directory argument will default to > searching the command-line specified directory. Works fine, thanks! > Anyway, I've only tested this on older kernels that still have > the "cpu_xxxx_map" symbols. Can you test the patch on new > kernels? I did some successful tests on 2.6.29 kernels (s390x). > And also let me know whether the s390[x] functions > should be updated. Yes, please update the s390(x) functions accordingly. Michael PS: I noticed some whitespace issues in your patch (blanks instead of tabs). Maybe you could change that. -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility