X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=arch%2Fia64%2Fkernel%2Fprocess.c;h=ae96d4176995e9dc84a5172c08393efa99cb8d20;hb=cfaae3ee4a0d00c6b22780057e958d625499e90c;hp=ea914cc6812a0a327cd73802f4b0e2b6beacd42b;hpb=ca78f6baca863afe2e6a244a0fe94b3a70211d46;p=powerpc.git diff --git a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c index ea914cc681..ae96d41769 100644 --- a/arch/ia64/kernel/process.c +++ b/arch/ia64/kernel/process.c @@ -8,8 +8,6 @@ * 2005-10-07 Keith Owens * Add notify_die() hooks. */ -#define __KERNEL_SYSCALLS__ /* see */ - #include #include #include @@ -36,6 +34,7 @@ #include #include #include +#include #include #include #include @@ -270,10 +269,16 @@ cpu_idle (void) /* endless idle loop with no priority at all */ while (1) { - if (can_do_pal_halt) + if (can_do_pal_halt) { current_thread_info()->status &= ~TS_POLLING; - else + /* + * TS_POLLING-cleared state must be visible before we + * test NEED_RESCHED: + */ + smp_mb(); + } else { current_thread_info()->status |= TS_POLLING; + } if (!need_resched()) { void (*idle)(void); @@ -799,6 +804,21 @@ cpu_halt (void) ia64_pal_halt(min_power_state); } +void machine_shutdown(void) +{ +#ifdef CONFIG_HOTPLUG_CPU + int cpu; + + for_each_online_cpu(cpu) { + if (cpu != smp_processor_id()) + cpu_down(cpu); + } +#endif +#ifdef CONFIG_KEXEC + kexec_disable_iosapic(); +#endif +} + void machine_restart (char *restart_cmd) {