[PATCH v3 13/13] Documentation: KVM: arm64: Describe the ITS hardening
Fuad Tabba
fuad.tabba at linux.dev
Mon Nov 2 05:01:33 PST 2026
Add the ITS hardening to pkvm.rst: why the hypervisor emulates the
host's ITS, and how protected mode differs from non-protected mode as a
result.
Signed-off-by: Fuad Tabba <fuad.tabba at linux.dev>
---
Documentation/virt/kvm/arm/pkvm.rst | 32 +++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/Documentation/virt/kvm/arm/pkvm.rst b/Documentation/virt/kvm/arm/pkvm.rst
index b75bb8ad6f26d..1ebae35f8373e 100644
--- a/Documentation/virt/kvm/arm/pkvm.rst
+++ b/Documentation/virt/kvm/arm/pkvm.rst
@@ -89,6 +89,38 @@ DMA isolation using an IOMMU
Status: **Unimplemented.**
+GICv3 ITS hardening
+-------------------
+
+Status: Host accesses to the ITS control registers are trapped and
+emulated by the hypervisor. The LPI configuration and pending tables
+remain under host control.
+
+The ITS reads and writes memory at addresses programmed by the host, so
+the hypervisor emulates the ITS control registers and command queue to
+ensure that the host cannot use the ITS as a confused deputy to write
+to hypervisor or pVM memory. The command queue, the ITS tables and each
+device's interrupt translation table are owned by the hypervisor while
+the ITS can access them.
+
+This gives rise to some user-visible differences when compared to
+non-protected mode:
+
+* Protected mode requires the hypervisor to take control of every ITS
+ in the system: KVM does not initialise with more than 8 ITSes, and
+ if the takeover fails the host is not deprivileged and
+ ``KVM_CREATE_VM`` returns ``-ENODEV``.
+* An ITS command or register write that the hypervisor rejects is
+ delivered to the host as a data abort.
+* The number of devices that can be mapped through each ITS is limited
+ by the hypervisor, and MSI allocation fails with ``-ENOMEM`` beyond
+ that limit.
+* Interrupt translation tables are page-aligned, so each device
+ consumes at least one page.
+* GICv4 is disabled: direct injection of LPIs is not available to
+ non-protected guests, and a guest saved with ``GICD_TYPER2.nASSGIcap``
+ set cannot be restored (``-EINVAL``).
+
Proxying of Trustzone services
------------------------------
--
2.47.3
More information about the linux-arm-kernel
mailing list