u-boot-brain/arch
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
..
arc arc/cache: really do flush_dcache_all() even if IOC exists 2016-04-21 20:09:59 +03:00
arm Merge git://git.denx.de/u-boot-dm 2016-05-17 13:58:27 -04:00
avr32 Change my mailaddress 2016-05-02 18:37:09 -04:00
blackfin configs: Re-sync almost all of cmd/Kconfig 2016-04-25 15:09:40 -04:00
m68k Merge git://git.denx.de/u-boot-dm 2016-05-17 13:58:27 -04:00
microblaze microblaze: Remove !OF_CONTROL code for timer and interrupt 2016-04-04 20:28:38 +02:00
mips Fix various typos, scattered over the code. 2016-05-05 21:39:26 -04:00
nds32 Use correct spelling of "U-Boot" 2016-02-06 12:00:59 +01:00
nios2 dm: Use uclass_first_device_err() where it is useful 2016-03-14 15:34:50 -06:00
openrisc openrisc: Fix build errors 2016-01-25 10:40:01 -05:00
powerpc dm: fsl_i2c: Enable DM for FSL I2C 2016-05-17 08:28:55 +02:00
sandbox sandbox: Add string and 16-bit I/O functions 2016-05-17 09:54:43 -06:00
sh Add more SPDX-License-Identifier tags 2016-01-19 08:31:21 -05:00
sparc Fix spelling of "transferred". 2016-03-22 12:16:16 -04:00
x86 x86: acpi: Switch to ACPI mode by ourselves instead of requested by OSPM 2016-05-23 15:18:00 +08:00
.gitignore .gitignore: drop include/asm/proc from ignore pattern 2014-06-19 11:18:54 -04:00
Kconfig MIPS: add initial infrastructure for device-tree files 2016-01-16 21:06:45 +01:00