diff options
| author | Fuad Tabba <fuad.tabba@linux.dev> | 2026-09-29 10:00:30 +0100 |
|---|---|---|
| committer | Oliver Upton <oupton@kernel.org> | 2026-09-29 09:08:56 -0700 |
| commit | 04447b95c62bef2b3591486c66244c49591a3dbd (patch) | |
| tree | 687ef0299712b1790010b276e5369e564ee3fa6a /tools/lib/python/kdoc/parse_data_structs.py | |
| parent | 80ae56184b57176b908cd6a7ececf274a7e4b3c7 (diff) | |
| download | linux-next-04447b95c62bef2b3591486c66244c49591a3dbd.tar.gz linux-next-04447b95c62bef2b3591486c66244c49591a3dbd.zip | |
KVM: arm64: Use the host's HCR_EL2 for non-protected VMs in pKVM
For each vCPU, pKVM's EL2 builds its own HCR_EL2 and takes only TWI, TWE
and VSE from the host's value on each entry. For a non-protected VM it
has fallen behind the host's: on a CPU with MTE the guest can read
GMID_EL1, on one with FEAT_EVT2 but no FGT it can execute a TLBI OS its
ID registers hide, an interrupt injected without a vGIC (VI, VF) never
arrives, and set/way emulation loses the TVM trap it relies on.
For a non-protected VM, also take the bits the host varies with the VM's
configuration or at runtime: VI, VF, TVM, TID2, TID4, TID5 and TTLBOS.
They only pend interrupts for, or add traps to, a VM the host controls.
The traps exit to the host, which handles them as it does without pKVM.
The bits that change what EL2 does on entry and exit (E2H, RW, API/APK)
or depend only on the CPU (TEA, TERR, FWB) stay EL2's. A protected VM
still takes only TWI, TWE and VSE.
EL2 now sets TID2 or TID4 only for a protected VM, and never sets ATA,
as the host rejects KVM_CAP_ARM_MTE in pKVM.
Fixes: b56680de9c648 ("KVM: arm64: Initialize trap register values in hyp in pKVM")
Signed-off-by: Fuad Tabba <fuad.tabba@linux.dev>
Link: https://patch.msgid.link/20260929090031.3829185-4-fuad.tabba@linux.dev
Signed-off-by: Oliver Upton <oupton@kernel.org>
Diffstat (limited to 'tools/lib/python/kdoc/parse_data_structs.py')
0 files changed, 0 insertions, 0 deletions
