diff options
author | Ashok Raj <ashok.raj@intel.com> | 2005-06-25 17:55:00 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-25 19:24:30 -0400 |
commit | 76e4f660d9f4c6d1bb473f72be2988c35eaca948 (patch) | |
tree | 3a0b3ae0cc12d6f0d96bf1f3b564f8470e0f72ae /arch/i386 | |
parent | e6982c671c560da4a0bc5c908cbcbec12bd5991d (diff) |
[PATCH] x86_64: CPU hotplug support
Experimental CPU hotplug patch for x86_64
-----------------------------------------
This supports logical CPU online and offline.
- Test with maxcpus=1, and then kick other cpu's off to test if init code
is all cleaned up. CONFIG_SCHED_SMT works as well.
- idle threads are forked on demand from keventd threads for clean startup
TBD:
1. Not tested on a real NUMA machine (tested with numa=fake=2)
2. Handle ACPI pieces for physical hotplug support.
Signed-off-by: Ashok Raj <ashok.raj@intel.com>
Acked-by: Andi Kleen <ak@muc.de>
Acked-by: Zwane Mwaikambo <zwane@arm.linux.org.uk>
Signed-off-by: Shaohua.li<shaohua.li@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/i386')
-rw-r--r-- | arch/i386/mach-default/topology.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/arch/i386/mach-default/topology.c b/arch/i386/mach-default/topology.c index 5b3e8817dae8..23395fff35d1 100644 --- a/arch/i386/mach-default/topology.c +++ b/arch/i386/mach-default/topology.c | |||
@@ -73,12 +73,11 @@ static int __init topology_init(void) | |||
73 | { | 73 | { |
74 | int i; | 74 | int i; |
75 | 75 | ||
76 | for (i = 0; i < MAX_NUMNODES; i++) { | 76 | for_each_online_node(i) |
77 | if (node_online(i)) | 77 | arch_register_node(i); |
78 | arch_register_node(i); | 78 | |
79 | } | 79 | for_each_cpu(i) |
80 | for (i = 0; i < NR_CPUS; i++) | 80 | arch_register_cpu(i); |
81 | if (cpu_possible(i)) arch_register_cpu(i); | ||
82 | return 0; | 81 | return 0; |
83 | } | 82 | } |
84 | 83 | ||
@@ -88,8 +87,8 @@ static int __init topology_init(void) | |||
88 | { | 87 | { |
89 | int i; | 88 | int i; |
90 | 89 | ||
91 | for (i = 0; i < NR_CPUS; i++) | 90 | for_each_cpu(i) |
92 | if (cpu_possible(i)) arch_register_cpu(i); | 91 | arch_register_cpu(i); |
93 | return 0; | 92 | return 0; |
94 | } | 93 | } |
95 | 94 | ||