memblock_reserve() expects a physical address, but the address being passed for the TPM final events log is what was returned from early_memremap(). This results in something like the following: [ 0.000000] memblock_reserve: [0xffffffffff2c0000-0xffffffffff2c00e4] efi_tpm_eventlog_init+0x324/0x370 Pass the address from efi like what is done for the TPM events log.
Unified · Split
| @@ -97,7 +97,7 @@ int __init efi_tpm_eventlog_init(void) · 96 unmodified lines | |||
| 97 | goto out_calc; | 97 | goto out_calc; |
| 98 | } | 98 | } |
| 99 | 99 | ||
| 100 | memblock_reserve((unsigned long)final_tbl, | 100 | memblock_reserve(efi.tpm_final_log, |
| 101 | tbl_size + sizeof(*final_tbl)); | 101 | tbl_size + sizeof(*final_tbl)); |
| 102 | efi_tpm_final_log_size = tbl_size; | 102 | efi_tpm_final_log_size = tbl_size; |
| 103 | 103 | ||