coreboot-kgpe-d16/src/soc/intel/common
Michael Niewöhner 275adeaf0b soc/intel/common/acpi: work around Windows crash on S0ix-enabled boards
Windows does not comply with the Low Power Idle S0 specification and
crashes with an `INTERNAL_POWER_ERROR` bluescreen when function 1, does
not return at least one device constraint, even when function 1 is
announced as being not available by the enum function. Returning an
empty package does not work.

At least the following Windows versions were verified to be affected:
- Windows 8.1 x64, release 6.3.9600
- Windoes 10 x64, version 1809, build 17763.379
- Windows 10 x64, version 1903, build 18362.53
- Windows 10 x64, version 2004, build 19041.508
- Windows 10 x64, version 20H2 / 2009, build 19042.450

To make Windows work on S0ix-enabled boards, return a dummy constraint
package with a disabled dummy device.

Since the device constraints are only used for debugging low power
states in Linux and probably also in Windows, there shouldn't be any
negative effect to S0ix. Real device constraint entries could be added
at a later point, if needed.

Note: to fully prevent the BSOD mentioned above the LPIT table is
required on Windows, too. The patch for this is WIP, see CB:32350.
If you want to test this, you need to applie the whole ACPI patch
series including the hacky LPIT test implementation from CB:47242:
https://review.coreboot.org/q/topic:%22low_power_idle_fix%22

Test: no bluescreen anymore on Clevo L140CU on all Windows versions
listed above and S0ix gets detected in `powercfg -a`.

Change-Id: Icd08cbcb1dfcb8cbb23f4f4c902bf8c367c8e3ac
Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/47138
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Furquan Shaikh <furquan@google.com>
2020-11-20 00:10:44 +00:00
..
acpi soc/intel/common/acpi: correct indentation 2020-10-19 06:59:48 +00:00
basecode soc/intel/common: Keep common non-IP code block inside basecode 2020-09-21 16:16:46 +00:00
block soc/intel/common/acpi: work around Windows crash on S0ix-enabled boards 2020-11-20 00:10:44 +00:00
pch src/soc/intel: Drop unneeded empty lines 2020-09-21 16:15:25 +00:00
acpi.h treewide: replace GPLv2 long form headers with SPDX header 2020-05-06 22:20:57 +00:00
acpi_wake_source.c ACPI: Drop typedef global_nvs_t 2020-06-30 09:19:10 +00:00
fsp_reset.c soc/intel/common: Create common Intel FSP reset code block 2020-11-02 10:43:40 +00:00
hda_verb.c {soc/intel/common,sb/intel/lynxpoint}/hda_verb.c: Reduce differences 2020-08-17 06:59:24 +00:00
hda_verb.h soc/intel/common: Move common HDA registers to <device/azalia_device.h> 2020-08-17 06:44:04 +00:00
Kconfig.common soc/intel: Configure PAVP at compile-time 2020-10-12 23:11:04 +00:00
Makefile.inc soc/intel/common: Create common Intel FSP reset code block 2020-11-02 10:43:40 +00:00
mma.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
mma.h src: Remove unused 'include <stdint.h> 2020-07-14 16:11:10 +00:00
nhlt.c ACPI: Drop typedef global_nvs_t 2020-06-30 09:19:10 +00:00
reset.c Revert "soc/intel: Refactor do_global_reset() function" 2020-09-22 05:13:39 +00:00
reset.h Revert "soc/intel: Refactor do_global_reset() function" 2020-09-22 05:13:39 +00:00
smbios.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
smbios.h treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
tpm_tis.c treewide: Remove "this file is part of" lines 2020-05-11 17:11:40 +00:00
vbt.c src: Remove unused 'include <bootstate.h>' 2020-06-02 07:40:35 +00:00
vbt.h src: Remove unused 'include <types.h>' 2020-07-14 16:10:17 +00:00