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 B6140C7115B for ; Fri, 20 Jun 2025 19:04:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 594CF6B009D; Fri, 20 Jun 2025 15:04:02 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5740E6B009E; Fri, 20 Jun 2025 15:04:02 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 434066B009F; Fri, 20 Jun 2025 15:04:02 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 301C76B009D for ; Fri, 20 Jun 2025 15:04:02 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id E6B0880BCE for ; Fri, 20 Jun 2025 19:04:01 +0000 (UTC) X-FDA: 83576703882.02.4111543 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf07.hostedemail.com (Postfix) with ESMTP id BA7F640016 for ; Fri, 20 Jun 2025 19:03:59 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=dgF9N4mV; dmarc=pass (policy=quarantine) header.from=redhat.com; spf=pass (imf07.hostedemail.com: domain of peterx@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=peterx@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1750446239; a=rsa-sha256; cv=none; b=5cW0VqMqo7EB1gsJ3aAfzW7eIBFZ/+969VHH30iETkYf2EPW3HSySvS4Do3cxzDyiLKZ+1 HBPO4R9xa7gv1/juChpDX5UeUzQa0OuxgI87UL/X8LMt2bfStKwtW+QzvAhz0f+jbuYovS gP4aY8v4FvbKG2lLy64tptL0fotmJXs= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=dgF9N4mV; dmarc=pass (policy=quarantine) header.from=redhat.com; spf=pass (imf07.hostedemail.com: domain of peterx@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=peterx@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1750446239; 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=cZDbbtIAa6EPMWRofMi/kXSaO7jdlCdJOMqHnRdeIWA=; b=mjsV663Nx61y/0jOD0kuV58W0mJUiGwptxhgik4yPM2vNYfVUydNY8dWoEqEmiFajjyRuu ZSm/On8/I8z7+iNiBvJDHPq3OS0YApC0k32+NOiQHJpprSeVKnMf33tcWLO0DN+NBI8TIE lqEj8iuRmRROpWtpB2XmBxzbaKBDYqU= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1750446239; h=from:from: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; bh=cZDbbtIAa6EPMWRofMi/kXSaO7jdlCdJOMqHnRdeIWA=; b=dgF9N4mVscEa5C/ZVHdbW1OxDkBvpiIE+Md8Hhx2mBnVEpquWpv4fTP1tqw4PSFYLMDg/t HbElqSXpYZyrKQMwRrGauTmikxLEI12cOijXdVmWBHVxZ21uDUXHv/glzuwgDeShK+AVI/ RuniwbqDcyz8rtm8+IlTyMuXJKkXlHE= Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-674-3a_ewBp4P6O1ViXP6mO9rg-1; Fri, 20 Jun 2025 15:03:58 -0400 X-MC-Unique: 3a_ewBp4P6O1ViXP6mO9rg-1 X-Mimecast-MFC-AGG-ID: 3a_ewBp4P6O1ViXP6mO9rg_1750446237 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2358de17665so19451915ad.3 for ; Fri, 20 Jun 2025 12:03:57 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750446236; x=1751051036; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cZDbbtIAa6EPMWRofMi/kXSaO7jdlCdJOMqHnRdeIWA=; b=bj0+tB4Hng1lWJp5dODCSTDC4Ys+AgIPnfPt6mmftTZYjLFgY8QYn1NRXBPHcBOaa/ I1ioJMbyEsbndz8XEn2RkGdHKDh3kg8naw3/S4FBvdIiUypHyGzrPSOLXq7AZXFnhXe0 UtlCF8zgOg7peHBLctmiESdUTE2eXwFSLp9dkriY7nBANeX8d5SbcsPw/BOcs01I30va hCF7iBKzGnEaAyXm6IqE+1OExRo/yvab5MjKQnBvhEyUbeJykjYxn0lqc1Rr010hxH9e 4ptlC2qvTk6nZkdqa1Z1A9QyAgrXCC0E5zxJaB3CRn9yFMM5vn8gw5vfVUGYEYELTlxE gsNg== X-Gm-Message-State: AOJu0YwQcKz70Upb6j1LULHRzYY2R5hcjS6kUUMEvC8JwzIOEqt5pxZd a50kePkBbThdlNf+nlks4fGCfX9PHIdR+rSPTeazLoqm4CsAcKbocJGPRpOpZO9svGZL11wqZW5 Y/oKrSe4XhKDN9wAiYabJUm2J8rozm0FZ+5jqwCBmAiMKu3kl7ol2ZaAJBCk2cWRyiy1XDfLTqk iN0V82e9NyIVVa0M6pt4qwYY+m2Si1RGY+tw== X-Gm-Gg: ASbGnctpjMTrvK4XOpMK1uO8it+056n6IlceSvCar4wa/Z5pVoWRbbD9gzwz9IVa71/ gkb57Two2z/uxI761lLDXmmek2k81SExDZOj+PTUbDxSjg6AKiJxeHk29LApHOCYeaQ1ve5YpQ0 XkekBXH8wnKHbHNhxA0t0rC74SpMpMvJJbCGq1gxMSW0AAX4pLWFRqvEyXStCozhqXj0qXXGPM/ CC5Y14nRAUDoJA5GbDtyjYbY8kcNc7mZOyRSn816YtPRFzOxA2vjfku8/m5Ez0Sv9oLonOtY66k 2yETVICpWOI= X-Received: by 2002:a17:902:d542:b0:234:d399:f948 with SMTP id d9443c01a7336-237d997fda8mr56957975ad.33.1750446236568; Fri, 20 Jun 2025 12:03:56 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEGWRVo9lU6CN1+qf1IBzFazCaFwiIFN8m5Wc6/OgMNQb0aQQjMN6hDbpeBJmQP3cfZ3Z1D5Q== X-Received: by 2002:a17:902:d542:b0:234:d399:f948 with SMTP id d9443c01a7336-237d997fda8mr56957375ad.33.1750446235934; Fri, 20 Jun 2025 12:03:55 -0700 (PDT) Received: from x1.com ([85.131.185.92]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-237d8609968sm24235535ad.136.2025.06.20.12.03.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jun 2025 12:03:55 -0700 (PDT) From: Peter Xu To: linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: Nikita Kalyazin , peterx@redhat.com, Hugh Dickins , Oscar Salvador , Michal Hocko , David Hildenbrand , Muchun Song , Andrea Arcangeli , Ujwal Kundur , Suren Baghdasaryan , Andrew Morton , Vlastimil Babka , "Liam R . Howlett" , James Houghton , Mike Rapoport , Lorenzo Stoakes , Axel Rasmussen Subject: [PATCH 3/4] mm/hugetlb: Support vm_uffd_ops API Date: Fri, 20 Jun 2025 15:03:41 -0400 Message-ID: <20250620190342.1780170-4-peterx@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250620190342.1780170-1-peterx@redhat.com> References: <20250620190342.1780170-1-peterx@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: vYgnHgbvlHlvdqVBIDDC1wDyI_mKMZAxFTehj2NZfc8_1750446237 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit content-type: text/plain; charset="US-ASCII"; x-default=true X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: BA7F640016 X-Stat-Signature: eqaeygcddkuyzqjsgnfww7jx65417sjr X-Rspam-User: X-HE-Tag: 1750446239-671594 X-HE-Meta: U2FsdGVkX18OUoOSiyFhTw79FfmRMjbZSnH3zuJQ8oHxydsA45ImIvAsSY213eJf+XKSgr9tJwW3JGnZ4fYrM7g1WDJRrxWvWx1vQ2gHvpB6NZcgdAhQz18T+HVxeiSdiqXa20lz9j0/52F1pE2LaRtuAmByMDPtbKCOgFFox54HDd2gl/wfgFX9MUB/VtlpHgf/gd0KKzVV0ufwI84MNptXqnZt85OOOnG57pF/O0mfmQv8bPZQ6TMJ0K9lV5PRQGWK4dPAfQTJg06YwqdKgusixfOO4tJTCF3UbycOdXZln7Egvxpm+DdEN7AGjK1jxmeIeOtdrdbrdvXFZMeSrgk8dE2DTZGU8sIqSHQDPmckCCSwirEXTt6GAo4OZeYHg+cXkhhru7sik6pXz2tTejAUbYqYB5rlNZFOhr7DDThaueRNHeImej5ROZqb3BXBGxJvt8Yk4llyqvoXy5PDrLNP066puC57JzxEhqbyEPoIPYpC7R784eXo9J5pAkplqmPjHGG5KT2QmcxxdNuv7EhQ74/Dfr3usf65azFg4CORDwh4uYBcBoGKi9GWMKeJE2asrCHjNTu+qwxY483kLlraa85ebp/UGDxoFEYSteB90NZtIegc5bA+sR070qzQpRySS+atB4nrM1ddnESymLV2Cyld/kafMU7iQv/GqxUaJybgqHDWqYuEsEybDGzwzUCsjVqzPovW77h975pQ3P4S1OuOOFAc60mGTemKjEyYs0Yl/MFvluUqK0vXePM03j0sQsMCWWmWJhu1dHtuTuR9KvvER3tCdmgb3HeBz5LYGvcPywuMcasxJKJ0lyed8a7DYH40AENjgIUAEYsR0DOOuwHFVmKXVPnrx5ssY/V7wXNJrkchKlzVt9o/ptVSjJ7wCtyUscEh+cuEU1Umz7c1HLn4tzbm7DRiGE0ndgueXb/t3v0gpsx8ms/FUMG5f+eoAmz3APzuaI3qQxH lI4W+Q6+ tIwGzZDQTZHKKKRNVt57jauxG3KC8ODnK9HwtQDDPHCFH8ysWpgDHacpvOuDb0D3ibGZ4Ltl0JgXPDUTnyLJ8leGn8YJ3HvIacABjk0HVTjmHhVpeLJYSSTTI6GeGQ2FO1UqvRrW90eotqSYBE0to9Zc/Y3/RCtMnWwJ228FNPpjLsVhzxdM51ZAE35ja/2kypdd9If1eEXcoWDfQw5DoC1sId1mT3RrChfZF/7VWCTKGTtRli1uq0bFc2WkumRzMHD6w7AsF1ISKQ+VkSuFqw84xKXt8e1hBBbM05+PnwrOpdu77qz5NZKBF4WOj78uckrmI0nF13Ozm0AiFT+rZWDGaS4H9x/jUadZR7yaNymtINe7E5SHKB6FZ4ZruNFQzIV9Cu53lvhmvUUACjbJNz5GJNi0BwG1bgZysC8pHoJ+xj2G0SvPCk/yWDWce2W7OeWiUi2NI4Lkra4qmja0GZb18xB/JEufV7BlNtMr64O8PQds= 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: Add support for the new vm_uffd_ops API for hugetlb. Note that this only introduces the support, the API is not yet used by core mm. Due to legacy reasons, it's still not trivial to move hugetlb completely to the API (like shmem). But it will still use uffd_features and uffd_ioctls properly on the API because that's pretty general. Cc: Muchun Song Cc: Oscar Salvador Signed-off-by: Peter Xu --- mm/hugetlb.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 3d61ec17c15a..b9e473fab871 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -5459,6 +5459,22 @@ static vm_fault_t hugetlb_vm_op_fault(struct vm_fault *vmf) return 0; } +#ifdef CONFIG_USERFAULTFD +static const vm_uffd_ops hugetlb_uffd_ops = { + .uffd_features = __VM_UFFD_FLAGS, + /* _UFFDIO_ZEROPAGE not supported */ + .uffd_ioctls = BIT(_UFFDIO_COPY) | + BIT(_UFFDIO_WRITEPROTECT) | + BIT(_UFFDIO_CONTINUE) | + BIT(_UFFDIO_POISON), + /* + * Hugetlbfs still has its own hard-coded handler in userfaultfd, + * due to limitations similar to vm_operations_struct.fault(). + * TODO: generalize it to use the API functions. + */ +}; +#endif + /* * When a new function is introduced to vm_operations_struct and added * to hugetlb_vm_ops, please consider adding the function to shm_vm_ops. @@ -5472,6 +5488,9 @@ const struct vm_operations_struct hugetlb_vm_ops = { .close = hugetlb_vm_op_close, .may_split = hugetlb_vm_op_split, .pagesize = hugetlb_vm_op_pagesize, +#ifdef CONFIG_USERFAULTFD + .userfaultfd_ops = &hugetlb_uffd_ops, +#endif }; static pte_t make_huge_pte(struct vm_area_struct *vma, struct folio *folio, -- 2.49.0