From 3ccbaf36d4a13183d1c33e01f77168cb816572c2 Mon Sep 17 00:00:00 2001 From: Tianjia Zhang Date: Thu, 29 Oct 2020 21:49:29 +0800 Subject: [PATCH] efi/tpm: Add debug information for device protocol and eventlog Add a number of debug logs to the tpm module. The condition tag for opening debugging is "tpm". On TPM machines, this will bring great convenience to diagnosis and debugging. Signed-off-by: Tianjia Zhang Reviewed-by: Daniel Kiper --- grub-core/commands/efi/tpm.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/grub-core/commands/efi/tpm.c b/grub-core/commands/efi/tpm.c index b03b6b296..e667288e5 100644 --- a/grub-core/commands/efi/tpm.c +++ b/grub-core/commands/efi/tpm.c @@ -56,9 +56,13 @@ grub_tpm1_present (grub_efi_tpm_protocol_t *tpm) if (status != GRUB_EFI_SUCCESS || caps.TPMDeactivatedFlag || !caps.TPMPresentFlag) - return tpm1_present = 0; + tpm1_present = 0; + else + tpm1_present = 1; - return tpm1_present = 1; + grub_dprintf ("tpm", "tpm1%s present\n", tpm1_present ? "" : " NOT"); + + return (grub_efi_boolean_t) tpm1_present; } static grub_efi_boolean_t @@ -75,9 +79,13 @@ grub_tpm2_present (grub_efi_tpm2_protocol_t *tpm) status = efi_call_2 (tpm->get_capability, tpm, &caps); if (status != GRUB_EFI_SUCCESS || !caps.TPMPresentFlag) - return tpm2_present = 0; + tpm2_present = 0; + else + tpm2_present = 1; - return tpm2_present = 1; + grub_dprintf ("tpm", "tpm2%s present\n", tpm2_present ? "" : " NOT"); + + return (grub_efi_boolean_t) tpm2_present; } static grub_efi_boolean_t @@ -102,6 +110,7 @@ grub_tpm_handle_find (grub_efi_handle_t *tpm_handle, *tpm_handle = handles[0]; grub_tpm_version = 1; *protocol_version = 1; + grub_dprintf ("tpm", "TPM handle Found, version: 1\n"); return 1; } @@ -113,6 +122,7 @@ grub_tpm_handle_find (grub_efi_handle_t *tpm_handle, *tpm_handle = handles[0]; grub_tpm_version = 2; *protocol_version = 2; + grub_dprintf ("tpm", "TPM handle Found, version: 2\n"); return 1; } @@ -231,6 +241,9 @@ grub_tpm_measure (unsigned char *buf, grub_size_t size, grub_uint8_t pcr, if (!grub_tpm_handle_find (&tpm_handle, &protocol_version)) return 0; + grub_dprintf ("tpm", "log_event, pcr = %d, size = 0x%" PRIxGRUB_SIZE ", %s\n", + pcr, size, description); + if (protocol_version == 1) return grub_tpm1_log_event (tpm_handle, buf, size, pcr, description); else