linux/arch/x86/kernel
Venki Pallipadi 783e391b7b x86: Simplify cpu_idle_wait
This patch also resolves hangs on boot:
	http://lkml.org/lkml/2008/2/23/263
	http://bugzilla.kernel.org/show_bug.cgi?id=10093

The bug was causing once-in-few-reboots 10-15 sec wait during boot on
certain laptops.

Earlier commit 40d6a14662 added
smp_call_function in cpu_idle_wait() to kick cpus that are in tickless
idle.  Looking at cpu_idle_wait code at that time, code seemed to be
over-engineered for a case which is rarely used (while changing idle
handler).

Below is a simplified version of cpu_idle_wait, which just makes a dummy
smp_call_function to all cpus, to make them come out of old idle handler
and start using the new idle handler.  It eliminates code in the idle
loop to handle cpu_idle_wait.

Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-04-10 15:38:29 -07:00
..
acpi PCI: don't load acpi_php when acpi is disabled 2008-02-21 15:34:37 -08:00
cpu Fix booting pentium+ with dodgy TSC 2008-04-06 16:10:40 -07:00
.gitignore .gitignore update for x86 arch 2007-10-17 21:19:04 +02:00
alternative.c pop previous section in alternative.c 2008-04-09 18:38:08 -07:00
aperture_64.c x86: fix long standing bug with usb after hibernation with 4GB ram 2008-03-21 17:06:15 +01:00
apic_32.c x86: don't disable the APIC if it hasn't been mapped yet 2008-01-30 13:33:17 +01:00
apic_64.c x86: change bios_cpu_apicid to percpu data variable fixup 2008-01-30 13:33:21 +01:00
apm_32.c x86: isolate PIC/PIT in/out calls 2008-01-30 13:33:14 +01:00
asm-offsets_32.c lguest: fix build breakage 2008-02-26 12:55:49 +01:00
asm-offsets_64.c x86: add asm_offset PARAVIRT constants 2008-01-30 13:33:19 +01:00
asm-offsets.c
audit_64.c
bootflag.c x86: coding style cleanup for kernel/bootflag.c 2008-01-30 13:32:31 +01:00
bugs_64.c x86, 32-bit: trim memory not covered by wb mtrrs 2008-01-30 13:33:18 +01:00
cpuid.c x86: cpuid, msr: use inode mutex instead of big kernel lock 2008-02-04 16:47:59 +01:00
crash_dump_32.c kmap leak fix for x86_32 kdump 2007-10-19 11:53:33 -07:00
crash_dump_64.c
crash.c x86: disable hpet legacy replacement for kdump 2007-12-03 17:17:10 +01:00
doublefault_32.c x86: unify tss_struct 2008-01-30 13:31:31 +01:00
ds.c x86: fix small sparse warning 2008-01-31 22:05:47 +01:00
e820_32.c x86: trim mtrr don't close gap for resource allocation. 2008-03-21 17:06:15 +01:00
e820_64.c x86: trim mtrr don't close gap for resource allocation. 2008-03-21 17:06:15 +01:00
early_printk.c x86: make early_console static in early_printk.c 2008-02-01 17:49:42 +01:00
early-quirks.c x86: fix section mismatch warning in early-quirks.c 2008-01-30 13:33:37 +01:00
efi_32.c x86: sparse error in efi_32.c 2008-02-19 16:18:28 +01:00
efi_64.c x86: EFI runtime code mapping enhancement 2008-02-13 16:20:35 +01:00
efi_stub_32.S
efi_stub_64.S x86: EFI runtime service support 2008-01-30 13:31:19 +01:00
efi.c x86: sparse warning in efi.c 2008-02-19 16:18:28 +01:00
entry_32.S x86: don't make irq_return global 2008-02-19 16:18:29 +01:00
entry_64.S x86: fix execve with -fstack-protect 2008-02-26 12:55:57 +01:00
genapic_64.c x86: cleanup x86_cpu_to_apicid references 2008-01-30 13:33:11 +01:00
genapic_flat_64.c x86: convert cpu_to_apicid to be a per cpu variable 2007-10-19 20:35:03 +02:00
geode_32.c x86: GEODE: MFGPT: Use "just-in-time" detection for the MFGPT timers 2008-02-09 23:24:08 +01:00
head64.c x86: zap invalid and unused pmds in early boot 2008-02-18 20:54:14 +01:00
head_32.S x86: fix fault_msg nul termination 2008-03-21 17:06:15 +01:00
head_64.S x86: rename KERNEL_TEXT_SIZE => KERNEL_IMAGE_SIZE 2008-02-26 12:55:56 +01:00
hpet.c x86: revert assign IRQs to hpet timer 2008-04-04 18:36:49 +02:00
i386_ksyms_32.c x86: unexport __{read,write}_lock_failed 2008-01-30 13:30:29 +01:00
i387.c x86: fix merge mistake in i387.c 2008-03-07 16:39:14 +01:00
i8237.c Driver core: change sysdev classes to use dynamic kobject names 2008-01-24 20:40:40 -08:00
i8253.c x86: pit_clockevent can be static 2008-02-13 16:20:35 +01:00
i8259_32.c x86: i8259A: remove redundant irq_descinitialization 2008-02-19 16:18:34 +01:00
i8259_64.c x86: provide a native_init_IRQ function on 64-bit 2008-01-30 13:33:19 +01:00
init_task.c x86: delay the export removal of init_mm 2008-02-29 18:55:42 +01:00
io_apic_32.c arch/x86/kernel/io_apic_{64,32}.c: use time_before 2008-01-30 13:32:19 +01:00
io_apic_64.c arch/x86/kernel/io_apic_{64,32}.c: use time_before 2008-01-30 13:32:19 +01:00
io_delay.c x86: add dmi quirk for io_delay 2008-03-26 22:23:40 +01:00
ioport.c x86: refactor ioport unification 2008-01-30 13:33:10 +01:00
irq_32.c x86: remove all definitions with fastcall 2008-01-30 13:31:17 +01:00
irq_64.c x86: rename the struct pt_regs members for 32/64-bit consistency 2008-01-30 13:30:56 +01:00
k8.c
kdebugfs.c x86 boot : export boot_params via debugfs for debugging 2008-01-30 13:32:51 +01:00
kprobes.c x86, kprobes: remove sparse warnings from x86 2008-02-19 16:18:28 +01:00
ldt.c x86: cleanup - eliminate numbers in LDT allocation code 2008-02-04 16:48:03 +01:00
machine_kexec_32.c vmcoreinfo: fix the configuration dependencies 2008-02-07 08:42:25 -08:00
machine_kexec_64.c vmcoreinfo: add the symbol "phys_base" 2008-04-02 15:28:19 -07:00
Makefile x86: exclude vsyscall files from stackprotect 2008-02-19 16:18:32 +01:00
mca_32.c
mfgpt_32.c x86: GEODE: add missing module.h include 2008-03-26 22:23:40 +01:00
microcode.c x86: fix section mismatch warnings when referencing notifiers 2008-02-01 17:49:42 +01:00
module_32.c
module_64.c
mpparse_32.c Introduce flags for reserve_bootmem() 2008-02-07 08:42:25 -08:00
mpparse_64.c x86: fix section mismatch warning in acpi/boot.c 2008-01-30 13:33:37 +01:00
msr.c x86: cpuid, msr: use inode mutex instead of big kernel lock 2008-02-04 16:47:59 +01:00
nmi_32.c x86: fix compile warning building without CONFIG_SYSCTL 2008-02-19 16:18:29 +01:00
nmi_64.c x86: fix compile warning building without CONFIG_SYSCTL 2008-02-19 16:18:29 +01:00
numaq_32.c x86: convert TSC disabling to generic cpuid disable bitmap 2008-01-30 13:33:20 +01:00
paravirt_patch_32.c x86: move patching code to arch-specific file. 2008-01-30 13:32:10 +01:00
paravirt_patch_64.c x86: add stringify header 2008-01-30 13:33:19 +01:00
paravirt.c x86: fill in missing pv_mmu_ops entries for PAGETABLE_LEVELS >= 3 2008-01-30 13:33:20 +01:00
pci-calgary_64.c iommu sg: x86: convert calgary IOMMU to use the IOMMU helper 2008-02-05 09:44:11 -08:00
pci-dma_32.c i386: Clean up duplicate includes in arch/i386/kernel/ 2007-10-17 20:15:51 +02:00
pci-dma_64.c x86: revert: reserve dma32 early for gart 2008-03-22 19:25:41 +01:00
pci-gart_64.c x86, agpgart: scary messages are fortunately obsolete 2008-04-04 18:36:46 +02:00
pci-nommu_64.c x86 gart: rename iommu.h to gart.h 2007-10-30 00:22:22 +01:00
pci-swiotlb_64.c x86: nuke a ton of unused exports 2008-01-30 13:30:28 +01:00
pcspeaker.c
pmtimer_64.c x86: move pmtmr related declarations 2008-01-30 13:30:18 +01:00
process_32.c x86: Simplify cpu_idle_wait 2008-04-10 15:38:29 -07:00
process_64.c x86: Simplify cpu_idle_wait 2008-04-10 15:38:29 -07:00
ptrace.c x86: ptrace.c: fix defined-but-unused warnings 2008-03-27 16:08:44 +01:00
quirks.c x86: hpet clock enable quirk on nVidia nForce 430 2008-03-21 17:06:15 +01:00
reboot_fixups_32.c x86: add the RDC machine specific reboot fixup 2008-01-30 13:33:36 +01:00
reboot.c x86: fix reboot problem with Dell Optiplex 745, 0KW626 board 2008-03-21 17:06:15 +01:00
relocate_kernel_32.S
relocate_kernel_64.S
rtc.c x86: fix sched_clock() 2008-01-30 13:32:40 +01:00
scx200_32.c x86: fix sparse warning in kernel/scx200_32.c 2008-01-31 22:05:45 +01:00
setup64.c x86: tight online check in setup_per_cpu_areas 2008-03-21 17:06:15 +01:00
setup_32.c x86: fix trim mtrr not to setup_memory two times 2008-03-26 22:23:41 +01:00
setup_64.c x86: fix memoryless node oops during boot 2008-03-26 22:23:40 +01:00
sigframe_32.h
signal_32.c x86: clear DF before calling signal handler 2008-03-07 16:39:14 +01:00
signal_64.c x86: ia32 syscall restart fix 2008-03-11 17:11:54 +01:00
smp_32.c x86: voluntary leave_mm before entering ACPI C3 2008-01-30 13:32:01 +01:00
smp_64.c x86: voluntary leave_mm before entering ACPI C3 2008-01-30 13:32:01 +01:00
smpboot_32.c calibrate_delay() must be __cpuinit 2008-02-06 10:41:08 -08:00
smpboot_64.c x86: make c_idle.work have a static address. 2008-02-26 12:56:02 +01:00
smpcommon_32.c x86: change write_gdt_entry signature. 2008-01-30 13:31:13 +01:00
srat_32.c Merge branches 'release', 'bugzilla-6217', 'bugzilla-6629', 'bugzilla-6933', 'bugzilla-7186', 'bugzilla-8269', 'bugzilla-8570', 'bugzilla-9139', 'bugzilla-9277', 'bugzilla-9341', 'bugzilla-9444', 'bugzilla-9614', 'bugzilla-9643' and 'bugzilla-9644' into release 2008-02-07 03:09:43 -05:00
stacktrace.c x86: don't save unreliable stack trace entries 2008-02-26 12:55:58 +01:00
step.c x86 ptrace: avoid unnecessary wrmsr 2008-04-03 15:42:43 -07:00
summit_32.c spelling fixes: arch/i386/ 2007-10-20 01:13:56 +02:00
sys_i386_32.c remove include/asm-*/ipc.h 2007-10-17 08:42:55 -07:00
sys_x86_64.c x86: PIE executable randomization, checkpatch fixes 2008-01-30 13:31:07 +01:00
syscall_64.c
syscall_table_32.S timerfd: wire the new timerfd API to the x86 family 2008-02-05 09:44:07 -08:00
tce_64.c x86: Create clflush() inline, remove hardcoded wbinvd 2007-10-17 20:16:12 +02:00
test_nx.c x86: mark the .rodata section also NX 2008-02-06 22:39:45 +01:00
test_rodata.c x86: include proper prototypes for rodata_test 2008-02-14 23:30:20 +01:00
time_32.c x86: rename the struct pt_regs members for 32/64-bit consistency 2008-01-30 13:30:56 +01:00
time_64.c time: fix typo in comments 2008-02-08 09:22:29 -08:00
tls.c x86: tls prevent_tail_call 2008-02-29 18:55:39 +01:00
tls.h x86: x86 user_regset TLS 2008-01-30 13:31:52 +01:00
topology.c x86: fix section mismatch warning in topology.c:arch_register_cpu 2008-02-19 16:18:30 +01:00
trampoline_32.S x86: remove misleading comments in trampoline_*.S 2008-02-04 16:48:01 +01:00
trampoline_64.S x86: remove misleading comments in trampoline_*.S 2008-02-04 16:48:01 +01:00
traps_32.c x86: fix sparse error in traps_32.c 2008-02-06 22:39:44 +01:00
traps_64.c x86: fix "BUG: sleeping function called from invalid context" in print_vma_addr() 2008-02-14 23:30:19 +01:00
tsc_32.c x86: fix call to set_cyc2ns_scale() from time_cpufreq_notifier() 2008-04-07 21:09:14 +02:00
tsc_64.c x86: fix call to set_cyc2ns_scale() from time_cpufreq_notifier() 2008-04-07 21:09:14 +02:00
tsc_sync.c x86: add warning to check_tsc_warp() 2008-01-30 13:33:24 +01:00
verify_cpu_64.S
vm86_32.c arch/x86/: spelling fixes 2008-01-30 13:31:42 +01:00
vmi_32.c x86: VMI fix 2008-02-04 16:47:54 +01:00
vmiclock_32.c x86: isolate PIC/PIT in/out calls 2008-01-30 13:33:14 +01:00
vmlinux_32.lds.S x86: lds - Use PAGE_SIZE instead of numeric constant 2008-02-19 16:18:33 +01:00
vmlinux_64.lds.S x86: lds - Use THREAD_SIZE instead of numeric constant 2008-02-19 16:18:34 +01:00
vmlinux.lds.S
vsmp_64.c x86: clean up arch/x86/kernel/vsmp_64.c 2008-01-30 13:30:24 +01:00
vsyscall_64.c x86: restore vsyscall64 prochandler 2008-02-29 18:55:39 +01:00
x8664_ksyms_64.c x86: export cpu_gdt_descr 2008-01-30 13:31:10 +01:00