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=-8.1 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 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 6880BC2D0E8 for ; Tue, 31 Mar 2020 09:51:45 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 9FEFE208E4 for ; Tue, 31 Mar 2020 09:51:44 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=yandex-team.ru header.i=@yandex-team.ru header.b="MXXwnLXn" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9FEFE208E4 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=yandex-team.ru Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 285876B0032; Tue, 31 Mar 2020 05:51:44 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 235B06B0037; Tue, 31 Mar 2020 05:51:44 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0FDC56B006C; Tue, 31 Mar 2020 05:51:44 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0131.hostedemail.com [216.40.44.131]) by kanga.kvack.org (Postfix) with ESMTP id E899D6B0032 for ; Tue, 31 Mar 2020 05:51:43 -0400 (EDT) Received: from smtpin24.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id A3F5F824805A for ; Tue, 31 Mar 2020 09:51:43 +0000 (UTC) X-FDA: 76655190486.24.beef51_2c08d9b954f0e X-HE-Tag: beef51_2c08d9b954f0e X-Filterd-Recvd-Size: 4782 Received: from forwardcorp1p.mail.yandex.net (forwardcorp1p.mail.yandex.net [77.88.29.217]) by imf12.hostedemail.com (Postfix) with ESMTP for ; Tue, 31 Mar 2020 09:51:42 +0000 (UTC) Received: from mxbackcorp1g.mail.yandex.net (mxbackcorp1g.mail.yandex.net [IPv6:2a02:6b8:0:1402::301]) by forwardcorp1p.mail.yandex.net (Yandex) with ESMTP id EF3742E1504; Tue, 31 Mar 2020 12:51:39 +0300 (MSK) Received: from vla5-58875c36c028.qloud-c.yandex.net (vla5-58875c36c028.qloud-c.yandex.net [2a02:6b8:c18:340b:0:640:5887:5c36]) by mxbackcorp1g.mail.yandex.net (mxbackcorp/Yandex) with ESMTP id CArQVUGqzG-pcNi0fcP; Tue, 31 Mar 2020 12:51:39 +0300 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex-team.ru; s=default; t=1585648299; bh=oQkYYgeZuBMfjooZ7ZSd3wvvQTi+KvnVK/NOemBxCwA=; h=In-Reply-To:Message-ID:From:Date:References:To:Subject:Cc; b=MXXwnLXnb75v33k0O/la3APncH+bRvt2dzRV0xbhvhENmtABpKlgMr4LcFFvTM0hw lu7DO2cpVh9Hxj2T5IJn6c/6FWA4MDAyQycB3abfRhNe8r3d1EffQiIkV/pD08l3gN 55H4wqSt7ELTkA1JbZ97sdLSdBrRoGpx9aSUChcQ= Authentication-Results: mxbackcorp1g.mail.yandex.net; dkim=pass header.i=@yandex-team.ru Received: from unknown (unknown [2a02:6b8:b080:8005::1:5]) by vla5-58875c36c028.qloud-c.yandex.net (smtpcorp/Yandex) with ESMTPSA id FhzmPsKgcX-pcY4Zcb2; Tue, 31 Mar 2020 12:51:38 +0300 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client certificate not present) Subject: Re: [PATCH] /proc/PID/smaps: Add PMD migration entry parsing To: "Huang, Ying" , Andrew Morton Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Andrea Arcangeli , "Kirill A . Shutemov" , Zi Yan , Vlastimil Babka , Alexey Dobriyan , Michal Hocko , =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= , Yang Shi References: <20200331085604.1260162-1-ying.huang@intel.com> From: Konstantin Khlebnikov Message-ID: <49386753-5984-f708-4153-e9c6de632439@yandex-team.ru> Date: Tue, 31 Mar 2020 12:51:38 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.4.1 MIME-Version: 1.0 In-Reply-To: <20200331085604.1260162-1-ying.huang@intel.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-CA Content-Transfer-Encoding: quoted-printable 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: On 31/03/2020 11.56, Huang, Ying wrote: > From: Huang Ying >=20 > Now, when read /proc/PID/smaps, the PMD migration entry in page table i= s simply > ignored. To improve the accuracy of /proc/PID/smaps, its parsing and p= rocessing > is added. >=20 > Signed-off-by: "Huang, Ying" > Cc: Andrea Arcangeli > Cc: Kirill A. Shutemov > Cc: Zi Yan > Cc: Vlastimil Babka > Cc: Alexey Dobriyan > Cc: Michal Hocko > Cc: Konstantin Khlebnikov > Cc: "J=C3=A9r=C3=B4me Glisse" > Cc: Yang Shi > --- > fs/proc/task_mmu.c | 16 ++++++++++++---- > 1 file changed, 12 insertions(+), 4 deletions(-) >=20 > diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c > index 8d382d4ec067..b5b3aef8cb3b 100644 > --- a/fs/proc/task_mmu.c > +++ b/fs/proc/task_mmu.c > @@ -548,8 +548,17 @@ static void smaps_pmd_entry(pmd_t *pmd, unsigned l= ong addr, > bool locked =3D !!(vma->vm_flags & VM_LOCKED); > struct page *page; struct page *page =3D NULL; > =20 > - /* FOLL_DUMP will return -EFAULT on huge zero page */ > - page =3D follow_trans_huge_pmd(vma, addr, pmd, FOLL_DUMP); > + if (pmd_present(*pmd)) { > + /* FOLL_DUMP will return -EFAULT on huge zero page */ > + page =3D follow_trans_huge_pmd(vma, addr, pmd, FOLL_DUMP); > + } else if (unlikely(is_swap_pmd(*pmd))) { > + swp_entry_t entry =3D pmd_to_swp_entry(*pmd); > + > + VM_BUG_ON(!is_migration_entry(entry)); > + page =3D migration_entry_to_page(entry); if (is_migration_entry(entry)) page =3D migration_entry_to_page(entry); Seems safer and doesn't add much code. > + } else { > + return; > + } > if (IS_ERR_OR_NULL(page)) > return; > if (PageAnon(page)) > @@ -578,8 +587,7 @@ static int smaps_pte_range(pmd_t *pmd, unsigned lon= g addr, unsigned long end, > =20 > ptl =3D pmd_trans_huge_lock(pmd, vma); > if (ptl) { > - if (pmd_present(*pmd)) > - smaps_pmd_entry(pmd, addr, walk); > + smaps_pmd_entry(pmd, addr, walk); > spin_unlock(ptl); > goto out; > } >=20