Re: [PATCH 2/2] KVM: x86/mmu: Exclude the MMU_PRESENT bit from MMIO SPTE's generation

From: Paolo Bonzini
Date: Tue Mar 09 2021 - 08:14:02 EST


On 09/03/21 11:09, Maxim Levitsky wrote:
What happens if mmio generation overflows (e.g if userspace keeps on updating the memslots)?
In theory if we have a SPTE with a stale generation, it can became valid, no?

I think that we should in the case of the overflow zap all mmio sptes.
What do you think?

Zapping all MMIO SPTEs is done by updating the generation count. When it overflows, all SPs are zapped:

/*
* The very rare case: if the MMIO generation number has wrapped,
* zap all shadow pages.
*/
if (unlikely(gen == 0)) {
kvm_debug_ratelimited("kvm: zapping shadow pages for mmio generation wraparound\n");
kvm_mmu_zap_all_fast(kvm);
}

So giving it more bits make this more rare, at the same time having to remove one or two bits is not the end of the world.

Paolo