]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
KVM: arm64: Set IL in fake ESR for pKVM memory sharing exit
authorFuad Tabba <tabba@google.com>
Thu, 18 Jun 2026 12:16:43 +0000 (13:16 +0100)
committerMarc Zyngier <maz@kernel.org>
Mon, 22 Jun 2026 09:44:09 +0000 (10:44 +0100)
__pkvm_memshare_page_req() constructs a fake DABT ESR_EL2 to exit to
the host without setting IL. The ESR has ISV=0, so IL must be 1 per the
architecture. The host does not read IL on this path, but the
constructed syndrome should still be architecturally valid.

Set ESR_ELx_IL.

Fixes: 03313efed5e2 ("KVM: arm64: Implement the MEM_SHARE hypercall for protected VMs")
Signed-off-by: Fuad Tabba <tabba@google.com>
Link: https://patch.msgid.link/20260618121643.4105064-8-tabba@google.com
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/kvm/hyp/nvhe/pkvm.c

index 3b2c4fbc34d8ee4f887e979953f06aafd6692db0..24d6f164129ac63bd3d4845f872970c3e4063793 100644 (file)
@@ -1056,7 +1056,8 @@ static u64 __pkvm_memshare_page_req(struct kvm_vcpu *vcpu, u64 ipa)
 
        /* Fake up a data abort (level 3 translation fault on write) */
        vcpu->arch.fault.esr_el2 = (ESR_ELx_EC_DABT_LOW << ESR_ELx_EC_SHIFT) |
-                                  ESR_ELx_WNR | ESR_ELx_FSC_FAULT |
+                                  ESR_ELx_IL | ESR_ELx_WNR |
+                                  ESR_ELx_FSC_FAULT |
                                   FIELD_PREP(ESR_ELx_FSC_LEVEL, 3);
 
        /* Shuffle the IPA around into the HPFAR */