linux/arch/x86/kernel
Yinghai Lu 295594e9cf x86: Fix vSMP boot crash
2.6.31-rc7 does not boot on vSMP systems:

[    8.501108] CPU31: Thermal monitoring enabled (TM1)
[    8.501127] CPU 31 MCA banks SHD:2 SHD:3 SHD:5 SHD:6 SHD:8
[    8.650254] CPU31: Intel(R) Xeon(R) CPU           E5540  @ 2.53GHz stepping 04
[    8.710324] Brought up 32 CPUs
[    8.713916] Total of 32 processors activated (162314.96 BogoMIPS).
[    8.721489] ERROR: parent span is not a superset of domain->span
[    8.727686] ERROR: domain->groups does not contain CPU0
[    8.733091] ERROR: groups don't span domain->span
[    8.737975] ERROR: domain->cpu_power not set
[    8.742416]

Ravikiran Thirumalai bisected it to:

| commit 2759c3287d
| x86: don't call read_apic_id if !cpu_has_apic

The problem is that on vSMP systems the CPUID derived
initial-APICIDs are overlapping - so we need to fall
back on hard_smp_processor_id() which reads the local
APIC.

Both come from the hardware (influenced by firmware
though) so it's a tough call which one to trust.

Doing the quirk expresses the vSMP property properly
and also does not affect other systems, so we go for
this solution instead of a revert.

Reported-and-Tested-by: Ravikiran Thirumalai <kiran@scalex86.org>
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Cyrill Gorcunov <gorcunov@gmail.com>
Cc: Shai Fultheim <shai@scalex86.org>
Cc: Suresh Siddha <suresh.b.siddha@intel.com>
LKML-Reference: <4A944D3C.5030100@kernel.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-08-26 10:13:17 +02:00
..
acpi
apic x86: Fix vSMP boot crash 2009-08-26 10:13:17 +02:00
cpu Merge branch 'bugfix' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen into x86/urgent 2009-08-20 12:05:24 +02:00
.gitignore
Makefile
alternative.c
amd_iommu.c
amd_iommu_init.c
aperture_64.c
apm_32.c x86: Work around compilation warning in arch/x86/kernel/apm_32.c 2009-08-04 16:34:23 +02:00
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
ds_selftest.c
ds_selftest.h
dumpstack.c
dumpstack.h
dumpstack_32.c
dumpstack_64.c
e820.c
early-quirks.c
early_printk.c
efi.c x86: fix buffer overflow in efi_init() 2009-08-09 01:08:42 -07:00
efi_32.c
efi_64.c x86: Make 64-bit efi_ioremap use ioremap on MMIO regions 2009-08-03 13:34:25 -07:00
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 i386: Fix section mismatches for init code with !HOTPLUG_CPU 2009-08-18 17:52:35 +02:00
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.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.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 clockevent: Prevent dead lock on clockevents_lock 2009-08-19 18:15:10 +02:00
process_32.c
process_64.c
ptrace.c
pvclock.c
quirks.c
reboot.c x86: Add reboot quirk for every 5 series MacBook/Pro 2009-08-10 20:59:42 +02:00
reboot_fixups_32.c
relocate_kernel_32.S
relocate_kernel_64.S
rtc.c
scx200_32.c
setup.c
setup_percpu.c percpu, sparc64: fix sparse possible cpu map handling 2009-08-14 13:20:53 +09:00
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 x86: Fix UV BAU destination subnode id 2009-08-15 11:58:02 +02:00
tls.c
tls.h
topology.c
trampoline.c
trampoline_32.S
trampoline_64.S
traps.c
tsc.c x86: Fix serialization in pit_expect_msb() 2009-08-10 19:56:57 +02:00
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 x86: Fix VMI && stack protector 2009-08-05 10:20:29 +02:00
vmiclock_32.c
vmlinux.lds.S x86: Fix build with older binutils and consolidate linker script 2009-08-25 15:54:16 +02:00
vsmp_64.c
vsyscall_64.c
x8664_ksyms_64.c
xsave.c