Re: [PATCH 5/9] x86/uv: Use the right tlbflush API

From: Peter Zijlstra
Date: Tue Dec 05 2017 - 16:28:15 EST


On Tue, Dec 05, 2017 at 03:09:48PM -0600, Andrew Banman wrote:
> On 12/5/17 6:34 AM, Peter Zijlstra wrote:
> >Since uv_flush_tlb_others() implements flush_tlb_others() which is
> >about flushing user mappings, we should use __flush_tlb_single(),
> >which too is about flushing user mappings.
> >
> >Cc: Andrew Banman<abanman@xxxxxxx>
> >Cc: Mike Travis<mike.travis@xxxxxxx>
> >Signed-off-by: Peter Zijlstra (Intel)<peterz@xxxxxxxxxxxxx>
> >---
> > arch/x86/platform/uv/tlb_uv.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> >--- a/arch/x86/platform/uv/tlb_uv.c
> >+++ b/arch/x86/platform/uv/tlb_uv.c
> >@@ -299,7 +299,7 @@ static void bau_process_message(struct m
> > local_flush_tlb();
> > stat->d_alltlb++;
> > } else {
> >- __flush_tlb_one(msg->address);
> >+ __flush_tlb_single(msg->address);
> > stat->d_onetlb++;
> > }
> > stat->d_requestee++;
>
> This looks like the right thing to do. We'll be testing it and complain later if
> we find any problems, but I'm not expecting any since this patch looks to
> maintain our status quo.

Well, with KPTI (the-patch-set-formerly-known-as-kaiser), there will be
a distinct difference between the two.

With KPTI __flush_tlb_one() would end up invalidating all kernel
mappings while __flush_tlb_single() will end up only invalidating the
user mappings of the current mm.