3 ways to represent cpu affinity in /sys and counting

From: Anton Blanchard
Date: Sat Dec 25 2004 - 19:29:24 EST



Hi,

We have a patch to change pcibus_to_cpumask to pcibus_to_node. This makes
it more consistent with cpu_to_node, and when you want a cpumask you
use node_to_cpumask.

The one real user of pcibus_to_cpumask in arch/x86-64/kernel/pci-gart.c
highlights this:

cpumask_t mask;
mask = pcibus_to_cpumask(to_pci_dev(dev)->bus->number);
node = cpu_to_node(first_cpu(mask));

We go around in circles to get back to the node. I then started looking
at how we export cpu affinity and node information in sysfs:

A pci device has a local_cpus property:

/sys/devices/pci000a:00/000a:00:02.6/local_cpus

A pci_bus has a cpuaffinity property:

/sys/class/pci_bus/000d:d8/cpuaffinity

A node has a cpumap property:

/sys/devices/system/node/node3/cpumap

Can we standardize on a single property name for this? :)

Furthermore, looking at node linkages:

A node has symlinks to cpus:

/sys/devices/system/node/node0/cpu0 -> /sys/devices/system/cpu/cpu0

But doesnt have symlinks to pci devices.

A cpu doesnt have a cpumask of its node, but a pci device and pci bus
both do. Is there some way we can stardardize this too?

Ideally we want to be able to lookup a device -> node -> cpumask
relationship in a consistent way. Assuming we fix up the 3 different
names for cpu affinity properties, we still have 2 methods of looking
that up, and no easy way of going from pci devices to nodes.

Anton
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/