Received: by 10.192.165.148 with SMTP id m20csp4150471imm; Tue, 8 May 2018 03:56:55 -0700 (PDT) X-Google-Smtp-Source: AB8JxZpMvEn+2nBgPLOeki8NM9TT/+4NFTD7801rEqvcwgCzmmXacbrQvyM2VDscEeeiXAxkkpvW X-Received: by 2002:a17:902:b94a:: with SMTP id h10-v6mr42075011pls.321.1525777015215; Tue, 08 May 2018 03:56:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525777015; cv=none; d=google.com; s=arc-20160816; b=wPa+RTzOg3euqbZ/d6bDsk4el+9eE5x3MNIXFiW0ewp7js5rOGZ3jeq2/OLgOAvnXI 4g/VXZOhVAIC3virWNPVRgFaJsiaGJMlM6mLEyEA1gqIgxLyYUPhX5rWfwaKg3qzfnjH J/A2FCrq0ZWj1KYGkcsSCGB10aYKWniiUYKUYmFx1qYku4sJUu54m6yxfXN7Re7n9CuN kcuRduhK5Sbi2KryFu3HMdZoBuiE6c+N6DJYzyMgbFtfNrFgxxt31Qh0eMkkMGfz+knl N1W3h9HKHSuiMNA4oJ3fO46DeDxhfQSYo+NnsS5Myai+zcWLeQkX86cGFM3o4VhEucEN gvPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature:arc-authentication-results; bh=ZyuWOGZkzM/pFOyzh3+yYkpugmrgurrOvSMpeh3NXaI=; b=cvu3O+LaBS/1iXhDIuFGxoA4gtCzopHiW3X4P2+LzmL+rK+8mCPKnqDG3EHlPHEhC0 heVGwWsgXcmue0LwqpXFZ5HRTZSCudMGjK3TpY6nTlFYk79TfcROqm1RTMh7AUUU6+AQ lpSPG82H/xJVGofPNXn7KggFkNKDNnZoijgz3j4T1IT6YtjAIPsqAdwn2cpnrFK/C3a/ NVHB8sgTrfSdimVqe5hVCeSqrEtAfM6AEjH/G37TQuu0c2gIw53Eqi4By+hrK2zvIsb2 2OI4kelSpCNIUAICp6symdkKQF8I1hU2m5VuKTHzKEFQzLqmb7zFLlWZEww6bBU50YrM Y/Cw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=PaP4QJnD; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c2si24908438pfh.215.2018.05.08.03.56.41; Tue, 08 May 2018 03:56:55 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=PaP4QJnD; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752381AbeEHK41 (ORCPT + 99 others); Tue, 8 May 2018 06:56:27 -0400 Received: from mail-pl0-f66.google.com ([209.85.160.66]:38637 "EHLO mail-pl0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752252AbeEHK4Y (ORCPT ); Tue, 8 May 2018 06:56:24 -0400 Received: by mail-pl0-f66.google.com with SMTP id c11-v6so2014033plr.5 for ; Tue, 08 May 2018 03:56:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=ZyuWOGZkzM/pFOyzh3+yYkpugmrgurrOvSMpeh3NXaI=; b=PaP4QJnDopGBc++DPQNd0kujYWWthNMwCk/5TOfbnQSbcwVooEUUtVEm5FduOblfV0 jj465I4zNGl+N1ydBTKnvNO2kSflftV3RPFvkfTCj8K1SJ0EPULsAULJD75ylIbWftdm unddlXtOgSiwsVl+3pA6KeyRF/herx1fPQ71VuI28axMW5Pi5N/xIDI2CLiH2gYoE3WF OCQuZTUQZoY4belpOR83IT56MCxY25Q8XTZsbSkHO+7Jj6SgdM97ZhBRUJZgn8/Ty4Uw 1PlGHmjnSI12hT25dNTCUT6OrExo8gJ745+KhtQp0E4krsXYfbWRmYhvcZdUbNHIf1UF z/bQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition:in-reply-to:user-agent; bh=ZyuWOGZkzM/pFOyzh3+yYkpugmrgurrOvSMpeh3NXaI=; b=OP5rjCj4KqnLm3u+1t2p/+7v5L2dZfs/EvKMYiPguwTfieH3iTMWQaW4WJmtqIdoE7 vDhhpgOhsCBkBXTceuVlK8DJM6qyeP2H6y9qfhyZWCOj+ly5FjVqHO1mun028J1UmdK6 FyCrPZIpPvuWyqeKfJrzi8FKdtnzqUnZXAMK+3P+00YRuL6XjXKEKzuj+ZqOckyLavgZ Bop4W2ZfJtERG+B9prorcD1LZF8rKxMUmDF063lzm6Ts8Jxq2Bl45YWwgGXwKpoY1lbc laTj0sAkjh+j48NgoZkXyo1PuA+7xUGvLpndDDT0YI2MhM6+fIFnzPw81hc3Lm/gQGvW cD3w== X-Gm-Message-State: ALQs6tCG9+4bV64WqYmE0pXa4HzBvlcjc/rn+EAg+MGR9nIPp1pQlzgc 5QTSF6JuIBl7kjes5q1+vC4= X-Received: by 2002:a17:902:8c95:: with SMTP id t21-v6mr36696459plo.306.1525776984172; Tue, 08 May 2018 03:56:24 -0700 (PDT) Received: from rodete-desktop-imager.corp.google.com ([2401:fa00:d:10:affa:813f:5380:6613]) by smtp.gmail.com with ESMTPSA id b5-v6sm2946827pgc.16.2018.05.08.03.56.15 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 08 May 2018 03:56:22 -0700 (PDT) Date: Tue, 8 May 2018 19:56:12 +0900 From: Minchan Kim To: Laurent Dufour Cc: akpm@linux-foundation.org, mhocko@kernel.org, peterz@infradead.org, kirill@shutemov.name, ak@linux.intel.com, dave@stgolabs.net, jack@suse.cz, Matthew Wilcox , benh@kernel.crashing.org, mpe@ellerman.id.au, paulus@samba.org, Thomas Gleixner , Ingo Molnar , hpa@zytor.com, Will Deacon , Sergey Senozhatsky , Andrea Arcangeli , Alexei Starovoitov , kemi.wang@intel.com, sergey.senozhatsky.work@gmail.com, Daniel Jordan , David Rientjes , Jerome Glisse , Ganesh Mahendran , linux-kernel@vger.kernel.org, linux-mm@kvack.org, haren@linux.vnet.ibm.com, khandual@linux.vnet.ibm.com, npiggin@gmail.com, bsingharora@gmail.com, paulmck@linux.vnet.ibm.com, Tim Chen , linuxppc-dev@lists.ozlabs.org, x86@kernel.org Subject: Re: [PATCH v10 12/25] mm: cache some VMA fields in the vm_fault structure Message-ID: <20180508105612.GC8209@rodete-desktop-imager.corp.google.com> References: <1523975611-15978-1-git-send-email-ldufour@linux.vnet.ibm.com> <1523975611-15978-13-git-send-email-ldufour@linux.vnet.ibm.com> <20180423074221.GE114098@rodete-desktop-imager.corp.google.com> <20180503154211.GA180804@rodete-laptop-imager.corp.google.com> <580c2760-2157-61fe-01ff-f928516fa23f@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <580c2760-2157-61fe-01ff-f928516fa23f@linux.vnet.ibm.com> User-Agent: Mutt/1.9.2 (2017-12-15) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, May 04, 2018 at 11:10:54AM +0200, Laurent Dufour wrote: > On 03/05/2018 17:42, Minchan Kim wrote: > > On Thu, May 03, 2018 at 02:25:18PM +0200, Laurent Dufour wrote: > >> On 23/04/2018 09:42, Minchan Kim wrote: > >>> On Tue, Apr 17, 2018 at 04:33:18PM +0200, Laurent Dufour wrote: > >>>> When handling speculative page fault, the vma->vm_flags and > >>>> vma->vm_page_prot fields are read once the page table lock is released. So > >>>> there is no more guarantee that these fields would not change in our back > >>>> They will be saved in the vm_fault structure before the VMA is checked for > >>>> changes. > >>> > >>> Sorry. I cannot understand. > >>> If it is changed under us, what happens? If it's critical, why cannot we > >>> check with seqcounter? > >>> Clearly, I'm not understanding the logic here. However, it's a global > >>> change without CONFIG_SPF so I want to be more careful. > >>> It would be better to describe why we need to sanpshot those values > >>> into vm_fault rather than preventing the race. > >> > >> The idea is to go forward processing the page fault using the VMA's fields > >> values saved in the vm_fault structure. Then once the pte are locked, the > >> vma->sequence_counter is checked again and if something has changed in our back > >> the speculative page fault processing is aborted. > > > > Sorry, still I don't understand why we should capture some fields to vm_fault. > > If we found vma->seq_cnt is changed under pte lock, can't we just bail out and > > fallback to classic fault handling? > > > > Maybe, I'm missing something clear now. It would be really helpful to understand > > if you give some exmaple. > > I'd rather say that I was not clear enough ;) > > Here is the point, when we deal with a speculative page fault, the mmap_sem is > not taken, so parallel VMA's changes can occurred. When a VMA change is done > which will impact the page fault processing, we assumed that the VMA sequence > counter will be changed. > > In the page fault processing, at the time the PTE is locked, we checked the VMA > sequence counter to detect changes done in our back. If no change is detected > we can continue further. But this doesn't prevent the VMA to not be changed in > our back while the PTE is locked. So VMA's fields which are used while the PTE > is locked must be saved to ensure that we are using *static* values. > This is important since the PTE changes will be made on regards to these VMA > fields and they need to be consistent. This concerns the vma->vm_flags and > vma->vm_page_prot VMA fields. > > I hope I make this clear enough this time. It's more clear at this point. Please include such nice explanation in description. Now, I am wondering how you synchronize those static value and vma's seqcount. It must be in next patchset. I hope to grab a time to read it, asap. Thanks.