On Thu, Oct 27, 2022, Vitaly Kuznetsov wrote: > Sean Christopherson <seanjc@xxxxxxxxxx> writes: > > > On Fri, Oct 21, 2022, Vitaly Kuznetsov wrote: > >> @@ -1908,6 +1909,12 @@ static u64 kvm_hv_flush_tlb(struct kvm_vcpu *vcpu, struct kvm_hv_hcall *hc) > >> */ > >> BUILD_BUG_ON(KVM_HV_MAX_SPARSE_VCPU_SET_BITS > 64); > >> > >> + if (!hc->fast && is_guest_mode(vcpu)) { > > > > Please add a comment explaining why only "slow" hypercalls need to translate the > > GPA from L2=>L1. > > > > With a comment (and assuming this isn't a bug), > > This is intended, > > For "slow" hypercalls 'hc->ingpa' is the GPA (or an 'nGPA' -- thus the > patch) in guest memory where hypercall parameters are placed, kvm reads > them with kvm_read_guest() later. For "fast" hypercalls 'ingpa' is a > misnomer as it is not an address but the first parameter (in the 'tlb > flush' case it's 'address space id' which we currently don't > analyze). We may want to add a union in 'struct kvm_hv_hcall' to make > this explicit. Ya, a union would be helpful. I'm pretty sure at some point I knew the "fast" ingpa isn't actually a GPA, but obviously forgot that detail.