]> bbs.cooldavid.org Git - net-next-2.6.git/blame - Documentation/cputopology.txt
tg3: Unify max pkt size preprocessor constants
[net-next-2.6.git] / Documentation / cputopology.txt
CommitLineData
69dcc991 1
663fb2fc 2Export CPU topology info via sysfs. Items (attributes) are similar
69dcc991
ZY
3to /proc/cpuinfo.
4
51) /sys/devices/system/cpu/cpuX/topology/physical_package_id:
663fb2fc
AC
6
7 physical package id of cpuX. Typically corresponds to a physical
8 socket number, but the actual value is architecture and platform
9 dependent.
10
69dcc991 112) /sys/devices/system/cpu/cpuX/topology/core_id:
663fb2fc
AC
12
13 the CPU core ID of cpuX. Typically it is the hardware platform's
14 identifier (rather than the kernel's). The actual value is
15 architecture and platform dependent.
16
69dcc991 173) /sys/devices/system/cpu/cpuX/topology/thread_siblings:
663fb2fc
AC
18
19 internel kernel map of cpuX's hardware threads within the same
20 core as cpuX
21
69dcc991 224) /sys/devices/system/cpu/cpuX/topology/core_siblings:
663fb2fc
AC
23
24 internal kernel map of cpuX's hardware threads within the same
25 physical_package_id.
69dcc991
ZY
26
27To implement it in an architecture-neutral way, a new source file,
ded23ac6 28drivers/base/topology.c, is to export the 4 attributes.
69dcc991 29
c50cbb05
BH
30For an architecture to support this feature, it must define some of
31these macros in include/asm-XXX/topology.h:
69dcc991
ZY
32#define topology_physical_package_id(cpu)
33#define topology_core_id(cpu)
fbd59a8d
RR
34#define topology_thread_cpumask(cpu)
35#define topology_core_cpumask(cpu)
69dcc991
ZY
36
37The type of **_id is int.
fbd59a8d 38The type of siblings is (const) struct cpumask *.
69dcc991 39
c50cbb05
BH
40To be consistent on all architectures, include/linux/topology.h
41provides default definitions for any of the above macros that are
42not defined by include/asm-XXX/topology.h:
431) physical_package_id: -1
442) core_id: 0
453) thread_siblings: just the given CPU
464) core_siblings: just the given CPU
d62720ad 47
663fb2fc 48Additionally, CPU topology information is provided under
d62720ad
MT
49/sys/devices/system/cpu and includes these files. The internal
50source for the output is in brackets ("[]").
51
663fb2fc 52 kernel_max: the maximum CPU index allowed by the kernel configuration.
d62720ad
MT
53 [NR_CPUS-1]
54
663fb2fc 55 offline: CPUs that are not online because they have been
d62720ad 56 HOTPLUGGED off (see cpu-hotplug.txt) or exceed the limit
663fb2fc 57 of CPUs allowed by the kernel configuration (kernel_max
d62720ad
MT
58 above). [~cpu_online_mask + cpus >= NR_CPUS]
59
663fb2fc 60 online: CPUs that are online and being scheduled [cpu_online_mask]
d62720ad 61
663fb2fc 62 possible: CPUs that have been allocated resources and can be
d62720ad
MT
63 brought online if they are present. [cpu_possible_mask]
64
663fb2fc 65 present: CPUs that have been identified as being present in the
d62720ad
MT
66 system. [cpu_present_mask]
67
68The format for the above output is compatible with cpulist_parse()
69[see <linux/cpumask.h>]. Some examples follow.
70
663fb2fc 71In this example, there are 64 CPUs in the system but cpus 32-63 exceed
d62720ad 72the kernel max which is limited to 0..31 by the NR_CPUS config option
663fb2fc 73being 32. Note also that CPUs 2 and 4-31 are not online but could be
d62720ad
MT
74brought online as they are both present and possible.
75
76 kernel_max: 31
77 offline: 2,4-31,32-63
78 online: 0-1,3
79 possible: 0-31
80 present: 0-31
81
82In this example, the NR_CPUS config option is 128, but the kernel was
663fb2fc
AC
83started with possible_cpus=144. There are 4 CPUs in the system and cpu2
84was manually taken offline (and is the only CPU that can be brought
d62720ad
MT
85online.)
86
87 kernel_max: 127
88 offline: 2,4-127,128-143
89 online: 0-1,3
90 possible: 0-127
91 present: 0-3
92
93See cpu-hotplug.txt for the possible_cpus=NUM kernel start parameter
663fb2fc 94as well as more information on the various cpumasks.