docs/specs/tpm: document PPI support on ARM64 virt

Document that tpm-tis-device on the ARM virt machine supports PPI
with dynamically allocated MMIO via the platform bus, unlike x86
where PPI is at the fixed address 0xFED45000.

Also add hw/arm/virt-acpi-build.c and hw/acpi/tpm.c to the list
of files related to TPM ACPI tables.

Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>
Signed-off-by: Mohammadfaiz Bawa <mbawa@redhat.com>
Message-ID: <20260327173209.148180-2-mbawa@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
This commit is contained in:
Mohammadfaiz Bawa
2026-03-27 23:02:07 +05:30
committed by Philippe Mathieu-Daudé
parent 150072398f
commit ffdd1949a1

View File

@@ -187,8 +187,32 @@ The location of the table is given by the fw_cfg ``tpmppi_address``
field. The PPI memory region size is 0x400 (``TPM_PPI_ADDR_SIZE``) to
leave enough room for future updates.
PPI on ARM64 virt
-----------------
The ARM virt machine supports PPI for ``tpm-tis-device`` as defined
in the `PPI specification`_.
Unlike the x86 TIS device where the PPI memory region is mapped at
the fixed address ``0xFED45000`` (within the TIS MMIO range), the
ARM64 sysbus device registers PPI memory as a second MMIO region
on the platform bus. The platform bus assigns the guest physical
address dynamically at device plug time. The ACPI ``_DSM`` method
and PPI operation regions reference this dynamically resolved
address.
PPI is controlled by the ``ppi`` property (default ``on``)::
-device tpm-tis-device,tpmdev=tpm0,ppi=on
Without PPI, guest operating systems such as Windows 11
ARM64 will log errors when attempting to query TPM Physical
Presence capabilities via the ACPI ``_DSM`` method.
QEMU files related to TPM ACPI tables:
- ``hw/i386/acpi-build.c``
- ``hw/arm/virt-acpi-build.c``
- ``hw/acpi/tpm.c``
- ``include/hw/acpi/tpm.h``
TPM backend devices