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 8C0E6C04A6A for ; Thu, 27 Jul 2023 11:40:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0BC166B0072; Thu, 27 Jul 2023 07:40:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 06C8E6B0074; Thu, 27 Jul 2023 07:40:46 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E76926B0075; Thu, 27 Jul 2023 07:40:45 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id D6AAB6B0072 for ; Thu, 27 Jul 2023 07:40:45 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id A70BEA0FF2 for ; Thu, 27 Jul 2023 11:40:45 +0000 (UTC) X-FDA: 81057199650.22.DB68ED4 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) by imf30.hostedemail.com (Postfix) with ESMTP id BE1C580012 for ; Thu, 27 Jul 2023 11:40:43 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=Hkxkwm02; spf=pass (imf30.hostedemail.com: domain of emmir@google.com designates 209.85.128.45 as permitted sender) smtp.mailfrom=emmir@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=1690458043; 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=Ph+T+bMJj5qPDZ5PD7H/7htn5wjLlAl0f0VpKLrvh6M=; b=5b8lAnl1v9Xw7tRptiVeDHQmSh9hG2ioisMYsyDMDsQqNaD0PnbALkFsq9voaZZIOcximC kP/flBM5pqHkzGU69WFvSayLJdKWaumMtijMIqByLUG0DwzZdhETordyQ8ZdZj29dfnPpa +0Nt46AxJzNo4vJ2oQtUzzk+GNM8hWE= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690458043; a=rsa-sha256; cv=none; b=7sFa1/GimaOLnmpCdEEjP99LgSLuabpT4mbPomNVmNz6VYWaLUnY+OfBX+zVpxLbd1H1jZ X+nAT/GLkhkrvo+3zGFIcc8JROe/s58PJ2ysPsRy2LGVQHS77RXeMlFomSHdL1I9Vl/ukT vqT5etDY1s7qk5PlY+SSziPG9VRAogA= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=Hkxkwm02; spf=pass (imf30.hostedemail.com: domain of emmir@google.com designates 209.85.128.45 as permitted sender) smtp.mailfrom=emmir@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-3fbd33a1819so57875e9.1 for ; Thu, 27 Jul 2023 04:40:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1690458042; x=1691062842; 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=Ph+T+bMJj5qPDZ5PD7H/7htn5wjLlAl0f0VpKLrvh6M=; b=Hkxkwm02Od+vXqQN98JCAu61H1aNjPJs2zWZs6eEprDoT7GUpW3cvPh9/GCBEoiWJv ADkiPRNFo1/2PKKMmAndwoKPh+rjvAOwLlEtuyZbaJG90u2GOk0cLoyPhX0xwxiJCbKX pHV3eJRPsqxXCpiBCKqJN+8YmH8osH4l2sh+1Fd9XsFf0M+vAI4G+nrK0VgrDEn+ECtu rxL+CHHQ8HWUye2yzC54EOszbNX/VdBOEmWTBMDNwDoZo2E6RlJWqbZtyn0bcxfmTgV0 542RVvI83Yr0K/WopxZlNaETzSn8ELkPQaUHdiTt5xg0oF22UaCJy11CwE66aV9yhu/5 3o5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690458042; x=1691062842; 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=Ph+T+bMJj5qPDZ5PD7H/7htn5wjLlAl0f0VpKLrvh6M=; b=AEfCrnJM+23vcW8lb439GPpRGlV7PZwcMokiyJeBt+N0PL4Awl9mIcPA5KBRFqAg47 Hs0Fdv97q9BVkXQT+YeP73ivOdMZS3Z73zngnMr/LQteeTOGkL0Jve7OucMkCwJ9Bb78 Uhk9vDhS53bpSZYd9druQJduouM4l3C9LoyLutDNuHNzgwW5rns2C5Tmdc60S4brdLPi e3RgTRna4hhF9oIu0AdZ4V0idg67kl7FWNgFwdysMtl8+4Bv9cqA1cgSngO24Oxhbsm4 gYfuHOOTFEWZxt/0UpIFZ/4lOpmxldIrFI7K6RrwEJOzHH77ez1TYA14rWgeUeW8Y4NS ZTxA== X-Gm-Message-State: ABy/qLbfug8K0ym48V0YOLbWtP6CCaSs1xPbhDnXqRCuY49zuB31X73I 2cpR2jImtBy0TENqna5pGSbx+uFIcCKylKZwsOdN9Q== X-Google-Smtp-Source: APBJJlGwCp+6u1RpzRTossFaboM1iyX+LT63lVnVimEXhyrxu43sILR/KnygiHidSJUVZBmyzkf2aC+fg1HsHe2Aw94= X-Received: by 2002:a05:600c:6023:b0:3fd:e15:6d5 with SMTP id az35-20020a05600c602300b003fd0e1506d5mr94340wmb.2.1690458042138; Thu, 27 Jul 2023 04:40:42 -0700 (PDT) MIME-Version: 1.0 References: <20230727093637.1262110-1-usama.anjum@collabora.com> <20230727093637.1262110-3-usama.anjum@collabora.com> In-Reply-To: <20230727093637.1262110-3-usama.anjum@collabora.com> From: =?UTF-8?B?TWljaGHFgiBNaXJvc8WCYXc=?= Date: Thu, 27 Jul 2023 13:40:30 +0200 Message-ID: Subject: Re: [PATCH v26 2/5] fs/proc/task_mmu: Implement IOCTL to get and optionally clear info about PTEs To: Muhammad Usama Anjum Cc: Peter Xu , David Hildenbrand , Andrew Morton , Andrei Vagin , Danylo Mocherniuk , Paul Gofman , Cyrill Gorcunov , Mike Rapoport , Nadav Amit , Alexander Viro , Shuah Khan , Christian Brauner , Yang Shi , Vlastimil Babka , "Liam R . Howlett" , Yun Zhou , Suren Baghdasaryan , Alex Sierra , Matthew Wilcox , Pasha Tatashin , Axel Rasmussen , "Gustavo A . R . Silva" , Dan Williams , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, Greg KH , kernel@collabora.com, =?UTF-8?B?TWljaGHFgiBNaXJvc8WCYXc=?= Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: rwermhz9hj8djy6zc1b1iky3atzpn5ta X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: BE1C580012 X-Rspam-User: X-HE-Tag: 1690458043-211010 X-HE-Meta: U2FsdGVkX18CZz4GbaA6F+rS6pIh4jIzYC0RM4qBbei9NlsD91AXRrqSXTrwmSvy9mVk/9LPdwyGMNCJYko97JBd1AohqZXlRemaxUHAqMRus12sFnTKc66FDCLBN0Ek0z7dnEGdhjIlCnCtX99GLcKHuqf1lOUToFDEcnfc08ix8ddaNUCGvrSRAo/Q+R9iBubVO14GzVTgb2jyLT5u8mauev67RJnFcjjlFaeg85L1mooqskJaUbJ2FDNSXCS9+vPPymHiG2A5R22QforX10ieFpPw6gImTDZ6C+05YDjAluogFF37vmdt8ZvzkntF2A+CsnKoomLeN3YjI+6nu+8jt6K4cb+tfDzhZYM2S9xEvS5dEu4o1wXIHj8YEpO7cprTO8WUgRn4ZhM4tSz7ShPC/3sBFjEwZscCNgNpfONTMtzMj7PkxqeHC/DSn8X5LvaF9l6sl+/X+S8Geyx3MdhHSz23iozI2RGW2Z3ejuhuzs1I7TLVLUurJa8/eVUf7I1aJkviNW1793bTkKkfdfgiph8kPWmAVx+vhv/IxysbS3cTZyRooqBs40CGeqNBBKG3X6HpcheAPhkBQeNTrGkig24fUYV84yoSmONv9UyfaCU1ionkRY3crVR3MhCYKmm2a19Omven/QKx+MUGp+EnNVhUcczIOEL+pWb8sejdySrhtVCz7K4f9JZpeUpKAJZ2kx1epQiAHsM54q7Ku1J0Y0JaWPEb33eZvPrh5xXelu9gLrOJtBHoaAFVt7h17Id2nH0yVFxzNli3piJl1zNkskKOtPmlB/FIYDHMR/9UzRuxmDRRRYEivPy4kTDafQ7pWNTCJSSsIDQKCuqsr4E+ZGyg2ocqPlwW+u4SsN1G/8XNig7ClVr8FHbiqS2twLZ26FKAc6nxb4umYUnwEpP22HoZGn5NJj3g7wuNd7gMLDOsqmYGVppyK19sPAJcJp15RbC98fGaOIeUeUP 4oNjqyB1 O/KjX/oaVVP7uMdqhqm02xGPEIPzPKi8dFo213iF1a9LtB8NElCIbCQoIHmDrRMEGKokYJgxv5ahdzSJa6Jo0SSZ69yjzjFv/kd+bLD6K6z5tFzhO9KxwsnaIvXpdrsC8LGIiNDxvUC5rS1LhGDx+yKVeajESsnW0Kpa8F770CL9qDfjWvOo0shE5cGq4uO0Zyw/UOJGwVwcOWLwYXoXF6rC3PcCe9DAYFaIfTEZ7jKu3bo0WqH8AldUofhAG7PdhlgnKlN8GjGZd7VA1/L2aKqUHdSmzihIR7pJ3nlOdPlhBso0X0erxboLUJtSszvWjh5oSY3fU8njOoByUOO9X4AZX4eb/eBfsh9xOADv/CkIAKReX5hFHncUHerThe/0Sgv+0 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 Thu, 27 Jul 2023 at 11:37, Muhammad Usama Anjum wrote: > This IOCTL, PAGEMAP_SCAN on pagemap file can be used to get and/or clear > the info about page table entries. The following operations are supported > in this ioctl: > - Get the information if the pages have Async Write-Protection enabled > (``PAGE_IS_WPALLOWED``), have been written to (``PAGE_IS_WRITTEN``), fi= le > mapped (``PAGE_IS_FILE``), present (``PAGE_IS_PRESENT``), swapped > (``PAGE_IS_SWAPPED``) or page has pfn zero (``PAGE_IS_PFNZERO``). > - Find pages which have been written to and/or write protect > (atomic ``PM_SCAN_WP_MATCHING + PM_SCAN_CHECK_WPASYNC``) the pages > atomically. The (``PM_SCAN_WP_MATCHING``) is used to WP the matched > pages. The (``PM_SCAN_CHECK_WPASYNC``) aborts the operation if > non-Async-Write-Protected pages are found. Get is automatically perform= ed > if output buffer is specified. > > This IOCTL can be extended to get information about more PTE bits. The > entire address range passed by user [start, end) is scanned until either > the user provided buffer is full or max_pages have been found. > > Reviewed-by: Andrei Vagin > Reviewed-by: Micha=C5=82 Miros=C5=82aw > Signed-off-by: Micha=C5=82 Miros=C5=82aw > Signed-off-by: Muhammad Usama Anjum Thanks for all the work! Small request below. > --- a/fs/proc/task_mmu.c > +++ b/fs/proc/task_mmu.c [...] > +#ifdef CONFIG_TRANSPARENT_HUGEPAGE > +static unsigned long pagemap_thp_category(pmd_t pmd) > +{ > + unsigned long categories =3D 0; > + > + if (pmd_present(pmd)) { > + categories |=3D PAGE_IS_PRESENT; > + if (!pmd_uffd_wp(pmd)) > + categories |=3D PAGE_IS_WRITTEN; > + if (is_zero_pfn(pmd_pfn(pmd))) > + categories |=3D PAGE_IS_PFNZERO; > + } else if (is_swap_pmd(pmd)) { > + categories |=3D PAGE_IS_SWAPPED; > + if (!pmd_swp_uffd_wp(pmd)) > + categories |=3D PAGE_IS_WRITTEN; > + } > + > + return categories; > +} [...] > +#endif /* CONFIG_TRANSPARENT_HUGEPAGE */ > + > +#ifdef CONFIG_HUGETLB_PAGE > +static unsigned long pagemap_hugetlb_category(pte_t pte) > +{ > + unsigned long categories =3D 0; > + > + if (pte_present(pte)) { > + categories |=3D PAGE_IS_PRESENT; > + if (!huge_pte_uffd_wp(pte)) > + categories |=3D PAGE_IS_WRITTEN; > + if (!PageAnon(pte_page(pte))) > + categories |=3D PAGE_IS_FILE; > + if (is_zero_pfn(pte_pfn(pte))) > + categories |=3D PAGE_IS_PFNZERO; > + } else if (is_swap_pte(pte)) { > + categories |=3D PAGE_IS_SWAPPED; > + if (!pte_swp_uffd_wp_any(pte)) > + categories |=3D PAGE_IS_WRITTEN; > + } > + > + return categories; > +} Could you add PAGE_IS_HUGE for THP and HugeTLB pages? This would help maintaining checkpointed process'es page sizes by CRIU when THP is used. Best Regards Micha=C5=82 Miros=C5=82aw