linux/arch/i386/kernel
Nick Piggin 5bfb5d690f [PATCH] sched: disable preempt in idle tasks
Run idle threads with preempt disabled.

Also corrected a bugs in arm26's cpu_idle (make it actually call schedule()).
How did it ever work before?

Might fix the CPU hotplugging hang which Nigel Cunningham noted.

We think the bug hits if the idle thread is preempted after checking
need_resched() and before going to sleep, then the CPU offlined.

After calling stop_machine_run, the CPU eventually returns from preemption and
into the idle thread and goes to sleep.  The CPU will continue executing
previous idle and have no chance to call play_dead.

By disabling preemption until we are ready to explicitly schedule, this bug is
fixed and the idle threads generally become more robust.

From: alexs <ashepard@u.washington.edu>

  PPC build fix

From: Yoichi Yuasa <yuasa@hh.iij4u.or.jp>

  MIPS build fix

Signed-off-by: Nick Piggin <npiggin@suse.de>
Signed-off-by: Yoichi Yuasa <yuasa@hh.iij4u.or.jp>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-11-09 07:56:33 -08:00
..
acpi [PATCH] i386: include linux/irq.h rather than asm/hw_irq.h 2005-09-30 10:58:37 -07:00
cpu Merge master.kernel.org:/pub/scm/linux/kernel/git/davej/cpufreq 2005-11-07 13:28:20 -08:00
timers [PATCH] i386 and x86_64 TSC set_cyc2ns_scale imprecision 2005-10-30 17:37:11 -08:00
apic.c [PATCH] i386: LVT entries remaining unmasked on reboot 2005-11-07 07:53:28 -08:00
apm.c [PATCH] arch/i386: Use ARRAY_SIZE macro 2005-11-07 07:53:28 -08:00
asm-offsets.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
bootflag.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cpuid.c [PATCH] Driver Core: fix up all callers of class_device_create() 2005-10-28 09:52:52 -07:00
crash.c [PATCH] i386 kexec-on-panic: Don't shutdown the apics. 2005-10-30 17:37:13 -08:00
dmi_scan.c [PATCH] fix: dmi_check_system 2005-09-07 16:57:44 -07:00
doublefault.c [PATCH] i386: inline assembler: cleanup and encapsulate descriptor and task register management 2005-09-05 00:06:11 -07:00
early_printk.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
efi_stub.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
efi.c [PATCH] i386: inline assembler: cleanup and encapsulate descriptor and task register management 2005-09-05 00:06:11 -07:00
entry.S [PATCH] i386: Don't miss pending signals returning to user mode after signal processing 2005-09-12 07:52:16 -07:00
head.S kbuild: full dependency check on asm-offsets.h 2005-09-09 19:28:28 +02:00
i386_ksyms.c [PATCH] Remove i386_ksyms.c, almost. 2005-06-23 09:45:11 -07:00
i387.c x86: make restore_fpu() use alternative assembler instructions 2005-07-22 16:06:16 -04:00
i8237.c [PATCH] ISA DMA suspend for i386 2005-09-05 00:06:14 -07:00
i8259.c Revert "i386: move apic init in init_IRQs" 2005-10-31 19:16:17 -08:00
init_task.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
io_apic.c Revert "i386: move apic init in init_IRQs" 2005-10-31 19:16:17 -08:00
ioport.c [PATCH] reset tss->io_bitmap_owner in sys_ioperm() 2005-11-05 16:31:36 -08:00
irq.c [PATCH] x86: hot plug CPU to support physical add of new processors 2005-10-30 17:37:12 -08:00
kprobes.c [PATCH] Kprobes: preempt_disable/enable() simplification 2005-11-07 07:53:46 -08:00
ldt.c [PATCH] arch/i386/kernel/ldt.c should #include <asm/mmu_context.h> 2005-11-07 07:53:29 -08:00
machine_kexec.c [PATCH] x86: more asm cleanups 2005-09-05 00:06:12 -07:00
Makefile Merge linux-2.6 with linux-acpi-2.6 2005-09-08 01:45:47 -04:00
mca.c [PATCH] arch/i386: Use ARRAY_SIZE macro 2005-11-07 07:53:28 -08:00
microcode.c [PATCH] i386: cleanup serialize msr 2005-09-05 00:06:11 -07:00
module.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mpparse.c [PATCH] i386 mpparse: Only ignore lapic information we can't store 2005-10-30 17:37:13 -08:00
msr.c [PATCH] Driver Core: fix up all callers of class_device_create() 2005-10-28 09:52:52 -07:00
nmi.c [PATCH] i386 nmi_watchdog: Merge check_nmi_watchdog fixes from x86_64 2005-10-30 17:37:13 -08:00
numaq.c [PATCH] re-disable TSC on NUMAQ 2005-07-28 21:46:05 -07:00
pci-dma.c [PATCH] gfp flags annotations - part 1 2005-10-08 15:00:57 -07:00
process.c [PATCH] sched: disable preempt in idle tasks 2005-11-09 07:56:33 -08:00
ptrace.c [PATCH] consolidate sys_ptrace() 2005-11-07 07:53:42 -08:00
quirks.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
reboot_fixups.c [PATCH] arch/i386/kernel/reboot_fixups.c should #include <linux/reboot_fixups.h> 2005-11-07 07:53:29 -08:00
reboot.c [PATCH] arch/i386: Replace custom macro with isdigit() 2005-09-13 08:22:33 -07:00
relocate_kernel.S [PATCH] kexec: x86 kexec core 2005-06-25 16:24:49 -07:00
scx200.c [PATCH] arch/i386/kernel/scx200.c should #include <linux/scx200_gpio.h> 2005-11-07 07:53:29 -08:00
semaphore.c [PATCH] unify x86/x86-64 semaphore code 2005-09-05 00:06:14 -07:00
setup.c [PATCH] fixup bogus e820 entry with mem= 2005-10-30 17:37:12 -08:00
sigframe.h [PATCH] __user annotations for pointers in i386 sigframe 2005-09-09 10:31:59 -07:00
signal.c [PATCH] i386: fix stack alignment for signal handlers 2005-10-10 08:45:06 -07:00
smp.c [PATCH] useless includes of linux/irq.h in arch/i386 2005-09-26 18:29:50 -07:00
smpboot.c [PATCH] sched: disable preempt in idle tasks 2005-11-09 07:56:33 -08:00
srat.c [PATCH] i386: srat on non-acpi hw fix 2005-10-30 17:37:13 -08:00
summit.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sys_i386.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
syscall_table.S [PATCH] remove sys_set_zone_reclaim() 2005-08-01 10:03:56 -07:00
sysenter.c [PATCH] sep initializing rework 2005-06-25 16:24:29 -07:00
time_hpet.c [PATCH] hpet-RTC: cache the comparator register 2005-10-30 17:37:30 -08:00
time.c Revert "i386: move apic init in init_IRQs" 2005-10-31 19:16:17 -08:00
trampoline.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
traps.c [PATCH] x86: initialise tss->io_bitmap_owner to something 2005-10-30 17:37:11 -08:00
vm86.c [PATCH] mm: i386 sh sh64 ready for split ptlock 2005-10-29 21:40:41 -07:00
vmlinux.lds.S [PATCH] i386 / uml: add dwarf sections to static link script 2005-09-10 12:00:17 -07:00
vsyscall-int80.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
vsyscall-note.S [PATCH] i386 vDSO: add PT_NOTE segment 2005-04-16 15:24:48 -07:00
vsyscall-sigreturn.S kbuild: full dependency check on asm-offsets.h 2005-09-09 19:28:28 +02:00
vsyscall-sysenter.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
vsyscall.lds.S kbuild: full dependency check on asm-offsets.h 2005-09-09 19:28:28 +02:00
vsyscall.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00