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 8242EC77B7C for ; Wed, 25 Jun 2025 21:53:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 20E328D0001; Wed, 25 Jun 2025 17:53:16 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1BECE6B00AD; Wed, 25 Jun 2025 17:53:16 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0AE758D0001; Wed, 25 Jun 2025 17:53:16 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id EE1586B00A7 for ; Wed, 25 Jun 2025 17:53:15 -0400 (EDT) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 9EC9CC077A for ; Wed, 25 Jun 2025 21:53:15 +0000 (UTC) X-FDA: 83595274350.03.8639008 Received: from mail-yw1-f182.google.com (mail-yw1-f182.google.com [209.85.128.182]) by imf28.hostedemail.com (Postfix) with ESMTP id CA69EC0010 for ; Wed, 25 Jun 2025 21:53:13 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=oCrLwtVN; spf=pass (imf28.hostedemail.com: domain of jthoughton@google.com designates 209.85.128.182 as permitted sender) smtp.mailfrom=jthoughton@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=1750888393; 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=qWi7VS68JCJiJ4n7nNp7sCBvx7AXIU3WxIj8KvmDdzs=; b=D7aMQAAC2a1/6PRXTeb+KgoS8bWnfoMcbGmeHPrlc7DG1yaSZOeylPu0xzvuDt53O6UByk RZ0oIKZjTPUARet47nGUR/FqJ/dHzR8qj3AYvWttZ6fxJaSoPyVfbYP28mqnS+BQ/g0A71 3lrxs/aL7g3BKMc59LeRYDKknhlDkkM= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1750888393; a=rsa-sha256; cv=none; b=74SRP1lVjHvR6mZ1QYRyVtDoiQFDc8ZiR99LpBlYh7umXH+1KS1KYNZalLHXfpGkbOahCW xEvt9QD1gd7fcnlyez4D7Ib7G4S7cma+F/3tKLarwlUovwTUR+1W1LsJv0al5VtVv3Wlm8 wsT7ukXT2fIVk4TE5fl3Nu8NjprwrGU= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=oCrLwtVN; spf=pass (imf28.hostedemail.com: domain of jthoughton@google.com designates 209.85.128.182 as permitted sender) smtp.mailfrom=jthoughton@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-yw1-f182.google.com with SMTP id 00721157ae682-70e302191a3so4143877b3.2 for ; Wed, 25 Jun 2025 14:53:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1750888393; x=1751493193; 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=qWi7VS68JCJiJ4n7nNp7sCBvx7AXIU3WxIj8KvmDdzs=; b=oCrLwtVNF2phUC2YxhEmdin8lhdOBjM1HHxSUBZT6u4gTQClfO4EAHPCKD58xkB2vz kZidQ49SQxe6Gu0HoyYb7zB3TMm88OIKkvrhs/x7dev6z00sVrore957TXzPYHz3ETw4 uoqZjq2mF4Pt25Z6sPKYsjd9sqI5ZunUCPCBp+eWJkxO1iDZQcdtXkjZumk58NchYSrC ryDhp51cbbTqLYvSTj5bx7F1MrTDOB2ilR9Ra5nM/+1WGiVqAaqbPXC+F6A3jbOPsGi4 4sVmKrGD4mF8NsOKPGHFHlCUVJ+J+9bM/cyyU2RC9VwB+iYFKbVHmuJ1H4hesKh2DitB ld8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750888393; x=1751493193; 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=qWi7VS68JCJiJ4n7nNp7sCBvx7AXIU3WxIj8KvmDdzs=; b=rBUy1h3+tXGoz50ofbaZvKQWwbE34r+ovh7Yw6uqWpYb+JHnQq/TNZR3EzTi1PGDDf sQdQ/haHh43vUTn/8KOb+BfSMHTpaJHnJ/d6vXgpjoaKFNl0qIgLs6UBDIICFbP/IhwO TWonVbfYRxwtPfxAlQlNCsuHXZ8myPIVqvaryB4DFaFMGFb3au77mIVsJa0mq8XXNpoe +ETsVMjtqfO9j0x6e2u3TZI6DUwTwweU8U65F57rwykX1y6vashmSJZPF5S2WyAu/8t0 0ROhVHuGz7PYILVDg5xGnTVrs+Xn1J2eOsvJVcHa9jS4GFaCRGDSFGJYE5rvTnP4KqJA D35A== X-Gm-Message-State: AOJu0YzpE294i6m6w2cpwlMwiORrc8rh4rsmOm4nbOBSr1cWeP2ac7MS ofmaK4zrDJ6CaDNbO1FEhD4gBrKmeLXQPi2Pv2pJ6e78jPrnJFkhpDtWcer3JAgobqWiUbPFqmR p7dVGosoC84EIP1pmSm9+hQzNOHSlkUkuhx6WRXrd X-Gm-Gg: ASbGncuvoyOLSDQjTNW/sy56sbhhr6u418MVCTAX5xQv/B5TM1u4YqwSXH3IXYStBTP bqm8LXZmTiuiflz3IqJgplegA4fttWAxfkO9P6m/pcAPA/T1FS6YevcYdNxbgpFWOz9DBomQzhB eUi0ljTSLLmmZfc/OQT49c3x5b1HLTKvhh7po2LnSMOKRcfbWstW2P8wTsfPh8mCy6FdM4GRBA X-Google-Smtp-Source: AGHT+IEE+CqH2S/1hl8wpZ9lOiJWAvunz/7I5rI37rX3CMwOVbWSsZDph+Usnj4r6Sb+yD24axNzgewxGSCafBX1EV0= X-Received: by 2002:a05:690c:9a93:b0:712:36f3:f6d7 with SMTP id 00721157ae682-715087b2b59mr30192347b3.32.1750888392659; Wed, 25 Jun 2025 14:53:12 -0700 (PDT) MIME-Version: 1.0 References: <20250620190342.1780170-1-peterx@redhat.com> <20250620190342.1780170-5-peterx@redhat.com> In-Reply-To: From: James Houghton Date: Wed, 25 Jun 2025 14:52:36 -0700 X-Gm-Features: Ac12FXx9P-x9q79zO7IJW5v6WPEy_7cefnTsv5aEQX3ADRGfEBKFHjCxHQFCpRc Message-ID: Subject: Re: [PATCH 4/4] mm: Apply vm_uffd_ops API to core mm To: Peter Xu Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Nikita Kalyazin , Hugh Dickins , Oscar Salvador , Michal Hocko , David Hildenbrand , Muchun Song , Andrea Arcangeli , Ujwal Kundur , Suren Baghdasaryan , Andrew Morton , Vlastimil Babka , "Liam R . Howlett" , Mike Rapoport , Lorenzo Stoakes , Axel Rasmussen Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: CA69EC0010 X-Stat-Signature: f595tn5tguyjiie5jb4dhzewzjygbp35 X-Rspam-User: X-HE-Tag: 1750888393-152637 X-HE-Meta: U2FsdGVkX18+4s9moOvNWX4GiZgv7XLAxIA/WLFwYzebGwAjwa2L9eIwV4mpnXnfftx/HjmpphNiOXyBVmHOngSsV8cQ8U/PkBD7VrTtVJeS4xCoT7LbNto+8ECQBAUzNaGGCxTZi3leupEHNPDG3V1iJUvZp2nWf3Dxovclsbx/eY+4BjTbUmHniKbLZlp9Ck57vB/jUWMD9na6uWBI5xOyzgqxoNAkb5pfdw4FMjSfzBbyiQL8QfEmNR+HJEgl3IwIoYF9c5osH+esWQiI2LBZX94HV4ikZAN7z2Ue43LdQ3nHslVpJO+I6rqeN8FSSOsUXnwOLsTn4PfrI14jo01koGuLOj4orhTMTYGMa9AEiOcrSL7yWX0pXvPm6BZUrgkXo+9bnMtS6FPbQXXEPfifbnHqVSR4hw+5nKAyLbuHlSoyBeF1tg6tcRsjU4C1C3l/0twDSpLMbqTXuK+gSmLuNyikGHSM2b7lJt4AzK+nd6s0uMOCPNmJHnStpkM7YhKhSGhcMI9flSCV0+q0Fd/nZsLUP0W7EM2mbVkJDbrS+YfAHuiOZoYDciomXqWroLmV0bJSX5AlAF+S7q/ejk2Yx+8SePVusX7iqsvONC8bMQXSluSoMzpFShNpcVgfE9BEjoh4YeynBPKlA2VkcFNfubAV0BcAN5qr5HmclB9cFUPqaL6tVavGsuyc1mBXXur/A2QkHyweg/7YNvM2CtRR6SU6XGTCnrZXNqz8rFAqF2N+jyYB9qF2Jgj5HdNaEk/P+fuKT91Ks5QsXLup+cIlte1TjEMFITV7Ww0b062bfzp5A208VrQEwqIZLJIKbGQO9Y/dTEt1vjw7MaBOmSEEIHFvP9WNZuNYS4/TSBP59TJqEFR+1l6PLsm5l/bT1Ajwd2qstJEKeJHsnlxFgzKDj37YmrF2adTk6T2KtyhLxvNLViFhqIYTEM1yeVub9RKiGQL7Vj1k/QcUpRX PF6EhEtG Qo/p3XlXxlHqcyk8uD/3H7U+KcSxRW4zp1E10hsvpc7LVruPWo8zsoAxjc4C+UHrK+rz7Yaq23oqSP3r8UI+IZrg5s6lP+mwqtWtS8jNFYjSzQVGQv9MC8qjLAFER0mSJ4x3u6KIYclFcag2ya3Kfu3xfICZt3s2beLtqgkSRAeX6EiLe4jdpB3o9jN+ww1hAEXRL7xkv7dJeRcJ/NXZkN4M6UxhEsbuLDdI019bFSeSbuiWNPdusp4x0mfeSyI16Nrk8sKw44fMa9sIDb0oE6aP4fJmduOnsTT0WKn+1Hl65IHTzJZcN7dnMqpPE8kricSh08FWMJVmNMgrEZWccqKgYMdIz361mlsLOLnsBs2AnIf8= 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: List-Subscribe: List-Unsubscribe: On Wed, Jun 25, 2025 at 2:21=E2=80=AFPM Peter Xu wrote: > > On Wed, Jun 25, 2025 at 01:31:49PM -0700, James Houghton wrote: > > > -static inline bool vma_can_userfault(struct vm_area_struct *vma, > > > - unsigned long vm_flags, > > > - bool wp_async) > > > +static inline const vm_uffd_ops *vma_get_uffd_ops(struct vm_area_str= uct *vma) > > > { > > > - vm_flags &=3D __VM_UFFD_FLAGS; > > > - > > > - if (vma->vm_flags & VM_DROPPABLE) > > > - return false; > > > - > > > - if ((vm_flags & VM_UFFD_MINOR) && > > > - (!is_vm_hugetlb_page(vma) && !vma_is_shmem(vma))) > > > - return false; > > > - > > > - /* > > > - * If wp async enabled, and WP is the only mode enabled, allo= w any > > > - * memory type. > > > - */ > > > - if (wp_async && (vm_flags =3D=3D VM_UFFD_WP)) > > > - return true; > > > - > > > -#ifndef CONFIG_PTE_MARKER_UFFD_WP > > > - /* > > > - * If user requested uffd-wp but not enabled pte markers for > > > - * uffd-wp, then shmem & hugetlbfs are not supported but only > > > - * anonymous. > > > - */ > > > - if ((vm_flags & VM_UFFD_WP) && !vma_is_anonymous(vma)) > > > - return false; > > > -#endif > > > > Hi Peter, > > > > Thanks for this cleanup! > > > > It looks like the above two checks, the wp-async one and the PTE > > marker check, have been reordered in this patch. Does this result in a > > functional difference? > > > > The rest of this series looks fine to me. :) > > Thanks for the very careful review, James! > > Yes that's a small tweak I did when moving. I don't expect to have any > functional change. Maybe I should at least mention that in the commit lo= g. Yeah if you could leave a small explanation, like what you have below, in the commit log, that would be good. :) > > Here I did the movement because fundamentally wp_async depends on the pte > markers, so it may be slightly more intuitive to check pte markers first, > rejecting any form of file wr-protect traps. Otherwise it may looks like > we could return the true for wp_async=3D=3Dtrue too early. In reality II= UC it > can't happen. > > For example, currently userfaultfd_api() has: > > #ifndef CONFIG_PTE_MARKER_UFFD_WP > uffdio_api.features &=3D ~UFFD_FEATURE_WP_HUGETLBFS_SHMEM; > uffdio_api.features &=3D ~UFFD_FEATURE_WP_UNPOPULATED; > uffdio_api.features &=3D ~UFFD_FEATURE_WP_ASYNC; > #endif Ah, I see, thanks! > So when wp_async can be true above, pte markers must be compiled.. IOW, > above code clip should work identically with below lines: > > #ifdef CONFIG_PTE_MARKER_UFFD_WP > if (wp_async && (vm_flags =3D=3D VM_UFFD_WP)) > return true; > #endif > > #ifndef CONFIG_PTE_MARKER_UFFD_WP > if ((vm_flags & VM_UFFD_WP) && !vma_is_anonymous(vma)) > return false; > #endif > > Then it means both chunks of code cannot be compiled together. The order > shouldn't matter. > > But maybe I should just move it back as before, to save the explain and > confusions. Let me know if you have any preference. Feel free to leave this patch as it is, that's fine. Thanks for the explanation. :) If you'd like, feel free to add: Reviewed-by: James Houghton