On 22/08/2024 04:32, Aneesh Kumar K.V wrote: > Steven Price <steven.price@xxxxxxx> writes: > >> At runtime if the realm guest accesses memory which hasn't yet been >> mapped then KVM needs to either populate the region or fault the guest. >> >> For memory in the lower (protected) region of IPA a fresh page is >> provided to the RMM which will zero the contents. For memory in the >> upper (shared) region of IPA, the memory from the memslot is mapped >> into the realm VM non secure. >> >> Signed-off-by: Steven Price <steven.price@xxxxxxx> >> --- >> Changes since v2: >> * Avoid leaking memory if failing to map it in the realm. >> * Correctly mask RTT based on LPA2 flag (see rtt_get_phys()). >> * Adapt to changes in previous patches. >> > > .... > >> - gfn = ipa >> PAGE_SHIFT; >> + gfn = (ipa & ~gpa_stolen_mask) >> PAGE_SHIFT; >> memslot = gfn_to_memslot(vcpu->kvm, gfn); >> + >> + if (kvm_slot_can_be_private(memslot)) { >> + ret = private_memslot_fault(vcpu, fault_ipa, memslot); >> + if (ret != -EAGAIN) >> + goto out; >> + } >> > > Shouldn't this be s/fault_ipa/ipa ? Well they should both be the same unless we're in some scary parallel universe where we have nested virtualisation *and* realms at the same time (shudder!). But yes "ipa" would be more consistent so I'll change it! Steve > ret = private_memslot_fault(vcpu, ipa, memslot); > > -aneesh