linux/drivers
Zhang, Yanmin 69dcc99199 [PATCH] Export cpu topology in sysfs
The patch implements cpu topology exportation by sysfs.

Items (attributes) are similar to /proc/cpuinfo.

1) /sys/devices/system/cpu/cpuX/topology/physical_package_id:
	represent the physical package id of  cpu X;
2) /sys/devices/system/cpu/cpuX/topology/core_id:
	represent the cpu core id to cpu X;
3) /sys/devices/system/cpu/cpuX/topology/thread_siblings:
	represent the thread siblings to cpu X in the same core;
4) /sys/devices/system/cpu/cpuX/topology/core_siblings:
	represent the thread siblings to cpu X in the same physical package;

To implement it in an architecture-neutral way, a new source file,
driver/base/topology.c, is to export the 5 attributes.

If one architecture wants to support this feature, it just needs to
implement 4 defines, typically in file include/asm-XXX/topology.h.
The 4 defines are:
#define topology_physical_package_id(cpu)
#define topology_core_id(cpu)
#define topology_thread_siblings(cpu)
#define topology_core_siblings(cpu)

The type of **_id is int.
The type of siblings is cpumask_t.

To be consistent on all architectures, the 4 attributes should have
deafult values if their values are unavailable. Below is the rule.

1) physical_package_id: If cpu has no physical package id, -1 is the
default value.

2) core_id: If cpu doesn't support multi-core, its core id is 0.

3) thread_siblings: Just include itself, if the cpu doesn't support
HT/multi-thread.

4) core_siblings: Just include itself, if the cpu doesn't support
multi-core and HT/Multi-thread.

So be careful when declaring the 4 defines in include/asm-XXX/topology.h.

If an attribute isn't defined on an architecture, it won't be exported.

Thank Nathan, Greg, Andi, Paul and Venki.

The patch provides defines for i386/x86_64/ia64.

Signed-off-by: Zhang, Yanmin <yanmin.zhang@intel.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: Greg KH <greg@kroah.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-02-03 08:32:09 -08:00
..
acorn [PATCH] move capable() to capability.h 2006-01-11 18:42:13 -08:00
acpi [ACPI] ACPICA 20060127 2006-01-31 03:25:09 -05:00
amba
atm
base [PATCH] Export cpu topology in sysfs 2006-02-03 08:32:09 -08:00
block [PATCH] umem: check pci_set_dma_mask return value correctly 2006-02-03 08:32:05 -08:00
bluetooth [PATCH] Unlinline a bunch of other functions 2006-01-14 18:27:06 -08:00
cdrom [PATCH] powerpc: remove bitfields from HvLpEvent 2006-01-12 20:09:29 +11:00
char [PATCH] rio cleanups 2006-02-03 08:32:04 -08:00
connector
cpufreq [CPUFREQ] Get rid of userspace policy struct, make userspace gov _PPC safe. 2006-01-27 10:36:49 -08:00
crypto
dio [PATCH] Add dio_bus_type probe and remove methods 2006-01-13 11:26:07 -08:00
edac [PATCH] edac: use C99 initializers (sparse warnings) 2006-02-03 08:32:06 -08:00
eisa
fc4
firmware [PATCH] dell_rbu: fix Bug 5854 2006-01-14 18:27:13 -08:00
hwmon
i2c [PATCH] Add i2c_bus_type probe and remove methods 2006-01-13 11:26:07 -08:00
ide [PATCH] ide: restore support for AEC6280M cards in aec62xx.c 2006-02-03 08:32:01 -08:00
ieee1394 Actually remove amdtp.[ch], cmp.[ch]. 2006-01-16 19:21:57 -05:00
infiniband IB/mthca: Semaphore to mutex conversions 2006-01-30 16:45:11 -08:00
input Merge master.kernel.org:/pub/scm/linux/kernel/git/dtor/input 2006-01-31 21:18:17 -08:00
isdn [PATCH] drivers/isdn/sc/ioctl.c: copy_from_user() size fix 2006-02-03 08:32:05 -08:00
macintosh [PATCH] MODALIAS= for macio 2006-02-01 08:53:19 -08:00
mca
md [PATCH] md: Make sure rdev->size gets set for version-1 superblocks 2006-02-03 08:32:00 -08:00
media [PATCH] fix saa7146 kobject register failure 2006-02-01 08:53:14 -08:00
message [PATCH] I2O: fix and workaround for Motorola/Freescale controller 2006-02-03 08:32:07 -08:00
mfd [PATCH] Add MCP bus_type probe and remove methods 2006-01-13 11:26:08 -08:00
misc [SERIAL] Remove UPF_AUTOPROBE and UPF_BOOT_ONLYMCA 2006-01-21 20:06:14 +00:00
mmc Merge master.kernel.org:/home/rmk/linux-2.6-mmc 2006-01-14 19:44:01 -08:00
mtd [PATCH] Fix compilation errors in maps/dc21285.c 2006-02-03 08:32:01 -08:00
net [PATCH] 3c59x: collision statistic fix 2006-02-03 08:32:02 -08:00
nubus
oprofile [PATCH] move capable() to capability.h 2006-01-11 18:42:13 -08:00
parisc [PATCH] move capable() to capability.h 2006-01-11 18:42:13 -08:00
parport [PATCH] parport: fix documentation 2006-02-03 08:32:06 -08:00
pci [PATCH] PowerPC/PCI Hotplug build break 2006-02-01 16:35:29 -08:00
pcmcia [PATCH] Add pcmcia_bus_type probe and remove methods 2006-01-13 11:26:08 -08:00
pnp Merge git://git.kernel.org/pub/scm/linux/kernel/git/perex/alsa 2006-02-01 22:08:23 -08:00
rapidio [PATCH] Add rio_bus_type probe and remove methods 2006-01-13 11:26:10 -08:00
s390 [PATCH] s390: fix to_channelpath macro 2006-02-03 08:32:01 -08:00
sbus [PATCH] remove unused tmp_buf_sem's 2006-01-14 10:41:42 -08:00
scsi [PATCH] ide-scsi: fix for IDE probe/remove ops changes 2006-02-01 08:53:09 -08:00
serial [PATCH] drivers/serial/jsm/: cleanups 2006-02-03 08:32:08 -08:00
sh [PATCH] Add superhyway_bus_type probe and remove methods 2006-01-13 11:26:09 -08:00
sn [PATCH] Altix ioc3: correct export call 2006-02-01 08:53:25 -08:00
spi [PATCH] SPI: add spi_butterfly driver 2006-01-13 16:29:56 -08:00
tc
telephony [PATCH] ixj: fix writing silence check 2006-02-03 08:32:08 -08:00
usb Merge master.kernel.org:/pub/scm/linux/kernel/git/dtor/input 2006-01-31 21:18:17 -08:00
video [PATCH] i810fb: Do not probe the third i2c bus by default 2006-02-01 08:53:27 -08:00
w1
zorro [PATCH] Add zorro_bus_type probe and remove methods 2006-01-13 11:26:10 -08:00
Kconfig [PATCH] EDAC: core EDAC support code 2006-01-18 19:20:31 -08:00
Makefile [PATCH] EDAC: core EDAC support code 2006-01-18 19:20:31 -08:00