android_kernel_xiaomi_sm8350/arch/i386/kernel
Zwane Mwaikambo 77f72b192f [PATCH] i386: LVT entries remaining unmasked on reboot
Excerpt from bugzilla entry

http://bugzilla.kernel.org/show_bug.cgi?id=5518

"i386 version of Reboot-through-BIOS is unsafe: it forgets to mask APIC LVT
interrupts before jumping to a BIOS entry point.  As a result, BIOS ends up
bombarded with interrupts early on boot.  The BIOS does not expect it since
following a "normal" hardware cpu reset, all APIC LVT registers have the
Mask bit (16) set and can't generate interrupts.

For example, the version of Phoenix BIOS used by VMware enables interrupts
for the first time before masking/clearing APIC LVT.  The APIC Timer LVT
register is still set up for a timer interrupt delivery with a high vector
from the previous Linux incarnation (0xef in our case).  The BIOS has not
fully initialized its IDT at this point and the real mode gate for 0xef
remains all zeros.  Vector 0xef dispatches BIOS to address 0:0, BIOS takes
a #GP and eventually hangs.

machine_shutdown() does attempt to shut down APIC before jumping to BIOS,
but it is ineffective"

Signed-off-by: Zwane Mwaikambo <zwane@arm.linux.org.uk>
Cc: "Seth, Rohit" <rohit.seth@intel.com>
Cc: Zachary Amsden <zach@vmware.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-11-07 07:53:28 -08:00
..
acpi [PATCH] i386: include linux/irq.h rather than asm/hw_irq.h 2005-09-30 10:58:37 -07:00
cpu [PATCH] arch/i386: Use ARRAY_SIZE macro 2005-11-07 07:53:28 -08:00
timers [PATCH] i386 and x86_64 TSC set_cyc2ns_scale imprecision 2005-10-30 17:37:11 -08:00
apic.c [PATCH] i386: LVT entries remaining unmasked on reboot 2005-11-07 07:53:28 -08:00
apm.c [PATCH] arch/i386: Use ARRAY_SIZE macro 2005-11-07 07:53:28 -08:00
asm-offsets.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
bootflag.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cpuid.c [PATCH] Driver Core: fix up all callers of class_device_create() 2005-10-28 09:52:52 -07:00
crash.c [PATCH] i386 kexec-on-panic: Don't shutdown the apics. 2005-10-30 17:37:13 -08:00
dmi_scan.c [PATCH] fix: dmi_check_system 2005-09-07 16:57:44 -07:00
doublefault.c [PATCH] i386: inline assembler: cleanup and encapsulate descriptor and task register management 2005-09-05 00:06:11 -07:00
early_printk.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
efi_stub.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
efi.c [PATCH] i386: inline assembler: cleanup and encapsulate descriptor and task register management 2005-09-05 00:06:11 -07:00
entry.S [PATCH] i386: Don't miss pending signals returning to user mode after signal processing 2005-09-12 07:52:16 -07:00
head.S kbuild: full dependency check on asm-offsets.h 2005-09-09 19:28:28 +02:00
i386_ksyms.c [PATCH] Remove i386_ksyms.c, almost. 2005-06-23 09:45:11 -07:00
i387.c x86: make restore_fpu() use alternative assembler instructions 2005-07-22 16:06:16 -04:00
i8237.c [PATCH] ISA DMA suspend for i386 2005-09-05 00:06:14 -07:00
i8259.c Revert "i386: move apic init in init_IRQs" 2005-10-31 19:16:17 -08:00
init_task.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
io_apic.c Revert "i386: move apic init in init_IRQs" 2005-10-31 19:16:17 -08:00
ioport.c [PATCH] reset tss->io_bitmap_owner in sys_ioperm() 2005-11-05 16:31:36 -08:00
irq.c [PATCH] x86: hot plug CPU to support physical add of new processors 2005-10-30 17:37:12 -08:00
kprobes.c [PATCH] kprobes: fix bug when probed on task and isr functions 2005-09-07 16:58:01 -07:00
ldt.c [PATCH] x86: introduce a write acessor for updating the current LDT 2005-09-05 00:06:13 -07:00
machine_kexec.c [PATCH] x86: more asm cleanups 2005-09-05 00:06:12 -07:00
Makefile Merge linux-2.6 with linux-acpi-2.6 2005-09-08 01:45:47 -04:00
mca.c [PATCH] arch/i386: Use ARRAY_SIZE macro 2005-11-07 07:53:28 -08:00
microcode.c [PATCH] i386: cleanup serialize msr 2005-09-05 00:06:11 -07:00
module.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mpparse.c [PATCH] i386 mpparse: Only ignore lapic information we can't store 2005-10-30 17:37:13 -08:00
msr.c [PATCH] Driver Core: fix up all callers of class_device_create() 2005-10-28 09:52:52 -07:00
nmi.c [PATCH] i386 nmi_watchdog: Merge check_nmi_watchdog fixes from x86_64 2005-10-30 17:37:13 -08:00
numaq.c [PATCH] re-disable TSC on NUMAQ 2005-07-28 21:46:05 -07:00
pci-dma.c [PATCH] gfp flags annotations - part 1 2005-10-08 15:00:57 -07:00
process.c [PATCH] useless includes of linux/irq.h in arch/i386 2005-09-26 18:29:50 -07:00
ptrace.c [PATCH] unify sys_ptrace prototype 2005-10-30 17:37:20 -08:00
quirks.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
reboot_fixups.c [PATCH] arch/i386: Use ARRAY_SIZE macro 2005-11-07 07:53:28 -08:00
reboot.c [PATCH] arch/i386: Replace custom macro with isdigit() 2005-09-13 08:22:33 -07:00
relocate_kernel.S [PATCH] kexec: x86 kexec core 2005-06-25 16:24:49 -07:00
scx200.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
semaphore.c [PATCH] unify x86/x86-64 semaphore code 2005-09-05 00:06:14 -07:00
setup.c [PATCH] fixup bogus e820 entry with mem= 2005-10-30 17:37:12 -08:00
sigframe.h [PATCH] __user annotations for pointers in i386 sigframe 2005-09-09 10:31:59 -07:00
signal.c [PATCH] i386: fix stack alignment for signal handlers 2005-10-10 08:45:06 -07:00
smp.c [PATCH] useless includes of linux/irq.h in arch/i386 2005-09-26 18:29:50 -07:00
smpboot.c [PATCH] arch/i386: Use ARRAY_SIZE macro 2005-11-07 07:53:28 -08:00
srat.c [PATCH] i386: srat on non-acpi hw fix 2005-10-30 17:37:13 -08:00
summit.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sys_i386.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
syscall_table.S [PATCH] remove sys_set_zone_reclaim() 2005-08-01 10:03:56 -07:00
sysenter.c [PATCH] sep initializing rework 2005-06-25 16:24:29 -07:00
time_hpet.c [PATCH] hpet-RTC: cache the comparator register 2005-10-30 17:37:30 -08:00
time.c Revert "i386: move apic init in init_IRQs" 2005-10-31 19:16:17 -08:00
trampoline.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
traps.c [PATCH] x86: initialise tss->io_bitmap_owner to something 2005-10-30 17:37:11 -08:00
vm86.c [PATCH] mm: i386 sh sh64 ready for split ptlock 2005-10-29 21:40:41 -07:00
vmlinux.lds.S [PATCH] i386 / uml: add dwarf sections to static link script 2005-09-10 12:00:17 -07:00
vsyscall-int80.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
vsyscall-note.S [PATCH] i386 vDSO: add PT_NOTE segment 2005-04-16 15:24:48 -07:00
vsyscall-sigreturn.S kbuild: full dependency check on asm-offsets.h 2005-09-09 19:28:28 +02:00
vsyscall-sysenter.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
vsyscall.lds.S kbuild: full dependency check on asm-offsets.h 2005-09-09 19:28:28 +02:00
vsyscall.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00