c83bab62b3
* 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>
14 lines
566 B
Markdown
14 lines
566 B
Markdown
# 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.
|