[Crash-utility] [PATCH] Display online cpus value in preference to kt->cpus

Dave Anderson anderson at redhat.com
Mon Mar 8 19:52:59 UTC 2010


----- "Luciano Chavez" <lnx1138 at linux.vnet.ibm.com> wrote:

> > So if you want to do something specifically for ppc64, please
> > re-post a patch for just that architecture. 
> > 
> > Dave
> > 
> 
> Dave,
> 
> Thanks for taking a good look at all the many cases that would make a
> general solution of using online cpu count messy. I originally did want
> to make this change only applicable to ppc64. The thing was, only
> ppc64_display_machine_stats() was possible to affect and to make the
> value displayed consistent, changing display_sys_stats() and
> dump_kernel_table() was necessary.
> 
> So, re-thinking this to be a ppc64 specific change to CPUS to be
> displayed as the online count when possible and having everyone else do
> what they do now, which is to display kt->cpus, I suggest the following:
> 
> 1. Add a get_cpus_to_display as a machdep function
> 2. For ppc64, initialize machdep->get_cpus_to_display to ppc64_get_cpus_to_display()
>    which will attempt to use get_cpus_online() or fallback to using kt->cpus
> 3. For all other architectures, have them initialize machdep->get_cpus_to_display
>    to generic_get_cpus_to_display() which returns kt->cpus to maintain the status
>    quo of the code as it is now
> 4. Replace kt->cpus in display_sys_stats() and dump_kernel_table() in kernel.c to
>    invoke machdep->get_cpus_to_display() when displaying CPUS

Well, we certainly don't want to change the "cpus:" output of dump_kernel_table()
because its purpose there *is* specifically to dump the kt->cpus value.
 
> 
> Let me know what you think. I think this solution allows for future
> flexibility for other architectures if in the future they individually
> need to change what they display for the cpu count.

The fact of the matter is that it's really not machine-specific in the
sense that your function is just parsing the architecture-neutral cpu maps.
And even the "online-oddities" that I mentioned were not machine-specific,
but rather virtual-vs-baremetal issues.

For now, all I was thinking would be to simply change display_sys_stats()
to something like:

        if (machine_type("PPC64"))
                your_function();       
        else
                fprintf(fp, "        CPUS: %d\n", kt->cpus);

and since your_function() does not need to be in a machine-specific
file, just put in kernel.c.  And you can also call it from the
ppc64_display_machine_stats() function.

Dave






More information about the Crash-utility mailing list