On 15/10/2018 16:46, Tianyu Lan wrote: > On Mon, Oct 15, 2018 at 7:52 PM Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote: >> >> On 13/10/2018 16:53, lantianyu1986@xxxxxxxxx wrote: >>> @@ -1781,6 +1781,11 @@ static int kvm_set_pte_rmapp(struct kvm *kvm, struct kvm_rmap_head *rmap_head, >>> } >>> } >>> >>> + if (need_flush && kvm_available_flush_tlb_with_range()) { >>> + kvm_flush_remote_tlbs_with_address(kvm, gfn, 1); >>> + return 0; >>> + } >>> + >> >> Here you're passing an L1 GPA, not an L2 GPA. Is it correct? >> > > For our case, L0 is Hyper-V and L1 is KVM. So L2 GPA is for KVM''s L1 GPA. Ok, so this is what confused me. Fortunately most of my remarks on the second part still stand, but the first part looks good now. Adding back the list so that people understand my stupidity. :) To recap: 0) I'll apply patch 14/15 immediately 1) for v5, change the callback structure to pass an opaque void* 2) move the hyperv_* implementation first 3) for the flush list part (which almost certainly won't make it into 4.20, so you might as well post it later), please separate each use of the flush list into a separate patch. Paolo