u-boot-brain/arch/x86/include/asm
Bin Meng 6aef68dc36 x86: acpi: Switch to ACPI mode by ourselves instead of requested by OSPM
Per ACPI spec, during ACPI OS initialization, OSPM can determine
that the ACPI hardware registers are owned by SMI (by way of the
SCI_EN bit in the PM1_CNT register), in which case the ACPI OS
issues the ACPI_ENABLE command to the SMI_CMD port. The SCI_EN bit
effectively tracks the ownership of the ACPI hardware registers.

However since U-Boot does not support SMI, we report all 3 fields
in FADT (SMI_CMD, ACPI_ENABLE, ACPI_DISABLE) as zero, by following
the spec who says: these fields are reserved and must be zero on
system that does not support System Management mode.

U-Boot seems to behave in a correct way that the ACPI spec allows,
at least Linux does not complain, but apparently Windows does not
think so. During Windows bring up debugging, it is observed that
even these 3 fields are zero, Windows are still trying to issue SMI
with hardcoded SMI port address and commands, and expecting SCI_EN
to be changed by the firmware. Eventually Windows gives us a BSOD
(Blue Screen of Death) saying ACPI_BIOS_ERROR and refuses to start.

To fix this, turn on the SCI_EN bit by ourselves. With this patch,
now U-Boot can install and boot Windows 8.1/10 successfully with
the help of SeaBIOS using legacy interface (non-UEFI mode).

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2016-05-23 15:18:00 +08:00
..
acpi x86: acpi: Add some generic ASL libraries 2016-05-23 15:18:00 +08:00
arch-baytrail x86: baytrail: Add platform ASL files 2016-05-23 15:18:00 +08:00
arch-broadwell x86: broadwell: Add support for SDRAM setup 2016-03-17 10:27:26 +08:00
arch-coreboot x86: Move sysinfo related to sysinfo.h 2016-03-17 10:27:21 +08:00
arch-ivybridge x86: Move common PCH code into a common place 2016-03-17 10:27:27 +08:00
arch-qemu x86: Drop asm/arch/gpio.h 2016-02-05 12:47:21 +08:00
arch-quark x86: Drop asm/arch/gpio.h 2016-02-05 12:47:21 +08:00
arch-queensbay x86: Drop asm/arch/gpio.h 2016-02-05 12:47:21 +08:00
fsp x86: fsp: Set up init runtime buffer in update_fsp_configs() 2016-01-13 12:20:14 +08:00
video x86: Rename i386 to x86 2011-04-13 19:43:28 +10:00
acpi_table.h x86: acpi: Switch to ACPI mode by ourselves instead of requested by OSPM 2016-05-23 15:18:00 +08:00
atomic.h x86: Add atomic operations 2015-04-29 21:02:33 -06:00
bitops.h x86: Use the generic bitops headers 2015-11-05 10:52:01 -05:00
bootm.h x86: Move kernel boot function to arch/x86/lib/bootm.c 2014-10-28 20:43:58 -06:00
bootparam.h x86: Rename i386 to x86 2011-04-13 19:43:28 +10:00
byteorder.h x86: Rename i386 to x86 2011-04-13 19:43:28 +10:00
cache.h Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
config.h generic-board: select SYS_GENERIC_BOARD for some architectures 2015-03-28 09:03:08 -04:00
control_regs.h Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
coreboot_tables.h x86: Prepare configuration tables in dedicated high memory region 2016-05-23 15:18:00 +08:00
cpu_common.h x86: Move common CPU code to its own place 2016-03-17 10:27:24 +08:00
cpu_x86.h x86: dm: Clean up cpu drivers 2015-07-14 18:03:15 -06:00
cpu.h x86: Add support for running Intel reference code 2016-03-17 10:27:25 +08:00
e820.h x86: Move install_e820_map() out of zimage.c 2015-10-21 07:46:25 -06:00
elf.h x86: Add asm/elf.h for x86-specific ELF definitions 2015-08-05 08:44:05 -06:00
errno.h x86: Rename i386 to x86 2011-04-13 19:43:28 +10:00
global_data.h x86: Prepare configuration tables in dedicated high memory region 2016-05-23 15:18:00 +08:00
gpio.h x86: Drop all the old pin configuration code 2016-03-17 10:27:25 +08:00
i8254.h x86: Fix cosmetic issues in the i8254 and i8259 codes 2015-11-13 06:46:17 -08:00
i8259.h x86: Fix cosmetic issues in the i8254 and i8259 codes 2015-11-13 06:46:17 -08:00
ibmpc.h x86: superio: Add keyboard controller support to smsc_lpc47m driver 2015-08-26 07:54:12 -07:00
init_helpers.h x86: Remove calculate_relocation_address() 2015-08-26 07:54:07 -07:00
intel_regs.h x86: Move common CPU code to its own place 2016-03-17 10:27:24 +08:00
interrupt.h x86: Rename CONFIG_SYS_NUM_IRQS to SYS_NUM_IRQS 2015-11-13 06:46:16 -08:00
io.h x86: Allow I/O functions to use pointers 2016-03-17 10:27:25 +08:00
ioapic.h x86: Add a function to set the IOAPIC ID 2016-03-17 10:27:27 +08:00
ioctl.h x86: Rename i386 to x86 2011-04-13 19:43:28 +10:00
irq.h x86: irq: Enable SCI on IRQ9 2016-05-23 15:18:00 +08:00
ist.h Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
lapic.h x86: Remove inline for lapic access routines 2015-07-14 18:03:17 -06:00
linkage.h x86: move arch-specific asmlinkage to <asm/linkage.h> 2014-12-15 07:22:53 -07:00
lpc_common.h x86: Move common LPC code to its own place 2016-03-17 10:27:24 +08:00
me_common.h x86: Move Intel Management Engine code to a common place 2016-03-17 10:27:24 +08:00
microcode.h x86: Update microcode for secondary CPUs 2016-03-17 10:27:25 +08:00
mp.h x86: Move MP initialization codes into a common place 2015-07-14 18:03:16 -06:00
mpspec.h x86: mpspec: Allow platform to determine how PIRQ is connected to I/O APIC 2015-07-28 10:36:24 -06:00
mrc_common.h x86: Add common SDRAM-init code 2016-03-17 10:27:27 +08:00
mrccache.h x86: Use struct mrc_region to describe a mrc region 2015-10-21 07:46:27 -06:00
msr-index.h x86: Add some more common MSR indexes 2016-03-17 10:27:23 +08:00
msr.h x86: Add functions to set and clear bits on MSRs 2015-04-30 16:13:46 -06:00
mtrr.h x86: Change pci option rom area MTRR setting to cacheable 2015-07-28 10:36:22 -06:00
pch_common.h x86: Move common PCH code into a common place 2016-03-17 10:27:27 +08:00
pci.h x86: Drop pci_type1.c and DEFINE_PCI_DEVICE_TABLE 2016-02-05 12:47:24 +08:00
pirq_routing.h x86: irq: Move irq_router to a per driver priv 2016-02-05 12:47:22 +08:00
pnp_def.h x86: Add a simple superio driver for SMSC LPC47M 2014-12-13 22:32:05 -07:00
posix_types.h x86: Rename i386 to x86 2011-04-13 19:43:28 +10:00
post.h x86: Correct duplicate POST values 2016-03-17 10:27:23 +08:00
processor-flags.h x86: Rename i386 to x86 2011-04-13 19:43:28 +10:00
processor.h x86: Rename PORT_RESET to IO_PORT_RESET 2016-03-17 10:27:24 +08:00
ptrace.h x86: Display correct CS/EIP/EFLAGS when there is an error code 2015-07-28 10:36:21 -06:00
relocate.h x86: Drop unused copy_fdt_to_ram() 2015-08-05 08:42:40 -06:00
report_platform.h x86: Move Intel Management Engine code to a common place 2016-03-17 10:27:24 +08:00
sections.h Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
sfi.h x86: Add support for the Simple Firmware Interface (SFI) 2015-04-29 21:02:33 -06:00
sipi.h x86: Add comments to the SIPI vector 2016-03-17 10:27:23 +08:00
smbios.h x86: Add SMBIOS table support 2015-10-21 07:46:26 -06:00
speedstep.h x86: Add Intel speedstep and turbo mode code 2014-11-25 06:34:02 -07:00
string.h x86: Import glibc memcpy implementation 2012-01-02 03:58:46 +11:00
tables.h x86: Support booting SeaBIOS 2016-03-17 10:27:22 +08:00
turbo.h x86: Add a CPU driver for baytrail 2015-04-30 16:13:50 -06:00
types.h efi: Add 64-bit payload support 2015-08-05 08:44:07 -06:00
u-boot-x86.h x86: baytrail: Add option to disable the internal UART to setup_early_uart() 2016-01-28 13:53:30 +08:00
u-boot.h Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
unaligned.h x86: Rename i386 to x86 2011-04-13 19:43:28 +10:00
zimage.h x86: Move install_e820_map() out of zimage.c 2015-10-21 07:46:25 -06:00