Hi Sean: Thanks for your review. On 9/10/2018 10:21 PM, Sean Christopherson wrote: > On Mon, 2018-09-10 at 08:38 +0000, Tianyu Lan wrote: >> Add flush range call back in the kvm_x86_ops and platform can use it >> to register its associated function. The parameter "kvm_tlb_range" >> accepts a single range and flush list which contains a list of ranges. >> >> Signed-off-by: Lan Tianyu <tianyu....@microsoft.com> >> --- >> arch/x86/include/asm/kvm_host.h | 8 ++++++++ >> 1 file changed, 8 insertions(+) >> >> diff --git a/arch/x86/include/asm/kvm_host.h >> b/arch/x86/include/asm/kvm_host.h >> index e12916e7c2fb..dcdf8cc16388 100644 >> --- a/arch/x86/include/asm/kvm_host.h >> +++ b/arch/x86/include/asm/kvm_host.h >> @@ -402,6 +402,12 @@ struct kvm_mmu { >> u64 pdptrs[4]; /* pae */ >> }; >> >> +struct kvm_tlb_range { >> + u64 start_gfn; >> + u64 end_gfn; > > IMO this struct and all functions should pass around the number of pages > instead of end_gfn to avoid confusion as to whether end_gfn is inclusive > or exlusive.
That's good suggestion. Thanks. > >> + struct list_head *flush_list; >> +}; >> + >> enum pmc_type { >> KVM_PMC_GP = 0, >> KVM_PMC_FIXED, >> @@ -991,6 +997,8 @@ struct kvm_x86_ops { >> >> void (*tlb_flush)(struct kvm_vcpu *vcpu, bool invalidate_gpa); >> int (*tlb_remote_flush)(struct kvm *kvm); >> + int (*tlb_remote_flush_with_range)(struct kvm *kvm, >> + struct kvm_tlb_range *range); >> >> /* >> * Flush any TLB entries associated with the given GVA. _______________________________________________ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel