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

From: Steven Rostedt
Date: Tue Aug 15 2017 - 20:02:43 EST


On Fri, 11 Aug 2017 14:07:14 +0200
Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:

> It goes like:
>
> CPU0 CPU1
>
> unhook page
> cli
> traverse page tables
> TLB invalidate ---> <IF clear, therefore CPU0 waits>
> sti
> <IPI>
> TLB invalidate
> <------ complete

I guess the important part here is the above "complete". CPU0 doesn't
proceed until its receives it. Thus it does act like
cli~rcu_read_lock(), sti~rcu_read_unlock(), and "TLB invalidate" is
equivalent to synchronize_rcu().

[ this response is for clarification for the casual observer of this
thread ;-) ]

-- Steve

> </IPI>
> free page
>
> So the CPU1 page-table walker gets an existence guarantee of the
> page-tables by clearing IF.