[RFC] sysfs cpu cleanup

David Gibson david at gibson.dropbear.id.au
Fri Nov 19 10:44:44 EST 2004

On Wed, Nov 17, 2004 at 08:59:12AM -0600, Nathan Lynch wrote:
> Hi David-
> On Wed, 2004-11-17 at 18:16 +1100, David Gibson wrote:
> > Current the ppc64 sysfs code registers an entry for each possible cpu
> > in sysfs, rather than just online cpus.  That makes sense, since the
> > sysfs entries are needed to control onlining of the cpus.  However,
> > this is done even if CONFIG_HOTPLUG_CPU is not set, or if it is not a
> > hotplug capable (DLPAR) machine, which is a bit misleading.  Secondly
> > it also registers all the other sysfs entries (physical_id and the pmc
> > stuff) on all possible cpus, although they are quite meaningless on
> > non-online cpus.
> > 
> > This patch alters the code to only register sysfs directories at boot
> > for cpus which are either online or could be onlined (cpu is possible,
> > and CONFIG_HOTPLUG_CPU and an lpar machine).  Furthermore, the entries
> > apart from 'online' itself are only registered for online CPUs (and
> > deregistered again if a cpu goes offline).
> > 
> > Anyone see any problems with this approach?  Also, this has not yet
> > been tested in the presence of actual cpu hotplugging...
> See http://www.ussg.iu.edu/hypermail/linux/kernel/0410.3/0020.html for
> what I think is the best solution to this - dynamic cpu device
> registration.  In short, the driver model "core" would register all
> present cpus at boot, which would be correct regardless of
> CONFIG_HOTPLUG_CPU.  Addition and removal of the sysfs entities should
> correspond to addition and removal of cpus (not online/offline), imo.

Sounds fairly reasonable.

> Of course, I haven't had much time to work on this lately.  Your patch
> looks fine to me except for the treatment of the physical_id attribute.
> We need this to be present even on offline cpus, because it is sometimes
> used to determine which cpu to start.

Well, I did wonder about the physical_id attribute.  However for the
time being, at least, the physical_id showed as 0 for all offline
CPUs, so at present it's not meaningful for offline CPUs - maybe it
should be, in which case there's another bug...

David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist.  NOT _the_ _other_ _way_
				| _around_!

More information about the Linuxppc64-dev mailing list