summaryrefslogtreecommitdiffstats
path: root/Documentation/acpi
diff options
context:
space:
mode:
authorPatrick Rudolph <patrick.rudolph@9elements.com>2019-12-13 12:16:06 +0100
committerFelix Held <felix-coreboot@felixheld.de>2020-01-09 14:22:51 +0000
commitc83bab62b3657d97299c8368b6c610e4cbf994b6 (patch)
treef568d7f66b4a3491c6292040db29905111771de4 /Documentation/acpi
parent5c8ff794a8dcb0760c137d3b2dff1879a4a8dad6 (diff)
downloadcoreboot-c83bab62b3657d97299c8368b6c610e4cbf994b6.tar.gz
coreboot-c83bab62b3657d97299c8368b6c610e4cbf994b6.tar.bz2
coreboot-c83bab62b3657d97299c8368b6c610e4cbf994b6.zip
acpi: Be more ACPI compliant when generating _UID
* Add function to generate unique _UID using CRC32 * Add function to write the _UID based on a device's ACPI path ACPI devices that have the same _HID must use different _UID. Linux doesn't care about _UID if it's not used. Windows 10 verifies the ACPI code on boot and BSODs if two devices with the same _HID share the same _UID. Fixes BSOD seen on Windows 10. Change-Id: I47cd5396060d325f9ce338afced6af021e7ff2b4 Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/37695 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Philipp Deppenwiese <zaolin.daisuki@gmail.com>
Diffstat (limited to 'Documentation/acpi')
-rw-r--r--Documentation/acpi/index.md2
-rw-r--r--Documentation/acpi/uid.md14
2 files changed, 16 insertions, 0 deletions
diff --git a/Documentation/acpi/index.md b/Documentation/acpi/index.md
index 8add8db38708..c378722018f7 100644
--- a/Documentation/acpi/index.md
+++ b/Documentation/acpi/index.md
@@ -2,6 +2,8 @@
This section contains documentation about coreboot on ACPI.
+- [SSDT UID generation](uid.md)
+
## GPIO
- [GPIO toggling in ACPI AML](gpio.md)
diff --git a/Documentation/acpi/uid.md b/Documentation/acpi/uid.md
new file mode 100644
index 000000000000..0354bc52f0c4
--- /dev/null
+++ b/Documentation/acpi/uid.md
@@ -0,0 +1,14 @@
+# ACPI SSDT \_UID generation
+
+According to the ACPI spec:
+
+> The _UID must be unique across all devices with either a common _HID or _CID.
+
+
+When generating SSDTs in coreboot the independent drivers don't know
+which \_UID is already in use for a specific \_HID or \_CID. To generate
+unique \_UIDs the ACPI device's path is hashed and used as ID. As every ACPI
+device has a different path, the hash will be also different for every device.
+
+Windows 10 verifies all devices with the same \_HID or \_CID and makes
+sure that no \_UID is duplicated. If it is it'll BSOD.