mirror of https://github.com/torvalds/linux.git
Lockdep reports the warning below when Li tries to offline one cpu: [ 110.835487] ================================= [ 110.835616] [ INFO: inconsistent lock state ] [ 110.835688] 2.6.30-rc4-00336-g8c9ed89 #52 [ 110.835757] --------------------------------- [ 110.835828] inconsistent {HARDIRQ-ON-W} -> {IN-HARDIRQ-W} usage. [ 110.835908] swapper/0 [HC1[1]:SC0[0]:HE0:SE1] takes: [ 110.835982] (cmci_discover_lock){?.+...}, at: [<ffffffff80236dc0>] cmci_clear+0x30/0x9b cmci_clear() can be called via smp_call_function_single(). It is better to disable interrupt while holding cmci_discover_lock, to turn it into an irq-safe lock - we can deadlock otherwise. [ Impact: fix possible deadlock in the MCE code ] Reported-by: Shaohua Li <shaohua.li@intel.com> Signed-off-by: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com> Cc: Andi Kleen <andi@firstfloor.org> Cc: Andrew Morton <akpm@linux-foundation.org> LKML-Reference: <4A03ED38.8000700@jp.fujitsu.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Reported-by: Shaohua Li<shaohua.li@intel.com> |
||
|---|---|---|
| .. | ||
| acpi | ||
| apic | ||
| cpu | ||
| .gitignore | ||
| Makefile | ||
| alternative.c | ||
| amd_iommu.c | ||
| amd_iommu_init.c | ||
| aperture_64.c | ||
| apm_32.c | ||
| asm-offsets.c | ||
| asm-offsets_32.c | ||
| asm-offsets_64.c | ||
| audit_64.c | ||
| bios_uv.c | ||
| bootflag.c | ||
| check.c | ||
| cpuid.c | ||
| crash.c | ||
| crash_dump_32.c | ||
| crash_dump_64.c | ||
| doublefault_32.c | ||
| ds.c | ||
| dumpstack.c | ||
| dumpstack.h | ||
| dumpstack_32.c | ||
| dumpstack_64.c | ||
| e820.c | ||
| early-quirks.c | ||
| early_printk.c | ||
| efi.c | ||
| efi_32.c | ||
| efi_64.c | ||
| efi_stub_32.S | ||
| efi_stub_64.S | ||
| entry_32.S | ||
| entry_64.S | ||
| ftrace.c | ||
| geode_32.c | ||
| head.c | ||
| head32.c | ||
| head64.c | ||
| head_32.S | ||
| head_64.S | ||
| hpet.c | ||
| i386_ksyms_32.c | ||
| i387.c | ||
| i8237.c | ||
| i8253.c | ||
| i8259.c | ||
| init_task.c | ||
| io_delay.c | ||
| ioport.c | ||
| irq.c | ||
| irq_32.c | ||
| irq_64.c | ||
| irqinit_32.c | ||
| irqinit_64.c | ||
| k8.c | ||
| kdebugfs.c | ||
| kgdb.c | ||
| kprobes.c | ||
| kvm.c | ||
| kvmclock.c | ||
| ldt.c | ||
| machine_kexec_32.c | ||
| machine_kexec_64.c | ||
| mca_32.c | ||
| mfgpt_32.c | ||
| microcode_amd.c | ||
| microcode_core.c | ||
| microcode_intel.c | ||
| mmconf-fam10h_64.c | ||
| module_32.c | ||
| module_64.c | ||
| mpparse.c | ||
| msr.c | ||
| olpc.c | ||
| paravirt-spinlocks.c | ||
| paravirt.c | ||
| paravirt_patch_32.c | ||
| paravirt_patch_64.c | ||
| pci-calgary_64.c | ||
| pci-dma.c | ||
| pci-gart_64.c | ||
| pci-nommu.c | ||
| pci-swiotlb.c | ||
| pcspeaker.c | ||
| pmtimer_64.c | ||
| probe_roms_32.c | ||
| process.c | ||
| process_32.c | ||
| process_64.c | ||
| ptrace.c | ||
| pvclock.c | ||
| quirks.c | ||
| reboot.c | ||
| reboot_fixups_32.c | ||
| relocate_kernel_32.S | ||
| relocate_kernel_64.S | ||
| rtc.c | ||
| scx200_32.c | ||
| setup.c | ||
| setup_percpu.c | ||
| signal.c | ||
| smp.c | ||
| smpboot.c | ||
| stacktrace.c | ||
| step.c | ||
| sys_i386_32.c | ||
| sys_x86_64.c | ||
| syscall_64.c | ||
| syscall_table_32.S | ||
| tce_64.c | ||
| test_nx.c | ||
| test_rodata.c | ||
| time_32.c | ||
| time_64.c | ||
| tlb_uv.c | ||
| tls.c | ||
| tls.h | ||
| topology.c | ||
| trampoline.c | ||
| trampoline_32.S | ||
| trampoline_64.S | ||
| traps.c | ||
| tsc.c | ||
| tsc_sync.c | ||
| uv_irq.c | ||
| uv_sysfs.c | ||
| uv_time.c | ||
| verify_cpu_64.S | ||
| visws_quirks.c | ||
| vm86_32.c | ||
| vmi_32.c | ||
| vmiclock_32.c | ||
| vmlinux.lds.S | ||
| vmlinux_32.lds.S | ||
| vmlinux_64.lds.S | ||
| vsmp_64.c | ||
| vsyscall_64.c | ||
| x8664_ksyms_64.c | ||
| xsave.c | ||