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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id DB80BC021B5 for ; Fri, 21 Feb 2025 17:10:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5E634280019; Fri, 21 Feb 2025 12:10:58 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 5964C280016; Fri, 21 Feb 2025 12:10:58 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 45DBC280019; Fri, 21 Feb 2025 12:10:58 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 28271280016 for ; Fri, 21 Feb 2025 12:10:58 -0500 (EST) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 98E53161B27 for ; Fri, 21 Feb 2025 17:10:57 +0000 (UTC) X-FDA: 83144591754.29.63652A9 Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) by imf06.hostedemail.com (Postfix) with ESMTP id 9CD3A18000D for ; Fri, 21 Feb 2025 17:10:55 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="iu3/dZPT"; spf=pass (imf06.hostedemail.com: domain of kaleshsingh@google.com designates 209.85.214.170 as permitted sender) smtp.mailfrom=kaleshsingh@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740157855; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=v/06cutobvSL148SHg+rXF1/EKMBeC15diJi2NLvYxY=; b=Zu04FdU4FBPKXhztOm6craZYUG/t7bgUdKUaT2e/EyF8jZi6JPHX0sWsqSNS9M5h6YiLlM O2VMPqanbFVVzvbHsiiWmpxLeXF4DRhft7inXXUI+DIz1EWmCxAayiHNj9Hlz11zJ+qFfi H53obqgPXc4Sy1a6MB4NFIqZ2XcV/Fs= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="iu3/dZPT"; spf=pass (imf06.hostedemail.com: domain of kaleshsingh@google.com designates 209.85.214.170 as permitted sender) smtp.mailfrom=kaleshsingh@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740157855; a=rsa-sha256; cv=none; b=rRO/LtwopoCsYCSuaoGhW109f7YdvAzyF3xmnrIczgE3KfQPyk3xZJRaYUgWgrT0O9MzBN HBCtP5IdUKm1DZNGpjjQi6gLSDBOAXMbSmn+yrW5nxxPAEgFl+27r2WjWfFfOLKshadL0e C78lThZqBxQB1c1ctQNzyPocZ9I2e1U= Received: by mail-pl1-f170.google.com with SMTP id d9443c01a7336-22117c396baso183305ad.1 for ; Fri, 21 Feb 2025 09:10:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1740157854; x=1740762654; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=v/06cutobvSL148SHg+rXF1/EKMBeC15diJi2NLvYxY=; b=iu3/dZPT1YbJVzWtgWQ76FU9Ail1Jr2GP8ABhu3XCa2F6aFh//4z/RRDmcQefCp6r4 cyI8c6dHw+aJONRMv1G60ty52qI7Es4QNqMfIIaI/hKuRtgTAcCBFyqjOvv6ETzdxvHN U+s9AbZqxY0tRfUDXawqW5u2Ao2Gcu0u3ZjqlJPykfg22DR4Md3+4AEIiz875Co8qOZw Cz3G3vykuOnLMB//8xsVm5GEVqGGonDnU3OTyor1C31g2A+0QWH0ef1xnkOkGaEYX6l8 QQwjOZEMdoNyDyciNPjpt5kMkeLwwtVg7PmXYxfsi3eTCDcJxf9PXWpVBRmOYkK1lX3O i59g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740157854; x=1740762654; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=v/06cutobvSL148SHg+rXF1/EKMBeC15diJi2NLvYxY=; b=nMHSIfH6rJd5jNjmhHTdlrSrpofFooPOSr7FLD3JczLFOr5zHF8TU4T4ChEezK1Adq ePc43mdIEq8O8HFprSFHVyTpScUlC7K0wqfJAWeKKjeupy+nVFWIv8UoG6zohgof1UXJ C/OzpT02mm18r19EQxsJ4Lr/4R+LcZDRopOhI+Tcl+6+Tc3VjL4fGQ4IqRDtTrpDpcs5 uQ9Ts9x7r/PXbC46TVjKl196pvTljS82TEZmWh6gbzcBEh1Rkh7CUjWvC5KPAJEVIk1S l9ayXrp4qDeSGDslwVvn7rvtmgEpQGEhZ7jqMHDJpVPeQpuD79LnUvzEgPZ5tohJnsJ3 9myg== X-Forwarded-Encrypted: i=1; AJvYcCXUdLdwOOGj9leBmg65P+PtHNI4l0dsH0cxo5WDw8AmuLRff7+DCHm0Y+VCjYCDUvDyKDy37guHKQ==@kvack.org X-Gm-Message-State: AOJu0YyZ0nfu3Nyhj3cXqqoE8gLGJenGx2MPFyfxpVexy9DLV/El/Uvt vzeLHtCAYXmJ4rwtIwYF0+ZJp65ol3CZVTIWartT8H7lcO3IrR7NIY/coRP6B/5U85odEwZR8Ov 2TORjHrGKNo2yLUghR6GgM2meKLm+eJQXk99m X-Gm-Gg: ASbGncticZJZGK+vaPoYIHnv8TBQwhvWg/TmkzHwEUIi1uQes2JT4m+tdwTPblpjr98 CNwuXCjZz9Fq1y937TkP8D7W0L9U5GOGyIo6N8EqHMfUhMuGDxc+oOs1RgsCW+/7g7xKsx8yhXg z+/leLVALXrQnlQAH/l26sj91+ZbfMayU2/gKc938B X-Google-Smtp-Source: AGHT+IGldTX8YPxNiHq5GCgGriPX+2NeZhhwxRgXaqAzM2MGUPniBZmpaA4CLGFWvvlR3adETlTMpcRMFGLlc6gV27Q= X-Received: by 2002:a17:902:e5c6:b0:215:8723:42d1 with SMTP id d9443c01a7336-221a0417e96mr2978475ad.10.1740157854187; Fri, 21 Feb 2025 09:10:54 -0800 (PST) MIME-Version: 1.0 References: <521d99c08b975fb06a1e7201e971cc24d68196d1.1740139449.git.lorenzo.stoakes@oracle.com> In-Reply-To: <521d99c08b975fb06a1e7201e971cc24d68196d1.1740139449.git.lorenzo.stoakes@oracle.com> From: Kalesh Singh Date: Fri, 21 Feb 2025 09:10:42 -0800 X-Gm-Features: AWEUYZnbM5nA9kkqZnhzwGTEHPz7kvvIuks0mem2iJOt7iRv8etO859ySZMIHY4 Message-ID: Subject: Re: [PATCH 1/2] fs/proc/task_mmu: add guard region bit to pagemap To: Lorenzo Stoakes Cc: Andrew Morton , Jonathan Corbet , Shuah Khan , David Hildenbrand , Suren Baghdasaryan , "Liam R . Howlett" , Matthew Wilcox , Vlastimil Babka , "Paul E . McKenney" , Jann Horn , Juan Yescas , linux-mm@kvack.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-api@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 9CD3A18000D X-Stat-Signature: 6xow8jjd47mwru3t14gh3w9qjb3akn4u X-HE-Tag: 1740157855-932682 X-HE-Meta: U2FsdGVkX1+sY45ZtSnsGrvev49ua2llTZFxh1f/rW5bNlghvuXyWtqlBJRFGB4LErPAmB7UUVqhSe47yDpMvU2USyR1Mpi42aD8OHQ047R7R9GlLCH7nkSYLViovwEfdDpDbFYJRvoAr8zaYDO0W326CkwBq4djqqP6YVDlOz7v56VISfv6wuWEgn0md2Ou2M1ni1k4t0T4tRmn8/qjaGz9djUIKXdvAjix0bS/HOew223kvji1smXRmhRzoq51Q9WR7UK/rZcC4JhAQD/ug72hJ2DEPbwcTLTX+oqCF2fiyxNip4vSGkl5zvlVoU7MWil6HHfKy2PF98SgHg7UwbgYNXzWskedVjhzb1T7lMcH72EJsXWZ8KkMacEzQCzWxWD51fUp1EsRrGnr0sgPWYlDyYqgQJlbScQ4K/Gn6ocUH10v/pCqTJslhdJQ3kJwQPXiiyaPOadjbQOcIAjQhsF1ag/K4Idqrh0lxvIMJqqfyliCPXBjXkZtVXNyEJmqZp2qtoF/vMYo/wF2/wwiyzLv1gdRoQx0MZWtAmZXlwJUFH+0McNBrE3RXcT1yQd8MSOZw3G6kpTpe3QcbJICrtm++yMyrjcSGMBcEqwDRoLjNBwXEdyzMcoYqIp3YrohgkDnGgJ1K3DeMf77yPSFy0hjjXu96bikueRlJexcj5ktJnnMGD7dV5WRTkfRo/BGA/DkdvS4OhMvObXt3aZmu6nGJ5NETNGcB4puuDw82YuVwe7C0hvRMmSuS06wduwQL9rRFF6T191gxICPKAMEZYc5C6K09toOdyqf3g+d3v/lzNJgM58bK1NEE5kgpJpNYt2ifP174ZwoOrwqDYVYB+mManA6TbRtFqV066cwMVyvoy05T0RZXP2g78GgBJGadMJBaw6Z2W6+r5B73WAsASuSRsCPUzuyUkGJRButD0t61G4fApEg1LkkmazjTsRUM1pjCqH9HDDzsWZWxTZ dfveNOrB 1N0isiqut+xPzqx8j+Xm7hbAptZ5MqNgIhy/qkrPmXj0kO3anCY0vxVM2yK2r49deaOM8P8mh+b/SyguE87DYHw2XSt5URsqC2UFVaO6rZgoL10GZqWGfoWerVPKrS2OLxnhTbcTBfJ6R8V3tCoyTUtBio1X3RPe1F0LMHMgWwGJfAM8TSBZNZ2qrigcOVdP6GP+xFzyty84KuEi3jeJgPuCu/C6PNDjA/+h1vV9F3NocIhgxFBVM6t/awq/jB7GIP3k1d5NI2+F69QVA3slksLyJgri8YlJ0o9Os X-Bogosity: Ham, tests=bogofilter, spamicity=0.000003, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Fri, Feb 21, 2025 at 4:05=E2=80=AFAM Lorenzo Stoakes wrote: > > Currently there is no means by which users can determine whether a given > page in memory is in fact a guard region, that is having had the > MADV_GUARD_INSTALL madvise() flag applied to it. > > This is intentional, as to provide this information in VMA metadata would > contradict the intent of the feature (providing a means to change fault > behaviour at a page table level rather than a VMA level), and would requi= re > VMA metadata operations to scan page tables, which is unacceptable. > > In many cases, users have no need to reflect and determine what regions > have been designated guard regions, as it is the user who has established > them in the first place. > > But in some instances, such as monitoring software, or software that reli= es > upon being able to ascertain the nature of mappings within a remote proce= ss > for instance, it becomes useful to be able to determine which pages have > the guard region marker applied. > > This patch makes use of an unused pagemap bit (58) to provide this > information. > > This patch updates the documentation at the same time as making the chang= e > such that the implementation of the feature and the documentation of it a= re > tied together. > > Signed-off-by: Lorenzo Stoakes > --- > Documentation/admin-guide/mm/pagemap.rst | 3 ++- > fs/proc/task_mmu.c | 6 +++++- > 2 files changed, 7 insertions(+), 2 deletions(-) > > diff --git a/Documentation/admin-guide/mm/pagemap.rst b/Documentation/adm= in-guide/mm/pagemap.rst > index caba0f52dd36..a297e824f990 100644 > --- a/Documentation/admin-guide/mm/pagemap.rst > +++ b/Documentation/admin-guide/mm/pagemap.rst > @@ -21,7 +21,8 @@ There are four components to pagemap: > * Bit 56 page exclusively mapped (since 4.2) > * Bit 57 pte is uffd-wp write-protected (since 5.13) (see > Documentation/admin-guide/mm/userfaultfd.rst) > - * Bits 58-60 zero > + * Bit 58 pte is a guard region (since 6.15) (see madvise (2) man= page) Should this be 6.14 ? Other than that: Reviewed-by: Kalesh Singh Thanks, Kalesh > + * Bits 59-60 zero > * Bit 61 page is file-page or shared-anon (since 3.5) > * Bit 62 page swapped > * Bit 63 page present > diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c > index f02cd362309a..c17615e21a5d 100644 > --- a/fs/proc/task_mmu.c > +++ b/fs/proc/task_mmu.c > @@ -1632,6 +1632,7 @@ struct pagemapread { > #define PM_SOFT_DIRTY BIT_ULL(55) > #define PM_MMAP_EXCLUSIVE BIT_ULL(56) > #define PM_UFFD_WP BIT_ULL(57) > +#define PM_GUARD_REGION BIT_ULL(58) > #define PM_FILE BIT_ULL(61) > #define PM_SWAP BIT_ULL(62) > #define PM_PRESENT BIT_ULL(63) > @@ -1732,6 +1733,8 @@ static pagemap_entry_t pte_to_pagemap_entry(struct = pagemapread *pm, > page =3D pfn_swap_entry_to_page(entry); > if (pte_marker_entry_uffd_wp(entry)) > flags |=3D PM_UFFD_WP; > + if (is_guard_swp_entry(entry)) > + flags |=3D PM_GUARD_REGION; > } > > if (page) { > @@ -1931,7 +1934,8 @@ static const struct mm_walk_ops pagemap_ops =3D { > * Bit 55 pte is soft-dirty (see Documentation/admin-guide/mm/soft-d= irty.rst) > * Bit 56 page exclusively mapped > * Bit 57 pte is uffd-wp write-protected > - * Bits 58-60 zero > + * Bit 58 pte is a guard region > + * Bits 59-60 zero > * Bit 61 page is file-page or shared-anon > * Bit 62 page swapped > * Bit 63 page present > -- > 2.48.1 >