- based on APIC ID derivation rules for Intel and AMD CPUs
- can handle non-uniform topologies
- requires homogeneous APIC ID assignment (same bit widths for ID components)
- doesn't yet handle dual-node AMD CPUs
- supports only package/core/cache nodes
Todo:
- AMD dual-node processors
- NUMA nodes
- AMD Bulldozer module nodes (?)
- checking for homogeneity of the APIC ID assignment across packages
- more flexible cache placement within topology
Long term todo:
- sharing of other resources like FPU
The new code adds all cpu caches to the scheduling topology.
Previously we excluded caches that contained only a single cpu
or those that covered all cpus in a system (e.g. a top-level
cache of a single package system).