Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752523AbdHPACi (ORCPT ); Tue, 15 Aug 2017 20:02:38 -0400 Received: from mail.kernel.org ([198.145.29.99]:45472 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751095AbdHPACg (ORCPT ); Tue, 15 Aug 2017 20:02:36 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 51E2422B67 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=goodmis.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=rostedt@goodmis.org Date: Tue, 15 Aug 2017 20:02:32 -0400 From: Steven Rostedt To: Peter Zijlstra Cc: Andrew Cooper , Vitaly Kuznetsov , Juergen Gross , Stephen Hemminger , boris.ostrovsky@oracle.com, "linux-tip-commits@vger.kernel.org" , Jork Loeser , Haiyang Zhang , "linux-kernel@vger.kernel.org" , Simon Xiao , "andy.shevchenko@gmail.com" , "luto@kernel.org" , "hpa@zytor.com" , xen-devel@lists.xenproject.org, "tglx@linutronix.de" , KY Srinivasan , "torvalds@linux-foundation.org" , "mingo@kernel.org" Subject: Re: [Xen-devel] [tip:x86/platform] x86/hyper-v: Use hypercall for remote TLB flush Message-ID: <20170815200232.3ad8139e@gandalf.local.home> In-Reply-To: <20170811120714.rwr24ewr4mjzwznn@hirez.programming.kicks-ass.net> References: <20170802160921.21791-8-vkuznets@redhat.com> <20170810185646.GI6524@worktop.programming.kicks-ass.net> <20170810192742.GJ6524@worktop.programming.kicks-ass.net> <87lgmqqwzl.fsf@vitty.brq.redhat.com> <20170811105625.hmdfnp3yh72zut33@hirez.programming.kicks-ass.net> <43ddd29a-1670-ef0b-c327-10a2dca67cb4@citrix.com> <20170811120714.rwr24ewr4mjzwznn@hirez.programming.kicks-ass.net> X-Mailer: Claws Mail 3.14.0 (GTK+ 2.24.31; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 740 Lines: 31 On Fri, 11 Aug 2017 14:07:14 +0200 Peter Zijlstra wrote: > It goes like: > > CPU0 CPU1 > > unhook page > cli > traverse page tables > TLB invalidate ---> > sti > > 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 > > free page > > So the CPU1 page-table walker gets an existence guarantee of the > page-tables by clearing IF.