summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/soc/intel/common/block/acpi/pep.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/soc/intel/common/block/acpi/pep.c b/src/soc/intel/common/block/acpi/pep.c
index 8419a331f4..c7f1270b36 100644
--- a/src/soc/intel/common/block/acpi/pep.c
+++ b/src/soc/intel/common/block/acpi/pep.c
@@ -70,15 +70,19 @@ static void read_pmc_lpm_requirements(const struct soc_pmc_lpm *lpm,
}
/*
- * For now there is only one disabled non-existent device, because Windows
- * expects at least one device and crashes without it with a bluescreen
- * (`INTERNAL_POWER_ERROR`). Returning an empty package does not work.
+ * Windows expects a non-empty package for this subfunction, otherwise it
+ * results in a bluescreen (`INTERNAL_POWER_ERROR`); returning an empty package
+ * does not work. To workaround this, return a package describing a single
+ * device, one that is known to exist, i.e. ACPI_CPU_STRING. expects at least
+ * one device and crashes without it with a bluescreen.
*/
static void lpi_get_constraints(void *unused)
{
+ char path[16];
+
/*
* Return (Package() {
- * Package() { "\NULL", 0,
+ * Package() { "\_SB.CP00", 0,
* Package() { 0,
* Package() { 0xff, 0 }}}})
*/
@@ -87,7 +91,8 @@ static void lpi_get_constraints(void *unused)
{
acpigen_write_package(3);
{
- acpigen_emit_namestring("\\NULL");
+ snprintf(path, sizeof(path), CONFIG_ACPI_CPU_STRING, 0);
+ acpigen_emit_namestring(path);
acpigen_write_integer(0); /* device disabled */
acpigen_write_package(2);
{