linux/arch/x86/kernel
Peter Zijlstra 7f424a8b08 fix idle (arch, acpi and apm) and lockdep
OK, so 25-mm1 gave a lockdep error which made me look into this.

The first thing that I noticed was the horrible mess; the second thing I
saw was hacks like: 71e93d1561

The problem is that arch idle routines are somewhat inconsitent with
their IRQ state handling and instead of fixing _that_, we go paper over
the problem.

So the thing I've tried to do is set a standard for idle routines and
fix them all up to adhere to that. So the rules are:

  idle routines are entered with IRQs disabled
  idle routines will exit with IRQs enabled

Nearly all already did this in one form or another.

Merge the 32 and 64 bit bits so they no longer have different bugs.

As for the actual lockdep warning; __sti_mwait() did a plainly un-annotated
irq-enable.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Tested-by: Bob Copeland <me@bobcopeland.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2008-04-27 00:01:45 +02:00
..
acpi x86: remove unnecessary memset and NULL check after alloc_bootmem() 2008-04-26 17:35:47 +02:00
cpu x86: remove NexGen support 2008-04-26 17:35:47 +02:00
.gitignore .gitignore update for x86 arch 2007-10-17 21:19:04 +02:00
alternative.c x86: harden kernel code patching 2008-04-25 19:54:07 +02:00
aperture_64.c x86: clean up aperture_64.c 2008-04-17 17:41:19 +02:00
apic_32.c x86: cleanup div_sc() usage 2008-04-26 17:35:47 +02:00
apic_64.c x86: cleanup div_sc() usage 2008-04-26 17:35:47 +02:00
apm_32.c fix idle (arch, acpi and apm) and lockdep 2008-04-27 00:01:45 +02:00
asm-offsets_32.c x86: move struct definitions to unifed sigframe.h 2008-04-17 17:40:46 +02: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: don't use large pages to map the first 2/4MB of memory 2008-04-17 17:41:30 +02:00
cpuid.c PM: Remove destroy_suspended_device() 2008-04-19 19:10:28 -07: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: move ipi definitions to mach_ipi.h 2008-04-17 17:41:30 +02:00
doublefault_32.c x86: unify tss_struct 2008-01-30 13:31:31 +01:00
ds.c x86: debug Store - call kfree if only we really need it 2008-04-17 17:41:34 +02:00
e820_32.c x86: rename find_max_pfn() to propagate_e820_map() 2008-04-19 19:19:55 +02:00
e820_64.c x86_64: fix setup_node_bootmem to support big mem excluding with memmap 2008-04-26 22:51:08 +02:00
early_printk.c x86: coding style fixes to x86/kernel/early_printk.c 2008-04-17 17:40:51 +02: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_PAGE_SHIFT fix 2008-04-19 19:19:54 +02: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: EFI_PAGE_SHIFT fix 2008-04-19 19:19:54 +02:00
entry_32.S xen: fold xen_sysexit into xen_iret 2008-04-24 23:57:33 +02:00
entry_64.S x86: ptrace vs -ENOSYS 2008-04-17 17:41:13 +02:00
genapic_64.c x86: use cpumask function for present, possible, and online cpus 2008-04-26 17:35:47 +02:00
genapic_flat_64.c x86: use cpumask_of_cpu() 2008-04-17 17:41:36 +02:00
genx2apic_uv_x.c x86: UV startup of slave cpus 2008-04-19 19:19:58 +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
head32.c x86: introduce kernel/head32.c 2008-04-17 17:40:49 +02:00
head64.c x86, boot: add linked list of struct setup_data 2008-04-26 21:34:42 +02:00
head_32.S x86: remove pointless comments 2008-04-19 19:19:54 +02:00
head_64.S x86: move suspend wakeup code to C 2008-04-17 17:41:37 +02:00
hpet.c x86: cleanup div_sc() usage 2008-04-26 17:35:47 +02:00
i386_ksyms_32.c Generic semaphore implementation 2008-04-17 10:42:34 -04:00
i387.c x86, fpu: lazy allocation of FPU area - v5 2008-04-19 19:19:55 +02:00
i8237.c Driver core: change sysdev classes to use dynamic kobject names 2008-01-24 20:40:40 -08:00
i8253.c x86: cleanup div_sc() usage 2008-04-26 17:35:47 +02: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 x86: unlock_ExtINT_logic() - fix section mismatch warnings 2008-04-26 17:35:47 +02:00
io_apic_64.c x86: section mismatch fixes, #3 2008-04-26 17:35:48 +02: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
ipi.c x86: create ipi.c 2008-04-17 17:40:56 +02:00
irq_32.c i386: fix asm constraint in do_IRQ() 2008-04-26 17:35:46 +02: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 linked list of struct setup_data via debugfs 2008-04-26 21:34:42 +02:00
kgdb.c x86: KGDB build fix 2008-04-19 19:19:54 +02:00
kprobes.c x86: replace most VM86 flags with flags from processor-flags.h 2008-04-17 17:41:33 +02: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: integrate pci-dma.c 2008-04-19 19:19:58 +02:00
mca_32.c x86: coding style fixes to arch/x86/kernel/mca_32.c 2008-04-17 17:40:49 +02:00
mfgpt_32.c x86: cleanup div_sc() usage 2008-04-26 17:35:47 +02:00
microcode.c x86: use new set_cpus_allowed_ptr function 2008-04-19 19:44:58 +02:00
module_32.c
module_64.c
mpparse.c x86: uniq_ioapic_id - fix section mismatch warning 2008-04-26 17:35:47 +02:00
msr.c PM: Remove destroy_suspended_device() 2008-04-19 19:10:28 -07:00
nmi_32.c ftrace: add notrace annotations for NMI routines 2008-04-19 19:19:55 +02:00
nmi_64.c ftrace: add notrace annotations for NMI routines 2008-04-19 19:19:55 +02: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: add pud_alloc for 4-level pagetables 2008-04-24 23:57:31 +02:00
pci-calgary_64.c x86: remove duplicate get_bios_ebda() from rio.h 2008-04-26 17:35:47 +02:00
pci-dma.c x86: integrate pci-dma.c 2008-04-19 19:19:58 +02:00
pci-gart_64.c x86: dma-ops on highmem fix 2008-04-19 19:19:56 +02:00
pci-nommu.c x86: unify pci-nommu 2008-04-19 19:19:57 +02:00
pci-swiotlb_64.c x86: dma-ops on highmem fix 2008-04-19 19:19:56 +02:00
pcspeaker.c
pmtimer_64.c x86: move pmtmr related declarations 2008-01-30 13:30:18 +01:00
process_32.c fix idle (arch, acpi and apm) and lockdep 2008-04-27 00:01:45 +02:00
process_64.c fix idle (arch, acpi and apm) and lockdep 2008-04-27 00:01:45 +02:00
process.c fix idle (arch, acpi and apm) and lockdep 2008-04-27 00:01:45 +02:00
ptrace.c x86_64 ia32 ptrace: convert to compat_arch_ptrace 2008-04-26 17:35:47 +02: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: unify KERNEL_PGD_PTRS 2008-04-24 23:57:31 +02:00
relocate_kernel_32.S x86: relocate_kernel - use predefined macroses for page attributes 2008-04-17 17:41:29 +02:00
relocate_kernel_64.S x86: relocate_kernel - use predefined macroses for page attributes 2008-04-17 17:41:29 +02:00
rtc.c x86: fix cmos read and write to not use inb_p and outb_p 2008-04-17 17:40:47 +02:00
scx200_32.c x86: fix sparse warning in kernel/scx200_32.c 2008-01-31 22:05:45 +01:00
setup64.c x86: fix exec mappings comments 2008-04-19 19:19:55 +02:00
setup_32.c x86: use get_bios_ebda() 2008-04-26 17:35:47 +02:00
setup_64.c x86_64: fix setup_node_bootmem to support big mem excluding with memmap 2008-04-26 22:51:08 +02:00
setup.c x86: Drop duplicate from setup.c 2008-04-24 23:15:43 +02:00
sigframe.h x86: move struct definitions to unifed sigframe.h 2008-04-17 17:40:46 +02:00
signal_32.c x86 signals: lift flags diddling code 2008-04-26 17:35:47 +02:00
signal_64.c x86 signals: lift set_fs 2008-04-26 17:35:47 +02:00
smp.c x86: move ipi definitions to mach_ipi.h 2008-04-17 17:41:30 +02:00
smpboot.c x86: use cpumask function for present, possible, and online cpus 2008-04-26 17:35:47 +02:00
smpcommon_32.c x86: create smpcommon.c 2008-04-17 17:40:55 +02:00
smpcommon.c x86: create smpcommon.c 2008-04-17 17:40:55 +02:00
srat_32.c x86: replace remaining __FUNCTION__ occurances 2008-04-17 17:40:57 +02:00
stacktrace.c x86: don't save unreliable stack trace entries 2008-02-26 12:55:58 +01:00
step.c x86: prevent unconditional writes to DebugCtl MSR 2008-04-17 17:40:58 +02:00
summit_32.c x86: use get_bios_ebda() 2008-04-26 17:35:47 +02:00
sys_i386_32.c
sys_x86_64.c x86: PIE executable randomization, checkpatch fixes 2008-01-30 13:31:07 +01:00
syscall_64.c x86: coding style fixes to arch/x86/kernel/syscall_64.c 2008-04-17 17:40:48 +02:00
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
test_nx.c x86: Explicitly include required header files. 2008-04-17 17:41:15 +02: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
tlb_32.c x86: create tlb files 2008-04-17 17:40:56 +02:00
tlb_64.c x86: use cpumask function for present, possible, and online cpus 2008-04-26 17:35:47 +02:00
tls.c asmlinkage_protect replaces prevent_tail_call 2008-04-10 17:28:26 -07: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: trampoline_32.S - switch to .cpuinit.data 2008-04-26 17:35:47 +02:00
trampoline_64.S x86: move suspend wakeup code to C 2008-04-17 17:41:37 +02:00
trampoline.c x86: standalone trampoline code 2008-04-17 17:41:37 +02:00
traps_32.c i386: fix signal type for iret exception 2008-04-26 17:35:46 +02:00
traps_64.c x86, fpu: lazy allocation of FPU area - v5 2008-04-19 19:19:55 +02:00
tsc_32.c x86: tsc prevent time going backwards 2008-04-19 19:19:55 +02:00
tsc_64.c x86: tsc prevent time going backwards 2008-04-19 19:19:55 +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 x86: replace most VM86 flags with flags from processor-flags.h 2008-04-17 17:41:33 +02:00
vmi_32.c x86: unify KERNEL_PGD_PTRS 2008-04-24 23:57:31 +02:00
vmiclock_32.c x86: isolate PIC/PIT in/out calls 2008-01-30 13:33:14 +01:00
vmlinux_32.lds.S x86: use ELF section to list CPU vendor specific code 2008-04-17 17:40:47 +02:00
vmlinux_64.lds.S x86: use ELF section to list CPU vendor specific code 2008-04-17 17:40:47 +02:00
vmlinux.lds.S
vsmp_64.c x86: clean up vSMP detection 2008-04-17 17:41:29 +02:00
vsyscall_64.c "make namespacecheck" fixes 2008-04-24 23:15:44 +02:00
x8664_ksyms_64.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86 2008-04-18 08:25:51 -07:00