[U-Boot] [PATCH v2 09/18] x86: acpi: Switch to ACPI mode by ourselves instead of requested by OSPM

Simon Glass sjg at chromium.org
Thu May 19 06:00:48 CEST 2016


On 11 May 2016 at 08:45, Bin Meng <bmeng.cn at gmail.com> wrote:
> 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 at gmail.com>
> ---
>
> Changes in v2: None
>
>  arch/x86/include/asm/acpi_table.h |  3 +++
>  arch/x86/lib/acpi_table.c         | 26 ++++++++++++++++++++++++++
>  2 files changed, 29 insertions(+)

Reviewed-by: Simon Glass <sjg at chromium.org>


More information about the U-Boot mailing list