Felix Held submitted this change.

View Change

Approvals: build bot (Jenkins): Verified Philipp Deppenwiese: Looks good to me, approved
superio/common/ssdt: Make disabled PNP devices ACPI compliant

Always write a _HID, even for disabled PNP devices.

Fixes a BSOD on Windows 10.

Change-Id: I419a08bd6a3570fb4e1ae31bef4f9ccd6836fe1b
Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/37692
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Philipp Deppenwiese <zaolin.daisuki@gmail.com>
---
M src/superio/common/ssdt.c
1 file changed, 22 insertions(+), 22 deletions(-)

diff --git a/src/superio/common/ssdt.c b/src/superio/common/ssdt.c
index bc5d394..41cafdf 100644
--- a/src/superio/common/ssdt.c
+++ b/src/superio/common/ssdt.c
@@ -219,28 +219,11 @@
}
acpigen_pop_len(); /* Method */

- if (!dev->enabled) {
- acpigen_pop_len(); /* Device */
- acpigen_pop_len(); /* Scope */
- return;
- }
-
- if (has_resources(dev)) {
- /* Resources - _CRS */
- acpigen_write_name("_CRS");
- acpigen_write_resourcetemplate_header();
- ldn_gen_resources(dev);
- acpigen_write_resourcetemplate_footer();
-
- /* Resources - _PRS */
- acpigen_write_name("_PRS");
- acpigen_write_resourcetemplate_header();
- ldn_gen_resources(dev);
- acpigen_write_resourcetemplate_footer();
-
- /* Resources base and size for 3rd party ACPI code */
- ldn_gen_resources_use(dev);
- }
+ /*
+ * The ACPI6.2 spec Chapter 6.1.5 requires to set a _HID if no _ADR
+ * is present. Tests on Windows 10 showed that this is also true for
+ * disabled (_STA = 0) devices, otherwise it BSODs.
+ */

hid = acpi_device_hid(dev);
if (!hid) {
@@ -266,6 +249,23 @@
}
acpigen_pop_len(); /* Method */

+ if (dev->enabled && has_resources(dev)) {
+ /* Resources - _CRS */
+ acpigen_write_name("_CRS");
+ acpigen_write_resourcetemplate_header();
+ ldn_gen_resources(dev);
+ acpigen_write_resourcetemplate_footer();
+
+ /* Resources - _PRS */
+ acpigen_write_name("_PRS");
+ acpigen_write_resourcetemplate_header();
+ ldn_gen_resources(dev);
+ acpigen_write_resourcetemplate_footer();
+
+ /* Resources base and size for 3rd party ACPI code */
+ ldn_gen_resources_use(dev);
+ }
+
acpigen_pop_len(); /* Device */
acpigen_pop_len(); /* Scope */
}

To view, visit change 37692. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: I419a08bd6a3570fb4e1ae31bef4f9ccd6836fe1b
Gerrit-Change-Number: 37692
Gerrit-PatchSet: 8
Gerrit-Owner: Patrick Rudolph <patrick.rudolph@9elements.com>
Gerrit-Reviewer: Christian Walter <christian.walter@9elements.com>
Gerrit-Reviewer: Felix Held <felix-coreboot@felixheld.de>
Gerrit-Reviewer: Guido Beyer @ Prodrive Technologies <guido.beyer@prodrive-technologies.com>
Gerrit-Reviewer: Justin van Son <justin.van.son@prodrive-technologies.com>
Gerrit-Reviewer: Patrick Rudolph <patrick.rudolph@9elements.com>
Gerrit-Reviewer: Paul Menzel <paulepanter@users.sourceforge.net>
Gerrit-Reviewer: Philipp Deppenwiese <zaolin.daisuki@gmail.com>
Gerrit-Reviewer: Stef van Os <stef.van.os@prodrive-technologies.com>
Gerrit-Reviewer: build bot (Jenkins) <no-reply@coreboot.org>
Gerrit-Reviewer: wouter.eckhardt@prodrive-technologies.com
Gerrit-CC: Matt DeVillier <matt.devillier@gmail.com>
Gerrit-CC: Patrick Rudolph <siro@das-labor.org>
Gerrit-MessageType: merged