diff options
author | Paul Mackerras <paulus@samba.org> | 2005-11-09 19:06:04 -0500 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2005-11-09 19:06:04 -0500 |
commit | 31e7f1ff3c5d39a70da85f7d81a1ab1f4e64fa97 (patch) | |
tree | a6cb8f14b1182e5dce55d13e52c1182a8c7e0402 /arch/ppc/kernel | |
parent | fca5dcd4835ed09bb1a48a355344aff7a25c76e0 (diff) | |
parent | 6730c3c14421b7c924d06e31bb66e0adad225547 (diff) |
Merge ../linux-2.6
Diffstat (limited to 'arch/ppc/kernel')
-rw-r--r-- | arch/ppc/kernel/idle.c | 25 | ||||
-rw-r--r-- | arch/ppc/kernel/smp.c | 1 |
2 files changed, 17 insertions, 9 deletions
diff --git a/arch/ppc/kernel/idle.c b/arch/ppc/kernel/idle.c index 11e5b44713f7..3c4e4cb61074 100644 --- a/arch/ppc/kernel/idle.c +++ b/arch/ppc/kernel/idle.c | |||
@@ -53,10 +53,6 @@ void default_idle(void) | |||
53 | } | 53 | } |
54 | #endif | 54 | #endif |
55 | } | 55 | } |
56 | if (need_resched()) | ||
57 | schedule(); | ||
58 | if (cpu_is_offline(cpu) && system_state == SYSTEM_RUNNING) | ||
59 | cpu_die(); | ||
60 | } | 56 | } |
61 | 57 | ||
62 | /* | 58 | /* |
@@ -64,11 +60,22 @@ void default_idle(void) | |||
64 | */ | 60 | */ |
65 | void cpu_idle(void) | 61 | void cpu_idle(void) |
66 | { | 62 | { |
67 | for (;;) | 63 | int cpu = smp_processor_id(); |
68 | if (ppc_md.idle != NULL) | 64 | |
69 | ppc_md.idle(); | 65 | for (;;) { |
70 | else | 66 | while (need_resched()) { |
71 | default_idle(); | 67 | if (ppc_md.idle != NULL) |
68 | ppc_md.idle(); | ||
69 | else | ||
70 | default_idle(); | ||
71 | } | ||
72 | |||
73 | if (cpu_is_offline(cpu) && system_state == SYSTEM_RUNNING) | ||
74 | cpu_die(); | ||
75 | preempt_enable_no_resched(); | ||
76 | schedule(); | ||
77 | preempt_disable(); | ||
78 | } | ||
72 | } | 79 | } |
73 | 80 | ||
74 | #if defined(CONFIG_SYSCTL) && defined(CONFIG_6xx) | 81 | #if defined(CONFIG_SYSCTL) && defined(CONFIG_6xx) |
diff --git a/arch/ppc/kernel/smp.c b/arch/ppc/kernel/smp.c index bc5bf1124836..43b8fc2ca591 100644 --- a/arch/ppc/kernel/smp.c +++ b/arch/ppc/kernel/smp.c | |||
@@ -341,6 +341,7 @@ int __devinit start_secondary(void *unused) | |||
341 | cpu = smp_processor_id(); | 341 | cpu = smp_processor_id(); |
342 | smp_store_cpu_info(cpu); | 342 | smp_store_cpu_info(cpu); |
343 | set_dec(tb_ticks_per_jiffy); | 343 | set_dec(tb_ticks_per_jiffy); |
344 | preempt_disable(); | ||
344 | cpu_callin_map[cpu] = 1; | 345 | cpu_callin_map[cpu] = 1; |
345 | 346 | ||
346 | printk("CPU %d done callin...\n", cpu); | 347 | printk("CPU %d done callin...\n", cpu); |