2 * Copyright (C) 2017 Google
5 * Thiebaud Weksteen <tweek@google.com>
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version
10 * 2 of the License, or (at your option) any later version.
14 #include <linux/efi.h>
15 #include <linux/tpm_eventlog.h>
20 /* read binary bios log from EFI configuration table */
21 int tpm_read_log_efi(struct tpm_chip
*chip
)
24 struct linux_efi_tpm_eventlog
*log_tbl
;
25 struct tpm_bios_log
*log
;
29 if (!(chip
->flags
& TPM_CHIP_FLAG_TPM2
))
32 if (efi
.tpm_log
== EFI_INVALID_TABLE_ADDR
)
37 log_tbl
= memremap(efi
.tpm_log
, sizeof(*log_tbl
), MEMREMAP_WB
);
39 pr_err("Could not map UEFI TPM log table !\n");
43 log_size
= log_tbl
->size
;
46 log_tbl
= memremap(efi
.tpm_log
, sizeof(*log_tbl
) + log_size
,
49 pr_err("Could not map UEFI TPM log table payload!\n");
53 /* malloc EventLog space */
54 log
->bios_event_log
= kmemdup(log_tbl
->log
, log_size
, GFP_KERNEL
);
55 if (!log
->bios_event_log
)
57 log
->bios_event_log_end
= log
->bios_event_log
+ log_size
;
59 tpm_log_version
= log_tbl
->version
;
61 return tpm_log_version
;