RE: [tip:x86/platform] x86/hyper-v: Use hypercall for remote TLB flush

From: KY Srinivasan
Date: Thu Aug 10 2017 - 14:59:22 EST




> -----Original Message-----
> From: Peter Zijlstra [mailto:peterz@xxxxxxxxxxxxx]
> Sent: Thursday, August 10, 2017 11:57 AM
> To: Simon Xiao <sixiao@xxxxxxxxxxxxx>; Haiyang Zhang
> <haiyangz@xxxxxxxxxxxxx>; Jork Loeser <Jork.Loeser@xxxxxxxxxxxxx>;
> Stephen Hemminger <sthemmin@xxxxxxxxxxxxx>; torvalds@linux-
> foundation.org; luto@xxxxxxxxxx; hpa@xxxxxxxxx; vkuznets@xxxxxxxxxx;
> linux-kernel@xxxxxxxxxxxxxxx; rostedt@xxxxxxxxxxx;
> andy.shevchenko@xxxxxxxxx; tglx@xxxxxxxxxxxxx; KY Srinivasan
> <kys@xxxxxxxxxxxxx>; mingo@xxxxxxxxxx
> Cc: linux-tip-commits@xxxxxxxxxxxxxxx
> Subject: Re: [tip:x86/platform] x86/hyper-v: Use hypercall for remote TLB
> flush
>
> On Thu, Aug 10, 2017 at 11:21:49AM -0700, tip-bot for Vitaly Kuznetsov
> wrote:
> > Commit-ID: 2ffd9e33ce4af4e8cfa3e17bf493defe8474e2eb
> > Gitweb:
> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgit.kern
> el.org%2Ftip%2F2ffd9e33ce4af4e8cfa3e17bf493defe8474e2eb&data=02%7C
> 01%7Ckys%40microsoft.com%7C2537372f38d3414e999e08d4e0218ec8%7C72
> f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636379882129411812&sdata
> =odsJ2NnQdD8LCEtDPfVf5rL%2F2sQX4fKUhlqVSjKhjCI%3D&reserved=0
> > Author: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx>
> > AuthorDate: Wed, 2 Aug 2017 18:09:19 +0200
> > Committer: Ingo Molnar <mingo@xxxxxxxxxx>
> > CommitDate: Thu, 10 Aug 2017 20:16:44 +0200
> >
> > x86/hyper-v: Use hypercall for remote TLB flush
> >
> > Hyper-V host can suggest us to use hypercall for doing remote TLB flush,
> > this is supposed to work faster than IPIs.
> >
> > Implementation details: to do HvFlushVirtualAddress{Space,List} hypercalls
> > we need to put the input somewhere in memory and we don't really want
> to
> > have memory allocation on each call so we pre-allocate per cpu memory
> areas
> > on boot.
> >
> > pv_ops patching is happening very early so we need to separate
> > hyperv_setup_mmu_ops() and hyper_alloc_mmu().
> >
> > It is possible and easy to implement local TLB flushing too and there is
> > even a hint for that. However, I don't see a room for optimization on the
> > host side as both hypercall and native tlb flush will result in vmexit. The
> > hint is also not set on modern Hyper-V versions.
>
> Hold on.. if we don't IPI for TLB invalidation. What serializes our
> software page table walkers like fast_gup() ?

Hypervisor may implement this functionality via an IPI.

K. Y