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 6A6E4C77B7F for ; Fri, 27 Jun 2025 15:47:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 16C656B00BF; Fri, 27 Jun 2025 11:47:13 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 11B906B00C0; Fri, 27 Jun 2025 11:47:13 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F249B6B00C1; Fri, 27 Jun 2025 11:47:12 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id DD4BD6B00BF for ; Fri, 27 Jun 2025 11:47:12 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id B06D2B5C4B for ; Fri, 27 Jun 2025 15:47:12 +0000 (UTC) X-FDA: 83601609504.21.8E18A39 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf29.hostedemail.com (Postfix) with ESMTP id 9F607120005 for ; Fri, 27 Jun 2025 15:47:10 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=dpISUwuv; spf=pass (imf29.hostedemail.com: domain of peterx@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=peterx@redhat.com; dmarc=pass (policy=quarantine) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1751039230; 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=2pTwEtrgahpBZLxew2/VEiH1EfjnhNlR4+CF1BwOTeU=; b=D/dNuAiAficnc24npmxeIYPSQSiniDByZJO1v5b9LTwV9ioYbkHQRS41rWIRT4J5wKzAVe eruzTarodnnkyeIeWvqDYnaSQcoCaIGwT4UFc8vcUOsuigrrTjtQCQEnlvCarWuDGA2kai IpDyWJ5QgFn+/nHsYTb1wlrNxcm8SCU= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1751039230; a=rsa-sha256; cv=none; b=eA7lqxtBXmZCXjlNy82NOEJ2il5BxKnUoaNnje+/nwj7Cx4geiDWHjtS+ngVaRLKN+6Xw2 nVMscGjdJXRPP3zoS48WIsNP0MrGEkUVl+4gqgL3HO/R1yiYfUjcqMX1e4It0R5zDtxnoO 6DyQK71ZEx6VSUf91uv/5aN8JSaH6sk= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=dpISUwuv; spf=pass (imf29.hostedemail.com: domain of peterx@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=peterx@redhat.com; dmarc=pass (policy=quarantine) header.from=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1751039230; 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=2pTwEtrgahpBZLxew2/VEiH1EfjnhNlR4+CF1BwOTeU=; b=dpISUwuvh+0X8j7vcuDFV+va80SIuo6jiCNkYy6ZAZPAKGRYKpdXDQoRtp2rA1Of2IYN1G HSjTENSUOQwHYkYxLq3b9qjwCtysFrXoScI+XNBlHsGRvX6g5KOxdkzVxFfMg5rdts+c2z oYPTMDHqLkvNuJ0nwA72T4y/hGDw/MQ= Received: from mail-qv1-f72.google.com (mail-qv1-f72.google.com [209.85.219.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-653-bH7NQVvEO36MHgRdOmAvRg-1; Fri, 27 Jun 2025 11:47:08 -0400 X-MC-Unique: bH7NQVvEO36MHgRdOmAvRg-1 X-Mimecast-MFC-AGG-ID: bH7NQVvEO36MHgRdOmAvRg_1751039227 Received: by mail-qv1-f72.google.com with SMTP id 6a1803df08f44-6face45b58dso32251216d6.3 for ; Fri, 27 Jun 2025 08:47:08 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751039227; x=1751644027; 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=2pTwEtrgahpBZLxew2/VEiH1EfjnhNlR4+CF1BwOTeU=; b=YCFgtQg8sjgzp3xbKtEFj+pP1fLD/pNCow8u71zfMDZB3+4AuT6cTKFxOsFYXZ3mjo XyUfQM0CICaak8Jhpoj6RrDIAcsKiEViAH40xfqZDuCMvyVE193sMD+/CgAqIMIxtGMc ZDxMs8dH/VJAtDB/nREO3rhwTjradRAmCoPvGti7EeMbvP+SRLr/S2qHjKLjhwDA/WN+ M7epR4E5k3GoXEiahXa7DH0hGeGvWB/XpACXWYRxz+1dAcTL/cRqQ6e5h/pwf91kFFR0 5EgoUDMBcr/IJfJRNRgh94v7LkivVsw9cXdIK9gCn+QzBmxBZqsgB6pLNZ+ZZ0NbnZx3 znTw== X-Gm-Message-State: AOJu0YweIbSSe5O1Bs/R0JXY51ttQSwd8+g50Dk9qVh9KJ62HjxUa592 hTnDt7QNUj/JUdsxFjE2zru93WMWp8vOaspMvMOgyBTL33VxnRyVKfUNQWi07GIPypxLzW9mZrT +YMHslLCfX9HSNAfmlLYboj36xLduHMVCpl3fxPIah8Al+kt/WYh3HqVL/tdoWDL3fOotfFfbZY hwFzbpFdoG1Y7WCIUh2/1MhDNd6yeyFLnf5A== X-Gm-Gg: ASbGnctrSfngaHt8ycwnuAUQ1W6jo9AYsgcfXnBaSvDvTbpyFN3dr2t/sq4pY0xBks2 3BNBQCVd+jl4cwgMOFUIfujjtCyjQdEeH+cTpDu22gSLe+EtnHUecbrt0MAwJS3R3nMWJyLyO6o BaqJY1QGhcl2vNBpZK398r/iBqlBsKPV28KbJCR+8wJKk6Y2Zm/SLt+sPcarEIw29+XaO/l9uQe K/3+Yg2vwcEtQSGfclc3A28TJZRXHd1JStCotbHkCREBjVFNvKpSRQxOz07IZdUafz6CUFXZq1X UZo6kTwFCkU= X-Received: by 2002:ad4:5ae3:0:b0:6f8:b73e:8ea5 with SMTP id 6a1803df08f44-7000233c759mr59426076d6.26.1751039227102; Fri, 27 Jun 2025 08:47:07 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE1K53WVc8+zg900RTkXeBD9NJqIkartaxwzghCXbibLJ+g6fNpxQUnaJNDNiONSfRZ42vUYQ== X-Received: by 2002:ad4:5ae3:0:b0:6f8:b73e:8ea5 with SMTP id 6a1803df08f44-7000233c759mr59425426d6.26.1751039226435; Fri, 27 Jun 2025 08:47:06 -0700 (PDT) Received: from x1.com ([85.131.185.92]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6fd772e4fddsm22296066d6.65.2025.06.27.08.47.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Jun 2025 08:47:05 -0700 (PDT) From: Peter Xu To: linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: Vlastimil Babka , Suren Baghdasaryan , Muchun Song , Mike Rapoport , Lorenzo Stoakes , Hugh Dickins , Andrew Morton , James Houghton , peterx@redhat.com, "Liam R . Howlett" , Nikita Kalyazin , Michal Hocko , David Hildenbrand , Andrea Arcangeli , Oscar Salvador , Axel Rasmussen , Ujwal Kundur Subject: [PATCH v2 3/4] mm/hugetlb: Support vm_uffd_ops API Date: Fri, 27 Jun 2025 11:46:54 -0400 Message-ID: <20250627154655.2085903-4-peterx@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250627154655.2085903-1-peterx@redhat.com> References: <20250627154655.2085903-1-peterx@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: cLwuOlniDVgXTRP-s2Fogkwiis1rGU-2CeYIWOUR-Qw_1751039227 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit content-type: text/plain; charset="US-ASCII"; x-default=true X-Rspamd-Queue-Id: 9F607120005 X-Rspam-User: X-Rspamd-Server: rspam06 X-Stat-Signature: tzuwox5d597i3mxso9fyq7tst5oy3h1a X-HE-Tag: 1751039230-833540 X-HE-Meta: U2FsdGVkX1+bL76V4WOUxWCp52w1lgl/EMUeHLAjzN7X/sWae0s7C+PCYMAY5BRUoWKz91+pbTRYWBwFXxM9VN0JJL+hhoV3rjHrLG65Pbp9EPZjJ6JDoblPpQ7kdfSBgPOoamV0Y8/kb6vgkp2tqpxeMzkbcVtS/ekUac1ie+YzxiT5u3PpQuRd1uo1PkzFU1fstTY7C35Bovzk/GB8JOE/+OdNjUiIOE2KmR1xSu5yUj/ovL6AlOTCKu7ILfKuqLjwC+alh8uid6Ff+tvCecR0JQ11xR69FrPkeRiazooF/aGLuoBUPww5YY450zfcDm/kjwaAdhyqrPcJSP7AP1pHhfonmwTmb6e/NnQ6DuDQgXiThy1UOiQ8r8rroGkILPKcc+DXhR7K5uo6WAKaMGXlVAv/AFDdUz7yMkCCKrtGj8RcbsC+yxiUORHehHTI3aUilyGoUxR0+YsKdFMJyf3//U7bcl9usKGB2Q47QDsTUr6XjRVE6KOdTe90qh+qo02pRAvYubOLTOyX1tl8DBwtkL+444ovLUZUfd/jE36aMo0ySgq3IggrhjqpZXawaJb29hERXozXYigBNf8Ekb2WiFB8fw18jBzN0vN4R7HfS9JymBvv1NEGVmPvYrnBFAlB7HNrrWXO69QICunQfZ8ES95VCEl0vCAUHxIAnuKE/oQSphjgIelkn/WFbXqW4SIEn1uCXtjggJXmNLK+poGdN12ocxq3xwxh2BnxUhTaFN6qLp41OtkzO7bA9z7nRg9W9BnhZauscAif1oSxoeUixL2WkIVyMMsKlsEEwXEGnPHcUhGiitUABZx3HqYfpflnVeg8wyz6yzdtiHwDM8rapqlJerkB51vU02xu0tMsIZj08uq6brseJfaAJuFj38w9An6nbWf+IU2hfZtTOYY2PZI9Gwv8rD6EelTIVAF2/nPbo86D59PlW3tVAeTwwv92PbgnA8OF3jewrU0 deCt50RM 4tB34E1lv/Ism+7vFQdC/jjyWLCcGwLVGiHJ8gwxnJ/ajcb7D4869h01R+PMg8mtVXGW+hu1Q28OIiPGpNJzbv9EvVGs20HCUJN0NhTBE8wsNpAP0Zga+dv4R2p/7TFwnr29D+6MpUQ4Y2gOSckjz3qufFjRDaJWhbg3SrZWoVA3npWDTD3x7qpmVtnLBR8QDh4hhn8dNhg6Lk5PiX7VjoN2vPfaOyRIh8P9dPhPDQYxAOWfXVnEcS/B5UA== 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 11d5668ff6e7..ccd2be152d36 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -5457,6 +5457,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. @@ -5470,6 +5486,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