Received: by 2002:a17:90a:1609:0:0:0:0 with SMTP id n9csp3653143pja; Tue, 31 Mar 2020 02:52:34 -0700 (PDT) X-Google-Smtp-Source: ADFU+vs/J6mB2PlMgGJoJ6jWNFKy0NNbFVv2WxncUpfCz8OvJh5nNexbrSgcKMxtgA9Sg3a/HhCo X-Received: by 2002:aca:496:: with SMTP id 144mr1513870oie.121.1585648354688; Tue, 31 Mar 2020 02:52:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585648354; cv=none; d=google.com; s=arc-20160816; b=YcYteiJpU2tihTxknXQfw7eibQy9ZyZo3y3/wOivmzlAnHtGh2nLqDuZgMpgRi2yfp FceehyHRxKiw+ljZYtTA42MdS1/TJ3TuH05D1W3yzjoRsTTpDhEAUpSMBxqYjfNKwvta 5d95tOWDQ7ga0/9x0xGObmgbiVIl/MsvozKAdjPWV36MyIDW9TiPDJ8AT4eyAIus3EQj Cw5WprRl1BKkPLzt8i8IT/6G54ZgS7V7lvdCsCXwgCTye/LflAbsHJBJH3bSverjvwVW HWIzQTlR7dhht8Jr8eHGI2LFX+hDb0vxm4mGft4fiOzXxY84ZdOY8r0NKAiHMLdvmiJh YDvg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:dkim-signature; bh=oQkYYgeZuBMfjooZ7ZSd3wvvQTi+KvnVK/NOemBxCwA=; b=OhKJ4nzOY2bWPcj1xBoXs7wySypuFUWcd6/XLPsQXv+XmW4WJsLJStiQQF+V8MuXTI XdBo77A/owmdv4NjYn1Xe6CpDtqFVndOl0K7U1EheAtFoBP1ZYfxilt025sP/V1lg9li 7wUixAvJzMCgyVZYL44qU8LMsKAGj1DXNN8UgQqL972RptHRLac/QdIaTFTSYc9RNb8B puBgvywO80nHj4ol4nL90NW8aykm7ezI5a07I9Qi3+7c1D3CGMhKntrGAVhCys0E+P+L GR5bBsRQ2bxeM2LfypbZXMgo6yASga9kmlONBAnMh2TopBNfQR4tvSeqbVzwYgdVImd4 tGqw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@yandex-team.ru header.s=default header.b=MXXwnLXn; 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=pass (p=NONE sp=NONE dis=NONE) header.from=yandex-team.ru Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z17si8072068oth.282.2020.03.31.02.52.22; Tue, 31 Mar 2020 02:52:34 -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=pass header.i=@yandex-team.ru header.s=default header.b=MXXwnLXn; 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=pass (p=NONE sp=NONE dis=NONE) header.from=yandex-team.ru Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730235AbgCaJvn (ORCPT + 99 others); Tue, 31 Mar 2020 05:51:43 -0400 Received: from forwardcorp1p.mail.yandex.net ([77.88.29.217]:49642 "EHLO forwardcorp1p.mail.yandex.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729425AbgCaJvn (ORCPT ); Tue, 31 Mar 2020 05:51:43 -0400 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: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 31/03/2020 11.56, Huang, Ying wrote: > From: Huang Ying > > Now, when read /proc/PID/smaps, the PMD migration entry in page table is simply > ignored. To improve the accuracy of /proc/PID/smaps, its parsing and processing > is added. > > 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érôme Glisse" > Cc: Yang Shi > --- > fs/proc/task_mmu.c | 16 ++++++++++++---- > 1 file changed, 12 insertions(+), 4 deletions(-) > > 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 long addr, > bool locked = !!(vma->vm_flags & VM_LOCKED); > struct page *page; struct page *page = NULL; > > - /* FOLL_DUMP will return -EFAULT on huge zero page */ > - page = follow_trans_huge_pmd(vma, addr, pmd, FOLL_DUMP); > + if (pmd_present(*pmd)) { > + /* FOLL_DUMP will return -EFAULT on huge zero page */ > + page = follow_trans_huge_pmd(vma, addr, pmd, FOLL_DUMP); > + } else if (unlikely(is_swap_pmd(*pmd))) { > + swp_entry_t entry = pmd_to_swp_entry(*pmd); > + > + VM_BUG_ON(!is_migration_entry(entry)); > + page = migration_entry_to_page(entry); if (is_migration_entry(entry)) page = 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 long addr, unsigned long end, > > ptl = 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; > } >