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 452CBEB64D9 for ; Tue, 4 Jul 2023 21:00:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 923EC2800B8; Tue, 4 Jul 2023 17:00:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8B38F2800B2; Tue, 4 Jul 2023 17:00:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6FF362800B8; Tue, 4 Jul 2023 17:00:00 -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 5DD492800B2 for ; Tue, 4 Jul 2023 17:00:00 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 2DFF0C0536 for ; Tue, 4 Jul 2023 21:00:00 +0000 (UTC) X-FDA: 80975146560.19.FDD5848 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf26.hostedemail.com (Postfix) with ESMTP id 1F30D14000F for ; Tue, 4 Jul 2023 20:59:57 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b="LLY88/NX"; spf=pass (imf26.hostedemail.com: domain of peterx@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=peterx@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1688504398; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=GI5b35dMc1KdLtRTJt9n7EYcXqIPCpvszX0gw0M88kM=; b=Hgdm34/oBvZO0AfYjdFyI2nVzVMjis7xGbYpO3L6nFKpPB0IFQTdnNF1rbmhFmbLYDoqrI YOPFpw2y/by3/OMDhg6nR8WTnqLIOLBRRrOR/AGaomA7uTrfFN6Y96yysbgBsyj5Dx5PV4 hd9wKHPWAW74CkF31Yw5QlZQB04o7/s= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1688504398; a=rsa-sha256; cv=none; b=Io5ejtqpFkezLa9pBCOswx1M9jjWHa8I3BsRIU+iM28ndJdg6wFGXpaZJZVWUrvshkbD1T ncUrt7T6xb3nO8E1YR+C8wfE4Asth8GEu1N8xpsI2O4fTqe/Q36xwDbpzhQWbF0M3HVcxd MPK0KcVg0dGP9cGXRl/V6tDE4mLnmEE= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b="LLY88/NX"; spf=pass (imf26.hostedemail.com: domain of peterx@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=peterx@redhat.com; dmarc=pass (policy=none) header.from=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1688504397; 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: in-reply-to:in-reply-to:references:references; bh=GI5b35dMc1KdLtRTJt9n7EYcXqIPCpvszX0gw0M88kM=; b=LLY88/NXBSCRqep9FEH5vkbWRt2UWzJBrJF4lbVm5hbCWpCSrph3cQzTpc81OMoHx8Xhgj /CnyA/ONHEOLJ3Ae/DAhxQl1GwjPceJgr7PXMHW/UmQ7n3osU7YOweofAX9seyPMFU/mkZ iiIYNWwgJXw4WkG3PQzNJrv8KDciaZ8= Received: from mail-qv1-f69.google.com (mail-qv1-f69.google.com [209.85.219.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-84-hyf6DcOcNsOTZk6GM4EXew-1; Tue, 04 Jul 2023 16:59:54 -0400 X-MC-Unique: hyf6DcOcNsOTZk6GM4EXew-1 Received: by mail-qv1-f69.google.com with SMTP id 6a1803df08f44-62ffa1214edso11600646d6.0 for ; Tue, 04 Jul 2023 13:59:54 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688504394; x=1691096394; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=GI5b35dMc1KdLtRTJt9n7EYcXqIPCpvszX0gw0M88kM=; b=Hl6F4wHGuywqvvUh6dLpniFnbBXiZgb/m4RX1Gw+y7lpkD8j8ZDFtDAEUY9uD5JNVA d6eHlBZJzH8548MBvw0zQEuSkUa+S1d1BxAX2+ZV2IoJFFQyiBmUT4vLBdITDn8MXdXm hE4sH7U8I05q4/NvJM5jUjQ0vAf4s427DogefRL1yzjhkJXQW3xNpEbvE5LHFCUfEZF7 Ngaelnqo6Rb4qH89UI8t8gB1BqzUZ3QfdJb3m0x4VzKt885ohIjtMOAO/lKkSnAB34hq wn5C5+j/0Hh8yw6L9jNlsvC1HJUS2M28emTDZcHccCOmLt3Ev0M1UUg28Xqv0PGaviil eEKA== X-Gm-Message-State: ABy/qLZaUVbAsVLSqlwq4QnOEoC3xI6owk3+V9w1gR4o5UgNX3Bu/ZjF 0hT11TO6D8THCkXCiTPMyIlPMvJcFGJHxPCpzJphHyv+8+/X2J3E+AlLm/cRN9tYMf6+wVRVnzB V8zOwJmWXJ5M= X-Received: by 2002:a05:6214:3018:b0:635:e528:521a with SMTP id ke24-20020a056214301800b00635e528521amr6683197qvb.5.1688504393766; Tue, 04 Jul 2023 13:59:53 -0700 (PDT) X-Google-Smtp-Source: APBJJlHVt52JWZzoWFGQHmqymAXvJZN3G9/+QeDJK1PcLD/x3FT2CCtjq5RKSQlTptL8VfnXgNioEg== X-Received: by 2002:a05:6214:3018:b0:635:e528:521a with SMTP id ke24-20020a056214301800b00635e528521amr6683169qvb.5.1688504393448; Tue, 04 Jul 2023 13:59:53 -0700 (PDT) Received: from x1n (cpe5c7695f3aee0-cm5c7695f3aede.cpe.net.cable.rogers.com. [99.254.144.39]) by smtp.gmail.com with ESMTPSA id y11-20020ad457cb000000b00631eb444e6esm12777291qvx.51.2023.07.04.13.59.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Jul 2023 13:59:53 -0700 (PDT) Date: Tue, 4 Jul 2023 16:59:51 -0400 From: Peter Xu To: Axel Rasmussen Cc: Alexander Viro , Andrew Morton , Christian Brauner , David Hildenbrand , Huang Ying , Hugh Dickins , James Houghton , Jiaqi Yan , Jonathan Corbet , "Liam R. Howlett" , Miaohe Lin , Mike Kravetz , "Mike Rapoport (IBM)" , Muchun Song , Nadav Amit , Naoya Horiguchi , Shuah Khan , ZhangPeng , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org Subject: Re: [PATCH v2 3/6] mm: userfaultfd: support UFFDIO_POISON for hugetlbfs Message-ID: References: <20230629205040.665834-1-axelrasmussen@google.com> <20230629205040.665834-3-axelrasmussen@google.com> MIME-Version: 1.0 In-Reply-To: <20230629205040.665834-3-axelrasmussen@google.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Disposition: inline X-Rspamd-Queue-Id: 1F30D14000F X-Rspam-User: X-Stat-Signature: kxf6s9r8qxp8ijj646ap1sro7n6gkc3n X-Rspamd-Server: rspam03 X-HE-Tag: 1688504397-219869 X-HE-Meta: U2FsdGVkX1+WIOP7AKOJorabP574nsQn53QJBm+wZ8hod1UKHAIejo79zzapXXFrCDnwBuMks06weQDMAoU9iTjtQ9s10HRZNnhNOyd6t699B14qhDYKpxBhnUkhpMYFRgLZGlZb45a8GndhvCq8THJrwAAc0N/kvMZEJ+fw/tupZyGUbdKW4247R2N5rvDcJZKgazGMohj+FeZJ77POX9kytjz1KsOlab8JGqh561jhRIhG98YdGpBYrJNONlVlfJhalpoIEO0+mrB6aJ+BZ03dBCtADZkDoug4hZdmiNh1TE3A3SytQnH1P4Dk3YKVHC4FfELHwxUGCCgpMMMmUS7to25k/r/EEHuYUaKizaRbDcbJRNpqPGvPCQh0+xg9j3oWbTQtnPDTJY6VhAZxVIwTqn9i/pAa3bcECyW2CEK88hS1yn5oMBO0/oPrZsJwzdofrI8qCdjT5p43IG4CNyIHf4H69zi75v92AGRCOi82Ecf+zuyNi7mrSvRAM0y7S5BtYyFKKlnjm6FmgoMgetC4Cbt96AHPOkLCSxQwcNWlD0r1p+lepGGYWKHVCYwyrFPxerKvrsabIEmOBoTSBysScmEwKfUSxMDTGYLk4zS1VOsL7A6g7YujY1acuOQEUmHzkWnIysyI69d5YwU/Xgyu78ksAfFEPizlC3Qqeigjge6UUxeESvAA/htPQCT7dJNONNDivaN3g4pm5QUvcFPYmNXPoe3iVPqQ1rreEeuPrONie5SUMJqUekn28oNlF38hq7ujGIsqGin7ZlQQc5Cfdz2FD4D+iDlpgGNWg7rOc78a2v4YxIZ/VS7W9dihbGVo3jPLJUtcNI7ZEOWLyz3qh7WDjCWF9/g5qrs4sIXw6w9FWJCUxj/pwCIyuSIHShYRllqLRMGjOzoDOvhqiIf7jtZVDaaaei3Y2JRxknG4zpzWshtmVJGYmqI5ifxjwOE6g5hrbNv7b+9VcrH 0aeDP3pZ vfDopX3ePwPcIjpgctlhp8+ZR5Lfa1KwUqzg1OGinZnmk/InjO1Ku0eJxrFd8he0exnqH4+vn/13u23mUehvks7WguoF/fjS8mcRup7rDw5iSTbVA04zyl0G7BWUaN8VhSzH9xJQ9dQ6r+AW6WLU95F7f9NsYMaH4q6+qN9tqHlbNYZX2DV8fmcJZ+cp385om57h6T0yS7PDV94sLR2LNNFofT8okSMmvXtXkE8dtxHrolkIZDu9Hc+efcf3QEcFEll3L7WEdRXgWMXRLKbqv36ZfFEyusUP/sMkBKFGbUvLL0Gxc1p5V/d6yJrwxpmFeZZv7cgdN/lyh9igHeTk5CcCcvYTPOhB6IJri7tpmKNQ0HMUi/bqcaSKOqBGyTZemBQrcNHSwVArPisnPDqGDq+P5XFXMlOkTp93f+O62DHbcgrk2abBg2mw0Gg== 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, Jun 29, 2023 at 01:50:37PM -0700, Axel Rasmussen wrote: > The behavior here is the same as it is for anon/shmem. This is done > separately because hugetlb pte marker handling is a bit different. > > Signed-off-by: Axel Rasmussen > --- > mm/hugetlb.c | 33 +++++++++++++++++++++++++++++++-- > mm/userfaultfd.c | 6 +----- > 2 files changed, 32 insertions(+), 7 deletions(-) > > diff --git a/mm/hugetlb.c b/mm/hugetlb.c > index 38711d49e4db..05abe88986b6 100644 > --- a/mm/hugetlb.c > +++ b/mm/hugetlb.c > @@ -6090,14 +6090,24 @@ vm_fault_t hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, > } > > entry = huge_ptep_get(ptep); > - /* PTE markers should be handled the same way as none pte */ > - if (huge_pte_none_mostly(entry)) > + if (huge_pte_none_mostly(entry)) { > + if (is_pte_marker(entry)) { > + unsigned long marker = pte_marker_get(pte_to_swp_entry(entry)); > + > + if (marker & PTE_MARKER_UFFD_POISON) { > + ret = VM_FAULT_HWPOISON_LARGE; > + goto out_mutex; > + } > + } > /* > + * Other PTE markers should be handled the same way as none PTE. > + * > * hugetlb_no_page will drop vma lock and hugetlb fault > * mutex internally, which make us return immediately. > */ > return hugetlb_no_page(mm, vma, mapping, idx, address, ptep, > entry, flags); > + } > > ret = 0; > > @@ -6253,6 +6263,25 @@ int hugetlb_mfill_atomic_pte(pte_t *dst_pte, > int writable; > bool folio_in_pagecache = false; > > + if (uffd_flags_mode_is(flags, MFILL_ATOMIC_POISON)) { > + ptl = huge_pte_lock(h, dst_mm, dst_pte); > + > + /* Don't overwrite any existing PTEs (even markers) */ > + if (!huge_pte_none(huge_ptep_get(dst_pte))) { > + spin_unlock(ptl); > + return -EEXIST; > + } > + > + _dst_pte = make_pte_marker(PTE_MARKER_UFFD_POISON); > + set_huge_pte_at(dst_mm, dst_addr, dst_pte, _dst_pte); > + > + /* No need to invalidate - it was non-present before */ > + update_mmu_cache(dst_vma, dst_addr, dst_pte); > + > + spin_unlock(ptl); > + return 0; > + } > + > if (is_continue) { > ret = -EFAULT; > folio = filemap_lock_folio(mapping, idx); > diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c > index 87b62ca1e09e..4436cae1c7a8 100644 > --- a/mm/userfaultfd.c > +++ b/mm/userfaultfd.c > @@ -381,12 +381,8 @@ static __always_inline ssize_t mfill_atomic_hugetlb( > * supported by hugetlb. A PMD_SIZE huge pages may exist as used > * by THP. Since we can not reliably insert a zero page, this > * feature is not supported. > - * > - * PTE marker handling for hugetlb is a bit special, so for now > - * UFFDIO_POISON is not supported. > */ > - if (uffd_flags_mode_is(flags, MFILL_ATOMIC_ZEROPAGE) || > - uffd_flags_mode_is(flags, MFILL_ATOMIC_POISON)) { > + if (uffd_flags_mode_is(flags, MFILL_ATOMIC_ZEROPAGE)) { > mmap_read_unlock(dst_mm); > return -EINVAL; If we have the last patch declaring the feature bits and so on, IIUC we don'tt need this change back and forth. Other than that looks good. Thanks, > } > -- > 2.41.0.255.g8b1d071c50-goog > -- Peter Xu