Re: [PATCH v3 26/27] KVM: nSVM: Use different ASIDs for L1 and L2
From: Sean Christopherson
Date: Thu Oct 22 2026 - 18:45:33 EST
On Fri, Oct 16, 2026, Jim Mattson wrote:
> On Mon, Oct 12, 2026 at 4:37 PM Yosry Ahmed <yosry@xxxxxxxxxx> wrote:
> Moreover, does this change the semantics of PV TLB flush? In
> record_steal_time(), we have:
>
> if (st_preempted & KVM_VCPU_FLUSH_TLB)
> kvm_vcpu_flush_tlb_guest(vcpu);
>
> IIUC, an idle vCPU that wakes into L2 will flush only L2's ASID. In
> the past, with a shared ASID, L1's ASID was always flushed on emulated
> VM-exit anyway. Now, L1's ASID will be unaffected. Though I can't find
> any real documentation on PV TLB flush, it *seems* like the remote
> vCPU would want L1's ASID to be flushed. OTOH, this change makes nSVM
> behave just like nVMX.
That's a bug that absolutely needs to be fixed, probably relatively urgently. We
should also document that passing through the steal_time shared information to L2
to utilize PV TLB flushes for L2 is explicitly not supported.
I hate to re-introduce deferred actions for L2 => L1 things, but that seems like
the only sane way to handle this, because handling the !tdp_enabled case, where
KVM needs to sync the current root, requires knowing what MMU is going to be in
use when L1 regains control. Yuck.