]> git.proxmox.com Git - mirror_qemu.git/commit - stubs/tpm.c
acpi: build TPM Physical Presence interface
authorStefan Berger <stefanb@linux.vnet.ibm.com>
Mon, 14 Jan 2019 22:27:52 +0000 (02:27 +0400)
committerMichael S. Tsirkin <mst@redhat.com>
Fri, 18 Jan 2019 02:10:57 +0000 (21:10 -0500)
commitac6dd31e3fe7e19be6fcaa7bf2396780b355137d
tree5d8d524e4edbc1811189892f52b6137cdd8e8cbd
parent0fe246690315335a40a132f05cb6fdc7bfb9adca
acpi: build TPM Physical Presence interface

The TPM Physical Presence interface consists of an ACPI part, a shared
memory part, and code in the firmware. Users can send messages to the
firmware by writing a code into the shared memory through invoking the
ACPI code. When a reboot happens, the firmware looks for the code and
acts on it by sending sequences of commands to the TPM.

This patch adds the ACPI code. It is similar to the one in EDK2 but doesn't
assume that SMIs are necessary to use. It uses a similar datastructure for
the shared memory as EDK2 does so that EDK2 and SeaBIOS could both make use
of it. I extended the shared memory data structure with an array of 256
bytes, one for each code that could be implemented. The array contains
flags describing the individual codes. This decouples the ACPI implementation
from the firmware implementation.

The underlying TCG specification is accessible from the following page.

https://trustedcomputinggroup.org/tcg-physical-presence-interface-specification/

This patch implements version 1.30.

Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
[ Marc-AndrĂ© - ACPI code improvements and windows fixes ]
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Stefan Berger <stefanb@linux.ibm.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
docs/specs/tpm.txt
hw/acpi/Makefile.objs
hw/acpi/tpm.c [new file with mode: 0644]
hw/i386/acpi-build.c
include/hw/acpi/tpm.h
stubs/tpm.c