tpm(4): add support for tpm2 CRB interface
authordv <dv@openbsd.org>
Sat, 23 Oct 2021 16:39:03 +0000 (16:39 +0000)
committerdv <dv@openbsd.org>
Sat, 23 Oct 2021 16:39:03 +0000 (16:39 +0000)
commit306068a2945bf8b960d17abd9ecf9c7681ad638e
tree1e21ac00535cae65a9820716571b30fe19e6531e
parent8095b13035d3c80c255344b9166e7f4ff88e61e3
tpm(4): add support for tpm2 CRB interface

Some modern tpm2 devices require or prefer drivers communicate via
the CRB interface and not the TIS/fifo interface. This change adds
basic support for detecting CRB start mode and using CRB to issue
commands required for proper S4 hibernation. As a result, this also
defines a new struct definition for the TPM2 acpi table required
for start mode detection.

This fixes recent S4 regressions on the Surface Go 2 caused by a
change in firmware from Microsoft.

Other CRB start methods may need implementing in the future to
support additional hardware.

tested by deraadt@ and many others, ok kettenis@
sys/dev/acpi/acpireg.h
sys/dev/acpi/tpm.c