As a hack, use CD_SKIPHIBERNATE. For 2.0, our TPM lifecycle management
authorderaadt <deraadt@openbsd.org>
Mon, 4 Apr 2022 15:46:45 +0000 (15:46 +0000)
committerderaadt <deraadt@openbsd.org>
Mon, 4 Apr 2022 15:46:45 +0000 (15:46 +0000)
is improper, and some chips are more sensitive to this than others.  In an
unhibernate situation, /bsd.booted will 'suspend' the TPM, then jump directly
into unhib /bsd, which 'resumes' it.  This is wrong because the lifecycle is
supposed to be more like suspend->BIOS->resume.  This is a hack until we figure
out how to fix the lifecycle.
from claudio, ok dv

sys/dev/acpi/tpm.c

index 627cc0b..c0e6a02 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: tpm.c,v 1.15 2021/12/21 20:53:46 kettenis Exp $ */
+/* $OpenBSD: tpm.c,v 1.16 2022/04/04 15:46:45 deraadt Exp $ */
 
 /*
  * Minimal interface to Trusted Platform Module chips implementing the
@@ -233,7 +233,7 @@ struct cfattach tpm_ca = {
 };
 
 struct cfdriver tpm_cd = {
-       NULL, "tpm", DV_DULL
+       NULL, "tpm", DV_DULL, CD_SKIPHIBERNATE  /* XXX */
 };
 
 const char *tpm_hids[] = {