CorebootModulePkg/CbSupportDxe: Remove SCI_EN setting
authorBenjamin You <benjamin.you@intel.com>
Mon, 4 Jun 2018 03:23:21 +0000 (11:23 +0800)
committerBenjamin You <benjamin.you@intel.com>
Mon, 11 Jun 2018 08:16:30 +0000 (16:16 +0800)
commit271d8cd7df0c346f19803938d98fe7cbb7b63be4
tree5e0788670ed300ab91cc5c9be99de711b11ebb4f
parentf75c7478280b96d191e86856c0b1c49ff711c284
CorebootModulePkg/CbSupportDxe: Remove SCI_EN setting

Current implemenation sets PM1_CNT.SCI_EN bit at ReadyToBoot event.
However, this should not be done because this causes OS to skip triggering
FADT.SMI_CMD, which leads to the functions implemented in the SMI
handler being omitted.

This issue was identified by Matt Delco <delco@google.com>.

The fix does the following:
- The SCI_EN bit setting is removed from CbSupportDxe driver.
- Some additional checks are added in CbParseFadtInfo() in CbParseLib.c to
  output some error message and ASSERT (FALSE) if ALL of the following
  conditions are met:
  1) HARDWARE_REDUCED_ACPI is not set;
  2) SMI_CMD field is zero;
  3) SCI_EN bit is zero;
  which indicates the ACPI enabling status is inconsistent: SCI is not
  enabled but the ACPI table does not provide a means to enable it through
  FADT->SMI_CMD. This may cause issues in OS.

Cc: Maurice Ma <maurice.ma@intel.com>
Cc: Prince Agyeman <prince.agyeman@intel.com>
Cc: Matt Delco <delco@google.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Benjamin You <benjamin.you@intel.com>
Reviewed-by: Maurice Ma <maurice.ma@intel.com>
Reviewed-by: Matt Delco <delco@google.com>
CorebootModulePkg/CbSupportDxe/CbSupportDxe.c
CorebootModulePkg/CbSupportDxe/CbSupportDxe.inf
CorebootModulePkg/Library/CbParseLib/CbParseLib.c
CorebootModulePkg/Library/CbParseLib/CbParseLib.inf