Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753089AbbFNWMG (ORCPT ); Sun, 14 Jun 2015 18:12:06 -0400 Received: from mx1.redhat.com ([209.132.183.28]:37117 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751797AbbFNWMC (ORCPT ); Sun, 14 Jun 2015 18:12:02 -0400 Date: Mon, 15 Jun 2015 00:10:55 +0200 From: Oleg Nesterov To: Ingo Molnar Cc: linux-kernel@vger.kernel.org, linux-mml@vger.kernel.org, Andy Lutomirski , Andrew Morton , Denys Vlasenko , Brian Gerst , Peter Zijlstra , Borislav Petkov , "H. Peter Anvin" , Linus Torvalds , Thomas Gleixner , Waiman Long Subject: Re: [PATCH 06/12] x86/mm: Enable and use the arch_pgd_init_late() method Message-ID: <20150614221055.GA32290@redhat.com> References: <1434031637-9091-1-git-send-email-mingo@kernel.org> <1434031637-9091-7-git-send-email-mingo@kernel.org> <20150612225000.GA24699@redhat.com> <20150613064705.GA13835@gmail.com> <20150613065255.GA16018@gmail.com> <20150613174527.GA29379@redhat.com> <20150614081352.GA3446@gmail.com> <20150614205412.GC19582@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20150614205412.GC19582@redhat.com> User-Agent: Mutt/1.5.18 (2008-05-17) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1378 Lines: 46 On 06/14, Oleg Nesterov wrote: > > So, unless you are going to remove pgd_lock altogether perhaps we can > rely on it the same way > > mb(); > spin_unlock_wait(&pgd_lock); > rmb(); > > > Avoids the barriers (and comments) on another side, but I can't say > I really like this... > > > So I won't argue with 2 mb's on both sides. Or we can add // A new child created before can miss the PGD updates, // but we must see that child on the process list read_lock(tasklist_lock); read_unlock(tasklist_lock); // We can miss a new child forked after read_unlock(), // but then its parent must see all PGD updates right // after it does write_unlock(tasklist); for_each_process(p) { before main for_each_process() loop in sync_global_pgds(). As for exec_mmap() we can rely on task_lock(), sync_global_pgds() takes it too. The corner case is when exec changes the leader, so exec_mmap/sync_global_pgds can take different locks. But in this case we can rely on de_thread() (which takes tasklist for write) by the same reason: either sync_global_pgds() will see the new leader, or the new leader must see the updates. Oleg. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/