u-boot/arch/x86/lib
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
..
efi x86: Add helper code for running from EFI 2015-08-05 08:44:08 -06:00
fsp x86: Update microcode for secondary CPUs 2016-03-17 10:27:25 +08:00
acpi_table.c x86: acpi: Switch to ACPI mode by ourselves instead of requested by OSPM 2016-05-23 15:18:00 +08:00
asm-offsets.c x86: Add support for passing tables into U-Boot 2015-08-05 08:44:07 -06:00
bios.c dm: x86: pci: Adjust bios_run_on_x86() to use the DM PCI API 2016-01-12 10:19:09 -07:00
bios.h x86: move arch-specific asmlinkage to <asm/linkage.h> 2014-12-15 07:22:53 -07:00
bios_asm.S x86: bios: Synchronize stack between real and protected mode 2015-07-14 18:03:18 -06:00
bios_interrupts.c dm: Convert bios_interrupts to use DM PCI API 2016-01-12 10:19:09 -07:00
bootm.c x86: Call board_final_cleanup() in last_stage_init() 2016-05-23 15:18:00 +08:00
cmd_boot.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
cmd_mtrr.c x86: cmd_mtrr: Improve MTRR list information 2015-07-14 18:03:18 -06:00
coreboot_table.c x86: Prepare configuration tables in dedicated high memory region 2016-05-23 15:18:00 +08:00
e820.c x86: Move install_e820_map() out of zimage.c 2015-10-21 07:46:25 -06:00
gcc.c Add more SPDX-License-Identifier tags 2016-01-19 08:31:21 -05:00
i8254.c x86: Rename pcat_ to i8254 and i8259 accordingly 2015-11-13 06:46:18 -08:00
i8259.c x86: Rename pcat_ to i8254 and i8259 accordingly 2015-11-13 06:46:18 -08:00
init_helpers.c x86: Remove calculate_relocation_address() 2015-08-26 07:54:07 -07:00
interrupts.c x86: Rename CONFIG_SYS_NUM_IRQS to SYS_NUM_IRQS 2015-11-13 06:46:16 -08:00
lpc-uclass.c x86: Add some missing global_data declarations in files that use gd 2015-08-05 08:42:41 -06:00
Makefile x86: Compile coreboot_table.c only for SeaBIOS 2016-05-23 15:18:00 +08:00
mpspec.c dm: Use uclass_first_device_err() where it is useful 2016-03-14 15:34:50 -06:00
mrccache.c x86: Don't show an error when the MRC cache is up to date 2016-01-24 12:08:17 +08:00
northbridge-uclass.c dm: x86: Add a northbridge uclass 2016-01-24 12:08:16 +08:00
physmem.c x86: Move paging functions into cpu.c 2014-10-28 20:42:51 -06:00
pinctrl_ich6.c x86: Add an ICH6 pin configuration driver 2016-03-17 10:27:25 +08:00
pirq_routing.c x86: Fix up PIRQ routing table checksum earlier 2016-05-23 15:18:00 +08:00
ramtest.c x86: ivybridge: Implement SDRAM init 2014-11-21 07:34:15 +01:00
relocate.c x86: Allow relocation code to build without text base 2015-08-05 08:44:06 -06:00
sfi.c x86: Add support for the Simple Firmware Interface (SFI) 2015-04-29 21:02:33 -06:00
smbios.c x86: Add SMBIOS table support 2015-10-21 07:46:26 -06:00
string.c Replace <compiler.h> with <linux/compiler.h> 2014-12-08 09:35:46 -05:00
tables.c x86: Use high_table_malloc() for tables passing to SeaBIOS 2016-05-23 15:18:00 +08:00
zimage.c x86: Move install_e820_map() out of zimage.c 2015-10-21 07:46:25 -06:00