android_kernel_xiaomi_sm8350/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 Merge branches 'acerhdf', 'acpi-pci-bind', 'bjorn-pci-root', 'bugzilla-12904', 'bugzilla-13121', 'bugzilla-13396', 'bugzilla-13533', 'bugzilla-13612', 'c3_lock', 'hid-cleanups', 'misc-2.6.31', 'pdc-leak-fix', 'pnpacpi', 'power_nocheck', 'thinkpad_acpi', 'video' and 'wmi' into release 2009-06-24 01:19:50 -04:00
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
alternative.c
amd_iommu_init.c amd-iommu: set evt_buf_size correctly 2009-07-02 18:32:05 +02:00
amd_iommu.c x86: Mark device_nb as static and fix NULL noise 2009-07-01 16:52:53 +02:00
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_32.c lguest: optimize by coding restore_flags and irq_enable in assembler. 2009-06-12 22:27:03 +09:30
asm-offsets_64.c
asm-offsets.c
audit_64.c
bios_uv.c
bootflag.c
check.c
cpuid.c Driver Core: x86: add nodename for cpuid and msr drivers. 2009-06-15 21:30:25 -07:00
crash_dump_32.c
crash_dump_64.c
crash.c x86: disable IOMMUs on kernel crash 2009-06-15 15:20:40 +02:00
doublefault_32.c
ds_selftest.c
ds_selftest.h
ds.c
dumpstack_32.c perf_counter: Ignore the nmi call frames in the x86-64 backtraces 2009-07-01 22:37:23 +02:00
dumpstack_64.c perf_counter: Ignore the nmi call frames in the x86-64 backtraces 2009-07-01 22:37:23 +02:00
dumpstack.c x86: Add sysctl to allow panic on IOCK NMI error 2009-06-25 22:06:11 +02:00
dumpstack.h
e820.c Remove multiple KERN_ prefixes from printk formats 2009-07-08 10:30:03 -07:00
early_printk.c
early-quirks.c
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
efi.c x86: fix buffer overflow in efi_init() 2009-08-09 01:08:42 -07:00
entry_32.S Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-06-20 10:56:46 -07:00
entry_64.S function-graph: add stack frame test 2009-06-18 18:40:18 -04:00
ftrace.c function-graph: add stack frame test 2009-06-18 18:40:18 -04:00
geode_32.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 x86: de-assembler-ize asm/desc.h 2009-06-17 21:35:10 -07:00
head.c
hpet.c x86: hpet: Mark per cpu interrupts IRQF_TIMER to prevent resume failure 2009-06-14 18:24:29 +02:00
i386_ksyms_32.c
i387.c
i8237.c
i8253.c time: move PIT_TICK_RATE to linux/timex.h 2009-06-16 19:47:27 -07:00
i8259.c
init_task.c mm: consolidate init_mm definition 2009-06-16 19:47:28 -07:00
io_delay.c
ioport.c
irq_32.c
irq_64.c
irq.c Merge branch 'linus' into x86/mce3 2009-06-11 23:31:52 +02:00
irqinit.c x86, mce: Rename incorrect macro name "CONFIG_X86_THRESHOLD" 2009-07-21 21:43:22 -07:00
k8.c
kdebugfs.c
kgdb.c
kprobes.c
kvm.c x86, kvm: Fix section mismatches in kvm.c 2009-07-03 14:34:22 +02:00
kvmclock.c
ldt.c
machine_kexec_32.c
machine_kexec_64.c
Makefile gcov: exclude code operating in userspace from profiling 2009-07-06 13:57:03 -07:00
mca_32.c
mfgpt_32.c x86: geode: Mark mfgpt irq IRQF_TIMER to prevent resume failure 2009-07-24 08:42:52 +02:00
microcode_amd.c
microcode_core.c Driver Core: misc: add nodename support for misc devices. 2009-06-15 21:30:25 -07:00
microcode_intel.c
mmconf-fam10h_64.c
module.c module: cleanup FIXME comments about trimming exception table entries. 2009-06-12 21:47:05 +09:30
mpparse.c
msr.c Driver Core: x86: add nodename for cpuid and msr drivers. 2009-06-15 21:30:25 -07:00
olpc.c
paravirt_patch_32.c
paravirt_patch_64.c
paravirt-spinlocks.c
paravirt.c
pci-calgary_64.c
pci-dma.c intel-iommu: Make iommu=pt work on i386 too 2009-07-01 18:56:16 +01:00
pci-gart_64.c Remove multiple KERN_ prefixes from printk formats 2009-07-08 10:30:03 -07:00
pci-nommu.c
pci-swiotlb.c Merge git://git.infradead.org/~dwmw2/iommu-2.6.31 2009-06-22 21:38:22 -07:00
pcspeaker.c
pmtimer_64.c
probe_roms_32.c
process_32.c
process_64.c
process.c clockevent: Prevent dead lock on clockevents_lock 2009-08-19 18:15:10 +02:00
ptrace.c
pvclock.c x86: Fix warning in pvclock.c 2009-07-14 16:25:05 +02:00
quirks.c
reboot_fixups_32.c
reboot.c x86: Add reboot quirk for every 5 series MacBook/Pro 2009-08-10 20:59:42 +02:00
relocate_kernel_32.S
relocate_kernel_64.S
rtc.c
scx200_32.c
setup_percpu.c percpu, sparc64: fix sparse possible cpu map handling 2009-08-14 13:20:53 +09:00
setup.c x86: Add quirk for Intel DG45ID board to avoid low memory corruption 2009-07-18 13:38:29 +02:00
signal.c Merge branch 'linus' into x86/mce3 2009-06-11 23:31:52 +02:00
smp.c Merge branch 'linus' into x86/mce3 2009-06-11 23:31:52 +02:00
smpboot.c x86: make zap_low_mapping could be used early 2009-06-12 13:50:24 +03:00
stacktrace.c x86: add save_stack_trace_bp() for tracing from a specific stack frame 2009-06-12 23:01:05 +02:00
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_32.S
trampoline_64.S
trampoline.c
traps.c x86: Add sysctl to allow panic on IOCK NMI error 2009-06-25 22:06:11 +02:00
tsc_sync.c
tsc.c x86: Fix serialization in pit_expect_msb() 2009-08-10 19:56:57 +02:00
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