diff options
author | Ashok Raj <ashok.raj@intel.com> | 2005-06-25 17:54:58 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-25 19:24:30 -0400 |
commit | e6982c671c560da4a0bc5c908cbcbec12bd5991d (patch) | |
tree | 38e317c28afbde68d431ae139e9e943e5a818b06 /arch/x86_64/kernel/apic.c | |
parent | 52a119feaad92d44a0e97d01b22afbcbaf3fc079 (diff) |
[PATCH] x86_64: Change init sections for CPU hotplug support
This patch adds __cpuinit and __cpuinitdata sections that need to exist past
boot to support cpu hotplug.
Caveat: This is done *only* for EM64T CPU Hotplug support, on request from
Andi Kleen. Much of the generic hotplug code in kernel, and none of the other
archs that support CPU hotplug today, i386, ia64, ppc64, s390 and parisc dont
mark sections with __cpuinit, but only mark them as __devinit, and
__devinitdata.
If someone is motivated to change generic code, we need to make sure all
existing hotplug code does not break, on other arch's that dont use __cpuinit,
and __cpudevinit.
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: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/x86_64/kernel/apic.c')
-rw-r--r-- | arch/x86_64/kernel/apic.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/arch/x86_64/kernel/apic.c b/arch/x86_64/kernel/apic.c index f8e6cc4fecd4..2a6c893ccf60 100644 --- a/arch/x86_64/kernel/apic.c +++ b/arch/x86_64/kernel/apic.c | |||
@@ -285,7 +285,7 @@ void __init init_bsp_APIC(void) | |||
285 | apic_write_around(APIC_LVT1, value); | 285 | apic_write_around(APIC_LVT1, value); |
286 | } | 286 | } |
287 | 287 | ||
288 | void __init setup_local_APIC (void) | 288 | void __cpuinit setup_local_APIC (void) |
289 | { | 289 | { |
290 | unsigned int value, ver, maxlvt; | 290 | unsigned int value, ver, maxlvt; |
291 | 291 | ||
@@ -534,7 +534,7 @@ static struct sys_device device_lapic = { | |||
534 | .cls = &lapic_sysclass, | 534 | .cls = &lapic_sysclass, |
535 | }; | 535 | }; |
536 | 536 | ||
537 | static void __init apic_pm_activate(void) | 537 | static void __cpuinit apic_pm_activate(void) |
538 | { | 538 | { |
539 | apic_pm_state.active = 1; | 539 | apic_pm_state.active = 1; |
540 | } | 540 | } |
@@ -774,14 +774,14 @@ void __init setup_boot_APIC_clock (void) | |||
774 | local_irq_enable(); | 774 | local_irq_enable(); |
775 | } | 775 | } |
776 | 776 | ||
777 | void __init setup_secondary_APIC_clock(void) | 777 | void __cpuinit setup_secondary_APIC_clock(void) |
778 | { | 778 | { |
779 | local_irq_disable(); /* FIXME: Do we need this? --RR */ | 779 | local_irq_disable(); /* FIXME: Do we need this? --RR */ |
780 | setup_APIC_timer(calibration_result); | 780 | setup_APIC_timer(calibration_result); |
781 | local_irq_enable(); | 781 | local_irq_enable(); |
782 | } | 782 | } |
783 | 783 | ||
784 | void __init disable_APIC_timer(void) | 784 | void __cpuinit disable_APIC_timer(void) |
785 | { | 785 | { |
786 | if (using_apic_timer) { | 786 | if (using_apic_timer) { |
787 | unsigned long v; | 787 | unsigned long v; |