From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A6BACC433E0 for ; Sat, 27 Jun 2020 02:59:45 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 4682E2073E for ; Sat, 27 Jun 2020 02:59:45 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ufQpLcBL" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4682E2073E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 8D0346B0028; Fri, 26 Jun 2020 22:59:44 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 87F8D6B0029; Fri, 26 Jun 2020 22:59:44 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 74A5E6B002A; Fri, 26 Jun 2020 22:59:44 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0037.hostedemail.com [216.40.44.37]) by kanga.kvack.org (Postfix) with ESMTP id 5A9DC6B0028 for ; Fri, 26 Jun 2020 22:59:44 -0400 (EDT) Received: from smtpin02.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id BA91F1EE6 for ; Sat, 27 Jun 2020 02:59:43 +0000 (UTC) X-FDA: 76973486646.02.beast57_230418826e5a Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin02.hostedemail.com (Postfix) with ESMTP id A2B85100099A09B6 for ; Sat, 27 Jun 2020 02:59:43 +0000 (UTC) X-HE-Tag: beast57_230418826e5a X-Filterd-Recvd-Size: 5895 Received: from mail-qk1-f196.google.com (mail-qk1-f196.google.com [209.85.222.196]) by imf37.hostedemail.com (Postfix) with ESMTP for ; Sat, 27 Jun 2020 02:59:43 +0000 (UTC) Received: by mail-qk1-f196.google.com with SMTP id b4so10649849qkn.11 for ; Fri, 26 Jun 2020 19:59:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=65nkEV4leipLRUprG00qYP0LfKYS+2u1CjazML/VYvs=; b=ufQpLcBLgFqdO+GimqdCABK9pOWK9i4Ib8qTHV77sfsYlKEJXcSDODaUQAcCDSG7Ta MUqQWVVL3bH0WFi857oMIlxcYVEB8WBhPfk8TyTjEGyTxjb4dqUl+mvy2K+dCSd4Y8iA MtcNkL70P7x8C13GrXPG0heECwv5YgU4iVzhGCoDGhoglraN1CiZzzRh6yZWozOxntOK RH41BM+5WetO+ED72Oev4atcEB0I82fftxewxnNdSPn2BztSErF7K0H8oiwDjlnAvSFp wV09feEvRC6Sd0REIkDP+bp5NPKtCcefYfcyqyiFUIdqiIml+Vhb1R9wBv2Wse5ARPl5 WnYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=65nkEV4leipLRUprG00qYP0LfKYS+2u1CjazML/VYvs=; b=fuM/LiTumlxoTxrrpyCyg+ZJSjDKHLFgcrDIeSBXaLu9KrnKFnHsYLWEZvh8nPoduG 0oyEf1qt8L1Cq5hMjMY7PAwilwpsv5GOHlue8TGj6NjW7RhSniDi/bTABsD5mw3k8q0C U/2+UNpUpCEqtJGPct5Db1uQZ1UC4Jphsh9oARhAxJu5TvYMo2uGSCQskf3nUEYDFIYm n+cjVCRfSrAtJykDKg9Sid1nJNIqu+vqzZxH5dO/feQShq5YcwNxpJ1ZuVzDhTxUXUPi m4r/22kELIBPsfkn4lFcO82MLPXZRckaoGDrT1z58uSVLaiBNM8NRAxyHhiUXJYFMKcm cOkA== X-Gm-Message-State: AOAM531fD+vkc3BkmB9AHoHvlPFQsTHG++QUt6xHTGP2HGQzkOstNKI5 9aj5I5jWACyunOn/anWEV7/XPlOP2D3++Ge+t7U= X-Google-Smtp-Source: ABdhPJy9s9iyS7PvG+U3dwvh2O1j5oqQuJV+dK9C3Q8IzwYDrF1PJlB9LT2P7uLc/ysVzweAw2ya9l0OSOJsYfly69k= X-Received: by 2002:a37:48cc:: with SMTP id v195mr5884992qka.232.1593226782596; Fri, 26 Jun 2020 19:59:42 -0700 (PDT) MIME-Version: 1.0 References: <20200626223130.199227-1-peterx@redhat.com> <20200626223130.199227-13-peterx@redhat.com> In-Reply-To: <20200626223130.199227-13-peterx@redhat.com> From: Greentime Hu Date: Sat, 27 Jun 2020 10:59:03 +0800 Message-ID: Subject: Re: [PATCH 12/26] mm/nds32: Use general page fault accounting To: Peter Xu Cc: Linux Memory Management List , Linux Kernel Mailing List , Andrew Morton , Linus Torvalds , Gerald Schaefer , Andrea Arcangeli , Will Deacon , Michael Ellerman , Nick Hu , Vincent Chen Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: A2B85100099A09B6 X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam03 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Peter Xu =E6=96=BC 2020=E5=B9=B46=E6=9C=8827=E6=97=A5 = =E9=80=B1=E5=85=AD =E4=B8=8A=E5=8D=886:31=E5=AF=AB=E9=81=93=EF=BC=9A > > Use the general page fault accounting by passing regs into handle_mm_faul= t(). > It naturally solve the issue of multiple page fault accounting when page = fault > retry happened. > > Fix PERF_COUNT_SW_PAGE_FAULTS perf event manually for page fault retries,= by > moving it before taking mmap_sem. > > CC: Nick Hu > CC: Greentime Hu > CC: Vincent Chen > Signed-off-by: Peter Xu > --- > arch/nds32/mm/fault.c | 19 +++---------------- > 1 file changed, 3 insertions(+), 16 deletions(-) > > diff --git a/arch/nds32/mm/fault.c b/arch/nds32/mm/fault.c > index 22527129025c..e7344440623c 100644 > --- a/arch/nds32/mm/fault.c > +++ b/arch/nds32/mm/fault.c > @@ -122,6 +122,8 @@ void do_page_fault(unsigned long entry, unsigned long= addr, > if (unlikely(faulthandler_disabled() || !mm)) > goto no_context; > > + perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, addr); > + > /* > * As per x86, we may deadlock here. However, since the kernel on= ly > * validly references user space from well defined areas of the c= ode, > @@ -207,7 +209,7 @@ void do_page_fault(unsigned long entry, unsigned long= addr, > * the fault. > */ > > - fault =3D handle_mm_fault(vma, addr, flags, NULL); > + fault =3D handle_mm_fault(vma, addr, flags, regs); > > /* > * If we need to retry but a fatal signal is pending, handle the > @@ -229,22 +231,7 @@ void do_page_fault(unsigned long entry, unsigned lon= g addr, > goto bad_area; > } > > - /* > - * Major/minor page fault accounting is only done on the initial > - * attempt. If we go through a retry, it is extremely likely that= the > - * page will be found in page cache at that point. > - */ > - perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, addr); > if (flags & FAULT_FLAG_ALLOW_RETRY) { > - if (fault & VM_FAULT_MAJOR) { > - tsk->maj_flt++; > - perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, > - 1, regs, addr); > - } else { > - tsk->min_flt++; > - perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, > - 1, regs, addr); > - } > if (fault & VM_FAULT_RETRY) { > flags |=3D FAULT_FLAG_TRIED; > Hi Peter, Thank you. Acked-by: Greentime Hu