The following 2 patches add support for the TPM's physial presence interface (PPI). The patches require the recently posted QEMU patch for support of PPI:
http://lists.nongnu.org/archive/html/qemu-devel/2018-01/msg01884.html
We assume a device at 0xffff 0000 - 0xffff 00ff where the OS can write a code into that SeaBIOS needs to find and act upon after a reboot.
I have previously tried to use a memory location allocated within the ACPI stream but that causes problems for finding the location after reboot since the ACPI is completely rewritten and all memory it covers erased, thus leaving no trace of the code the OS wrote into the memory. Per Kevin's suggestion we are now using a device at that well known address.
The patches are functional with Linux. One missing part is that the result code from the last TPM operation should be put into the shared memory block so that the user can see the code. However, currently the TPM error code from the responses are not passed back from the function calls, so in case of failure I am simply returning 0x0badc0de.
Stefan
Stefan Berger (2): tcgbios: Add physical presence interface support tcgbios: extend physical presence interface with more functions
src/post.c | 4 ++ src/std/tcg.h | 25 +++++++++++++ src/tcgbios.c | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- src/tcgbios.h | 3 ++ 4 files changed, 145 insertions(+), 2 deletions(-)