docs/specs/tpm.rst | 24 ++++++++++++++++++++++++ hw/acpi/tpm.c | 8 ++++---- hw/arm/virt-acpi-build.c | 9 ++++++++- hw/tpm/tpm_tis_isa.c | 2 +- hw/tpm/tpm_tis_sysbus.c | 11 +++++++++++ include/hw/acpi/tpm.h | 3 ++- 6 files changed, 50 insertions(+), 7 deletions(-)
The ARM virt machine's tpm-tis-device lacks Physical Presence Interface
(PPI) support - no _DSM, _STA, or PPI operation regions in the ACPI
namespace. This causes Windows 11 ARM64 guests to log Event ID 15
(tpm.sys) errors per boot.
This series documents the change, refactors tpm_build_ppi_acpi() to
accept a dynamic PPI base address, then wires up PPI MMIO and ACPI
on tpm-tis-sysbus via the platform bus.
Tested: aarch64 KVM, upstream QEMU, Win11 ARM64 25H2, swtpm.
Event ID 15 eliminated.
Changes in v2:
- Moved tpm.rst documentation hunk from patch 3 into patch 1 (Stefan)
- Added Reviewed-by tags
Signed-off-by: Mohammadfaiz Bawa <mbawa@redhat.com>
---
Mohammadfaiz Bawa (3):
docs/specs/tpm: document PPI support on ARM64 virt
hw/acpi/tpm: parameterize PPI base address in tpm_build_ppi_acpi
hw/tpm: add PPI support to tpm-tis-device for ARM64 virt
docs/specs/tpm.rst | 24 ++++++++++++++++++++++++
hw/acpi/tpm.c | 8 ++++----
hw/arm/virt-acpi-build.c | 9 ++++++++-
hw/tpm/tpm_tis_isa.c | 2 +-
hw/tpm/tpm_tis_sysbus.c | 11 +++++++++++
include/hw/acpi/tpm.h | 3 ++-
6 files changed, 50 insertions(+), 7 deletions(-)
---
base-commit: 8e711856d7639cbffa51405f2cc2366e3d9e3a23
change-id: 20260324-tpm-tis-sysbus-ppi-ef31a7d71753
Best regards,
--
Mohammadfaiz Bawa <mbawa@redhat.com>
On 3/27/26 7:48 AM, Mohammadfaiz Bawa wrote:
> The ARM virt machine's tpm-tis-device lacks Physical Presence Interface
> (PPI) support - no _DSM, _STA, or PPI operation regions in the ACPI
> namespace. This causes Windows 11 ARM64 guests to log Event ID 15
> (tpm.sys) errors per boot.
>
> This series documents the change, refactors tpm_build_ppi_acpi() to
> accept a dynamic PPI base address, then wires up PPI MMIO and ACPI
> on tpm-tis-sysbus via the platform bus.
>
> Tested: aarch64 KVM, upstream QEMU, Win11 ARM64 25H2, swtpm.
> Event ID 15 eliminated.
>
> Changes in v2:
> - Moved tpm.rst documentation hunk from patch 3 into patch 1 (Stefan)
> - Added Reviewed-by tags
>
> Signed-off-by: Mohammadfaiz Bawa <mbawa@redhat.com>
> ---
> Mohammadfaiz Bawa (3):
> docs/specs/tpm: document PPI support on ARM64 virt
> hw/acpi/tpm: parameterize PPI base address in tpm_build_ppi_acpi
> hw/tpm: add PPI support to tpm-tis-device for ARM64 virt
>
> docs/specs/tpm.rst | 24 ++++++++++++++++++++++++
> hw/acpi/tpm.c | 8 ++++----
> hw/arm/virt-acpi-build.c | 9 ++++++++-
> hw/tpm/tpm_tis_isa.c | 2 +-
> hw/tpm/tpm_tis_sysbus.c | 11 +++++++++++
> include/hw/acpi/tpm.h | 3 ++-
> 6 files changed, 50 insertions(+), 7 deletions(-)
> ---
> base-commit: 8e711856d7639cbffa51405f2cc2366e3d9e3a23
> change-id: 20260324-tpm-tis-sysbus-ppi-ef31a7d71753
Does this branch contain this series here:
https://lore.kernel.org/qemu-devel/20260317120241.16320-1-philmd@linaro.org/
A patch in this series changed TPMState to not have ppi_enabled anymore:
diff --git a/hw/tpm/tpm_tis.h b/hw/tpm/tpm_tis.h
index 184632ff66..1531620bf9 100644
--- a/hw/tpm/tpm_tis.h
+++ b/hw/tpm/tpm_tis.h
@@ -75,7 +75,6 @@ typedef struct TPMState {
size_t be_buffer_size;
- bool ppi_enabled;
TPMPPI ppi;
} TPMState;
>
> Best regards,
On Fri, Mar 27, 2026 at 9:15 PM Stefan Berger <stefanb@linux.ibm.com> wrote:
>
>
>
> On 3/27/26 7:48 AM, Mohammadfaiz Bawa wrote:
> > The ARM virt machine's tpm-tis-device lacks Physical Presence Interface
> > (PPI) support - no _DSM, _STA, or PPI operation regions in the ACPI
> > namespace. This causes Windows 11 ARM64 guests to log Event ID 15
> > (tpm.sys) errors per boot.
> >
> > This series documents the change, refactors tpm_build_ppi_acpi() to
> > accept a dynamic PPI base address, then wires up PPI MMIO and ACPI
> > on tpm-tis-sysbus via the platform bus.
> >
> > Tested: aarch64 KVM, upstream QEMU, Win11 ARM64 25H2, swtpm.
> > Event ID 15 eliminated.
> >
> > Changes in v2:
> > - Moved tpm.rst documentation hunk from patch 3 into patch 1 (Stefan)
> > - Added Reviewed-by tags
> >
> > Signed-off-by: Mohammadfaiz Bawa <mbawa@redhat.com>
> > ---
> > Mohammadfaiz Bawa (3):
> > docs/specs/tpm: document PPI support on ARM64 virt
> > hw/acpi/tpm: parameterize PPI base address in tpm_build_ppi_acpi
> > hw/tpm: add PPI support to tpm-tis-device for ARM64 virt
> >
> > docs/specs/tpm.rst | 24 ++++++++++++++++++++++++
> > hw/acpi/tpm.c | 8 ++++----
> > hw/arm/virt-acpi-build.c | 9 ++++++++-
> > hw/tpm/tpm_tis_isa.c | 2 +-
> > hw/tpm/tpm_tis_sysbus.c | 11 +++++++++++
> > include/hw/acpi/tpm.h | 3 ++-
> > 6 files changed, 50 insertions(+), 7 deletions(-)
> > ---
> > base-commit: 8e711856d7639cbffa51405f2cc2366e3d9e3a23
> > change-id: 20260324-tpm-tis-sysbus-ppi-ef31a7d71753
>
> Does this branch contain this series here:
>
> https://lore.kernel.org/qemu-devel/20260317120241.16320-1-philmd@linaro.org/
>
> A patch in this series changed TPMState to not have ppi_enabled anymore:
>
> diff --git a/hw/tpm/tpm_tis.h b/hw/tpm/tpm_tis.h
> index 184632ff66..1531620bf9 100644
> --- a/hw/tpm/tpm_tis.h
> +++ b/hw/tpm/tpm_tis.h
> @@ -75,7 +75,6 @@ typedef struct TPMState {
>
> size_t be_buffer_size;
>
> - bool ppi_enabled;
> TPMPPI ppi;
> } TPMState;
>
No, my branch doesn't include this series. Looking at it, the only thing
I'd need to adjust is a small change in patch 3, the ppi_enabled
property wiring in
tpm_tis_sysbus.c. The rest should apply cleanly on top.
Happy to rebase and send v3 on top once it's ready, or however
you'd like to handle it.
>
> >
> > Best regards,
>
On 3/27/26 12:05 PM, Mohammadfaiz Bawa wrote:
> On Fri, Mar 27, 2026 at 9:15 PM Stefan Berger <stefanb@linux.ibm.com> wrote:
>>
>>
>>
>> On 3/27/26 7:48 AM, Mohammadfaiz Bawa wrote:
>>> The ARM virt machine's tpm-tis-device lacks Physical Presence Interface
>>> (PPI) support - no _DSM, _STA, or PPI operation regions in the ACPI
>>> namespace. This causes Windows 11 ARM64 guests to log Event ID 15
>>> (tpm.sys) errors per boot.
>>>
>>> This series documents the change, refactors tpm_build_ppi_acpi() to
>>> accept a dynamic PPI base address, then wires up PPI MMIO and ACPI
>>> on tpm-tis-sysbus via the platform bus.
>>>
>>> Tested: aarch64 KVM, upstream QEMU, Win11 ARM64 25H2, swtpm.
>>> Event ID 15 eliminated.
>>>
>>> Changes in v2:
>>> - Moved tpm.rst documentation hunk from patch 3 into patch 1 (Stefan)
>>> - Added Reviewed-by tags
>>>
>>> Signed-off-by: Mohammadfaiz Bawa <mbawa@redhat.com>
>>> ---
>>> Mohammadfaiz Bawa (3):
>>> docs/specs/tpm: document PPI support on ARM64 virt
>>> hw/acpi/tpm: parameterize PPI base address in tpm_build_ppi_acpi
>>> hw/tpm: add PPI support to tpm-tis-device for ARM64 virt
>>>
>>> docs/specs/tpm.rst | 24 ++++++++++++++++++++++++
>>> hw/acpi/tpm.c | 8 ++++----
>>> hw/arm/virt-acpi-build.c | 9 ++++++++-
>>> hw/tpm/tpm_tis_isa.c | 2 +-
>>> hw/tpm/tpm_tis_sysbus.c | 11 +++++++++++
>>> include/hw/acpi/tpm.h | 3 ++-
>>> 6 files changed, 50 insertions(+), 7 deletions(-)
>>> ---
>>> base-commit: 8e711856d7639cbffa51405f2cc2366e3d9e3a23
>>> change-id: 20260324-tpm-tis-sysbus-ppi-ef31a7d71753
>>
>> Does this branch contain this series here:
>>
>> https://lore.kernel.org/qemu-devel/20260317120241.16320-1-philmd@linaro.org/
>>
>> A patch in this series changed TPMState to not have ppi_enabled anymore:
>>
>> diff --git a/hw/tpm/tpm_tis.h b/hw/tpm/tpm_tis.h
>> index 184632ff66..1531620bf9 100644
>> --- a/hw/tpm/tpm_tis.h
>> +++ b/hw/tpm/tpm_tis.h
>> @@ -75,7 +75,6 @@ typedef struct TPMState {
>>
>> size_t be_buffer_size;
>>
>> - bool ppi_enabled;
>> TPMPPI ppi;
>> } TPMState;
>>
>
> No, my branch doesn't include this series. Looking at it, the only thing
> I'd need to adjust is a small change in patch 3, the ppi_enabled
> property wiring in
> tpm_tis_sysbus.c. The rest should apply cleanly on top.
>
> Happy to rebase and send v3 on top once it's ready, or however
> you'd like to handle it.
Please rebase. That series should be ready.
>
>
>>
>>>
>>> Best regards,
>>
>
© 2016 - 2026 Red Hat, Inc.