Zhang, Yanmin | 69dcc99 | 2006-02-03 03:04:36 -0800 | [diff] [blame] | 1 | |
Jesper Juhl | ded23ac | 2006-03-28 01:56:52 -0800 | [diff] [blame] | 2 | Export cpu topology info via sysfs. Items (attributes) are similar |
Zhang, Yanmin | 69dcc99 | 2006-02-03 03:04:36 -0800 | [diff] [blame] | 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, |
Jesper Juhl | ded23ac | 2006-03-28 01:56:52 -0800 | [diff] [blame] | 15 | drivers/base/topology.c, is to export the 4 attributes. |
Zhang, Yanmin | 69dcc99 | 2006-02-03 03:04:36 -0800 | [diff] [blame] | 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 |
Matt LaPlante | fff9289 | 2006-10-03 22:47:42 +0200 | [diff] [blame] | 29 | default values if their values are unavailable. Below is the rule. |
Zhang, Yanmin | 69dcc99 | 2006-02-03 03:04:36 -0800 | [diff] [blame] | 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 | |