From patchwork Mon Sep 20 16:49:31 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tiberiu A Georgescu X-Patchwork-Id: 12505979 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=-16.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT 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 0815CC433EF for ; Mon, 20 Sep 2021 16:49:49 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id A439A61284 for ; Mon, 20 Sep 2021 16:49:48 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org A439A61284 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nutanix.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvack.org Received: by kanga.kvack.org (Postfix) id 446CB6B0072; Mon, 20 Sep 2021 12:49:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 41D666B0073; Mon, 20 Sep 2021 12:49:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2E558900002; Mon, 20 Sep 2021 12:49:48 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0111.hostedemail.com [216.40.44.111]) by kanga.kvack.org (Postfix) with ESMTP id 206EA6B0072 for ; Mon, 20 Sep 2021 12:49:48 -0400 (EDT) Received: from smtpin14.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id CF2E52488E for ; Mon, 20 Sep 2021 16:49:47 +0000 (UTC) X-FDA: 78608538414.14.CA10BD7 Received: from mx0b-002c1b01.pphosted.com (mx0b-002c1b01.pphosted.com [148.163.155.12]) by imf17.hostedemail.com (Postfix) with ESMTP id 613FBF000394 for ; Mon, 20 Sep 2021 16:49:47 +0000 (UTC) Received: from pps.filterd (m0127844.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 18KGiRHN022052; Mon, 20 Sep 2021 09:49:46 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=proofpoint20171006; bh=Km3l6299uDuw5kyPIBMWN1JlaRiFAbeVVD/i+jKZIwo=; b=hsErk7glftoDRBLpWbWmpBBH9nlvCIOsLv4vu962akVQgubHJy5UB7reoI+ajwZB+p8E nJacZ6d57ZOoQEaHwXY1WzSaiDsot+FIeLAbY/BQOKN7/maTfEDiRsECWBGEh1FfFg5N QHFuFVFcAscfGHtRo5g+rTQrjJph9Yhz9PuLzJTu33zWrR0L3CATpMYdTESS/GMGGNyA V7+ESSfiwbKJ1QS7FzDMth1DE7e4CZfQ51ZgVBQL2ZnOFb8wTrnfrE4HjUjuXDdCJuT7 YTVrNK+g4zpeT1hFuu9CWfLR1TL2ukUWLDkF6/SslfaTBr2FTKkG/dAfkC9CIwRuCXQJ gQ== Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2104.outbound.protection.outlook.com [104.47.55.104]) by mx0b-002c1b01.pphosted.com with ESMTP id 3b6ug38csr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 20 Sep 2021 09:49:46 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cKsMf1qAf2GhPcbGfJrH4eVvv4ZIRWXJHJpiwoJa4Ants+d+Tn3vjSsmZrq5HHR8lNZBJEnYq7OeIGchUZ4b1GqizFFdjWJKKOH4kUA/WnFfpIB6+8rGEyc+VNadJ4KinGYM4zM8PcyKlGIgyX35ajdYZAprxBM/SnkQAyL9EUzhsQ6SWhhZz1dulc+g8rpLP2RZ3KYFD/s+hff20boaBubA8U8EF1cHgonkyKnqL7G+EE8XY4lpTDmO3aHzJJ/pfMKslTPKgtw8xQBcszT4O3FT/6kVGF5OMuUStIeiMzPk5eL87qiLriQRd9UDIqYy5QJH4Tg+esHd8b6bPk+7zw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=Km3l6299uDuw5kyPIBMWN1JlaRiFAbeVVD/i+jKZIwo=; b=FE5zGJi8NR2Jj9ymQ8ywfDG4tCZ8p6g2egSxVBqyPLxMwnrvUyNbFolq8hFq1vfO00iy5iFeGs/zuzKWUg6bTf0YmvSx0hZV3ZJHnme/ELYNgmc+kSoNO6lLWQRCeG5kZhTux7MDWaYhZJ1kG5X4lEICHN3z+azvx2VGeNDM3kwdp6gAqMkGWD3KChvb73FDfRActTSrWj9ySjqWmb16CIBg77KZdUaN1uAV9I5nwaFjSewMPDPWKBvZ0yFXN9yaLbMhDqXmRMAfSugOjJemRnH6FoqWwrxxSFRYjsqt2Pv609ODQTu7MqTci+Pe9MFm3FdzT+PT5j/nQomJCyUEsA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none Received: from DM6PR02MB5578.namprd02.prod.outlook.com (2603:10b6:5:79::13) by DM6PR02MB6953.namprd02.prod.outlook.com (2603:10b6:5:253::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14; Mon, 20 Sep 2021 16:49:45 +0000 Received: from DM6PR02MB5578.namprd02.prod.outlook.com ([fe80::6da5:2da0:efd2:e90e]) by DM6PR02MB5578.namprd02.prod.outlook.com ([fe80::6da5:2da0:efd2:e90e%7]) with mapi id 15.20.4523.018; Mon, 20 Sep 2021 16:49:45 +0000 From: Tiberiu A Georgescu To: akpm@linux-foundation.org, corbet@lwn.net, peterx@redhat.com, david@redhat.com, linux-doc@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: ivan.teterevkov@nutanix.com, florian.schmidt@nutanix.com, carl.waldspurger@nutanix.com, jonathan.davies@nutanix.com, Tiberiu A Georgescu Subject: [PATCH v2 1/1] Documentation: update pagemap with shmem exceptions Date: Mon, 20 Sep 2021 16:49:31 +0000 Message-Id: <20210920164931.175411-2-tiberiu.georgescu@nutanix.com> X-Mailer: git-send-email 2.33.0.363.g4c719308ce In-Reply-To: <20210920164931.175411-1-tiberiu.georgescu@nutanix.com> References: <20210920164931.175411-1-tiberiu.georgescu@nutanix.com> X-ClientProxiedBy: SJ0PR03CA0182.namprd03.prod.outlook.com (2603:10b6:a03:2ef::7) To DM6PR02MB5578.namprd02.prod.outlook.com (2603:10b6:5:79::13) MIME-Version: 1.0 Received: from tiberiu-georgescu.ubvm.nutanix.com (192.146.154.243) by SJ0PR03CA0182.namprd03.prod.outlook.com (2603:10b6:a03:2ef::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14 via Frontend Transport; Mon, 20 Sep 2021 16:49:44 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bfbe1c95-c618-41d9-a660-08d97c56a658 X-MS-TrafficTypeDiagnostic: DM6PR02MB6953: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: x-proofpoint-crosstenant: true X-MS-Oob-TLC-OOBClassifiers: OLM:6790; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Aw5qznX3mQ2dA7m1XZXPfUVj1cBPUTDtsRH7wXF9tU9xy2yHDOYC5zf3GGPEYcGuaec2ymedvLkTPWvyl2vtZliFfb6DT3XY9rDhMhM0AO7UZbDmg/ojmMPk5Jb7flOboqXYEp39f+1DhTLDbMzySJFuQIwR9XyGV028BvEIiStRmQPRcVq2xCUw3dU0xFYjXrJnF0qFeLT6q1CaKzRafyIdYQqgjIjBSI/Ug4YpTHliOhYnDA9qLBtpRvze/JMYgRYXV4rvnZW2KfIkcF3zW+mGU890Qt9xCCTh5p7eou0e/7KlYQfIOpnYW3j3h9BHV7zT+qqx6jhjWQe9VTCA2kbUg4MeEKgS5HaPw/3bleb4HFuyxQ8E9z3pQFyPsqW10csOdKxnqiHRcuQr6NTFvky82bZ7Wvw3qnHNBxxT7XnC2Uu72NZ8lIKv3LEcx83uodcVVpW/wxBrbrbgthNue9OfWFLhGXHawWV33WuMJHL6GJ0HnG7D6jICrxoB+o7miro1gQE2n+FyK194zqvt0m2QR5BDHIMe2ojH3YzR/wM+llv19mEalW08CwbG1+Ak7V3NGRyGYF1nux0UT1mzc7xQzZaFzMLCA5Qf9mERQxvLGkSLHA0cbdCVf4PPbWrcKqoI6YzsDQ9YV2oKViurdUAEwdQX1TWKYoXsbKvUxurctjPjvs3dD+h0Tm3Uczzu5v4g9ZYcQu7aSQcKFe4NwQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR02MB5578.namprd02.prod.outlook.com;PTR:;CAT:NONE;SFS:(396003)(39860400002)(136003)(346002)(376002)(366004)(2906002)(5660300002)(86362001)(66476007)(6486002)(4326008)(36756003)(26005)(38100700002)(316002)(83380400001)(956004)(66946007)(52116002)(2616005)(7696005)(8676002)(38350700002)(107886003)(8936002)(1076003)(186003)(66556008)(6666004)(478600001);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: JQZDlXO4e7bHFVWemJfq40nfBQlZOVxyy9CoaPomKB7gwtTvhJDI6N5Z0HLqn6DKqday2Drm9yJNGecEIZoNvzQVrhd+BWNvqaaI3idnC2jnSvST/SjG0ioa73PdiFwQj6VpqKZsvTlEKLQjlotmI1ixNlJd0eCIyadsphmNTSP6nyTdLbxAW3p9NKWxK+Bv5pPwI0+xRb/UXtOXLPOpYvk72b6iURDluqdKyx5WKPThMambdV5qpQy2ef/AWfmQ1ZLOEV6icWyKV8PCdeBoRTKPbDG4PowF421QJsRPOwBhDB8Lr4jhGW8RYbhMlGRp+/Q8qNpbwFrLmp6OspnomLnv06joiRiKfE0wTgAr4Isok3X4MuuFG8Fp84aiQhjaHmJRFgOdecZyrXRhRQbhpoXUlQL9pFKs+0p5LpcBEKTyxS0ELjbkAaUEehr9TXKzBNamifCo7CMUhgtp6IhqhY2d9aQFu9C+XglRkitGYdPaldL6E7U2l/j3wR0tVNj28i5ohR6zyFHJrYCvHmqxSPnPNZhu8gvN+8wOVvhCZuDVK0618gRuiX+tSnzc1Hi3mMKAGiCz3CplxOcMOYN4v6+XikFS/6d7U6KktTMsi25+MT+GjSLR+8hD5qnKEqgYTzRM22WGDvOwEY7FiCeeWXWwUtgC8bAVA/F+wiObLhA/pncDED5bPSprAvapgWYDhG7fXpyJ+Hm30UHw70rNaF4GF0vcExNstNTIhwzXoIsfW6MskQzfrCb/h1bi/mVXxRAvKxkxFDUwWL1J9f+abrHrfA62/lsXrBT965RKjWyruRQP2fjMP0ib2I0LekMba/nBrxaQlN3rb9MQRmPkle9vosvslGKDeEtakdyo2I/TaH1585x96pdlzcR9a5y7UL7TOmf8wV4BQZ90/Ns7KSpg4r1btbpDA4iS8craHtezlkT2DXkIbpxN02pUq3WlTXGd4koymfT3Hi3o/DADQyeOF5fscXlusPAISOKCJlACmSQPyY0T6dfxo1EQhnR68XmDn/FUjZWvWPD6RfoBH9M1GkGEPwD9yEM3TWNetZ5uzatbXVh3HohHXKV7Ftv08IWzAudE3iZvx+ryoFQrfzSiyAH5YLjF3uWG7tm3zqJAl5obHvNPg8WhrSnTTNScl4SFFxbl/mF7+cbmcRIWLq+gEken/aw0J62puKL0NpQA22Qjm8gqBVt8SnwcHt7oZREnkSfmLTB/3X3+w6MxyeN/jjuJDsUw16bvUMVKJ8lcYCSANhFugFTa6co+jT/l2PxNyv35szB0pA1nR2UB4QmW4ZM+XgHT5zYzEUL+s8J57gy4IUQhGtDQ8Q6VnoV9 X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: bfbe1c95-c618-41d9-a660-08d97c56a658 X-MS-Exchange-CrossTenant-AuthSource: DM6PR02MB5578.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Sep 2021 16:49:45.0734 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: yHdbl+qWK0r33Szh8B0SzRkLRSqxF+aroTO+ZKoH3I4yKWADl7+0oMAGZOgoVymnR4FCbFidmqFFcayMYickHY2cjkD+igAHrVVsG2BP0LM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR02MB6953 X-Proofpoint-GUID: jq_ufPv7KyPZukm1YAQFVTOdmUI_PHG8 X-Proofpoint-ORIG-GUID: jq_ufPv7KyPZukm1YAQFVTOdmUI_PHG8 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.182.1,Aquarius:18.0.790,Hydra:6.0.391,FMLib:17.0.607.475 definitions=2021-09-20_07,2021-09-20_01,2020-04-07_01 X-Proofpoint-Spam-Reason: safe X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 613FBF000394 X-Stat-Signature: mgridk49ofub9enuog1d9ia9otyhs81a Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=nutanix.com header.s=proofpoint20171006 header.b=hsErk7gl; spf=none (imf17.hostedemail.com: domain of tiberiu.georgescu@nutanix.com has no SPF policy when checking 148.163.155.12) smtp.mailfrom=tiberiu.georgescu@nutanix.com; dmarc=pass (policy=none) header.from=nutanix.com X-HE-Tag: 1632156587-916045 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: Mentioning the current missing information in the pagemap and alternatives on how to retrieve it, in case someone stumbles upon unexpected behaviour. Signed-off-by: Tiberiu A Georgescu Reviewed-by: Ivan Teterevkov Reviewed-by: Florian Schmidt Reviewed-by: Carl Waldspurger Reviewed-by: Jonathan Davies Reviewed-by: David Hildenbrand --- Documentation/admin-guide/mm/pagemap.rst | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Documentation/admin-guide/mm/pagemap.rst b/Documentation/admin-guide/mm/pagemap.rst index fb578fbbb76c..ea3f88f3c18d 100644 --- a/Documentation/admin-guide/mm/pagemap.rst +++ b/Documentation/admin-guide/mm/pagemap.rst @@ -196,6 +196,28 @@ you can go through every map in the process, find the PFNs, look those up in kpagecount, and tally up the number of pages that are only referenced once. +Exceptions for Shared Memory +============================ + +Page table entries for shared pages are cleared when the pages are zapped or +swapped out. This makes swapped out pages indistinguishable from never-allocated +ones. + +In kernel space, the swap location can still be retrieved from the page cache. +However, values stored only on the normal PTE get lost irretrievably when the +page is swapped out (i.e. SOFT_DIRTY). + +In user space, whether the page is swapped or none can be deduced with the +lseek system call. For a single page, the algorithm is: + +0. If the pagemap entry of the page has bit 63 (page present) set, the page + is present. +1. Otherwise, get an fd to the file where the page is backed. For anonymous + shared pages, the file can be found in ``/proc/pid/map_files/``. +2. Call lseek with LSEEK_DATA flag and seek to the virtual address of the page + you wish to inspect. If it overshoots the PAGE_SIZE, the page is NONE. +3. Otherwise, the page is in swap. + Other notes ===========