summaryrefslogtreecommitdiff
path: root/kernel/sched.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@athlon.transmeta.com>2002-02-04 23:59:43 -0800
committerLinus Torvalds <torvalds@athlon.transmeta.com>2002-02-04 23:59:43 -0800
commitba6edf537004b1c68a0736c95ebe39a30a2537fb (patch)
treeb4a2cd81ca09ab6cd8e442458d6da722422ad952 /kernel/sched.c
parentd0415686774477153ca911a612f74c2d2bb11be6 (diff)
v2.5.1.4 -> v2.5.1.5
- Dave Jones: more merging, fix up last merge.. - release to sync with Dave
Diffstat (limited to 'kernel/sched.c')
-rw-r--r--kernel/sched.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/kernel/sched.c b/kernel/sched.c
index 757edd23d6b3..1de65396fee7 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -265,6 +265,21 @@ send_now_idle:
* a problem.
*/
if (tsk == idle_task(cpu)) {
+#if defined(__i386__) && defined(CONFIG_SMP)
+ /*
+ * Check if two siblings are idle in the same
+ * physical package. Use them if found.
+ */
+ if (smp_num_siblings == 2) {
+ if (cpu_curr(cpu_sibling_map[cpu]) ==
+ idle_task(cpu_sibling_map[cpu])) {
+ oldest_idle = last_schedule(cpu);
+ target_tsk = tsk;
+ break;
+ }
+
+ }
+#endif
if (last_schedule(cpu) < oldest_idle) {
oldest_idle = last_schedule(cpu);
target_tsk = tsk;