Merge branch 'upstream-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/linvil...
[linux-2.6] / Documentation / cputopology.txt
1
2 Export cpu topology info via sysfs. Items (attributes) are similar
3 to /proc/cpuinfo.
4
5 1) /sys/devices/system/cpu/cpuX/topology/physical_package_id:
6 represent the physical package id of  cpu X;
7 2) /sys/devices/system/cpu/cpuX/topology/core_id:
8 represent the cpu core id to cpu X;
9 3) /sys/devices/system/cpu/cpuX/topology/thread_siblings:
10 represent the thread siblings to cpu X in the same core;
11 4) /sys/devices/system/cpu/cpuX/topology/core_siblings:
12 represent the thread siblings to cpu X in the same physical package;
13
14 To implement it in an architecture-neutral way, a new source file,
15 drivers/base/topology.c, is to export the 4 attributes.
16
17 If one architecture wants to support this feature, it just needs to
18 implement 4 defines, typically in file include/asm-XXX/topology.h.
19 The 4 defines are:
20 #define topology_physical_package_id(cpu)
21 #define topology_core_id(cpu)
22 #define topology_thread_siblings(cpu)
23 #define topology_core_siblings(cpu)
24
25 The type of **_id is int.
26 The type of siblings is cpumask_t.
27
28 To be consistent on all architectures, the 4 attributes should have
29 default values if their values are unavailable. Below is the rule.
30 1) physical_package_id: If cpu has no physical package id, -1 is the
31 default value.
32 2) core_id: If cpu doesn't support multi-core, its core id is 0.
33 3) thread_siblings: Just include itself, if the cpu doesn't support
34 HT/multi-thread.
35 4) core_siblings: Just include itself, if the cpu doesn't support
36 multi-core and HT/Multi-thread.
37
38 So be careful when declaring the 4 defines in include/asm-XXX/topology.h.
39
40 If an attribute isn't defined on an architecture, it won't be exported.
41