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 899E1EB64DA for ; Fri, 14 Jul 2023 03:27:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A2C6390000D; Thu, 13 Jul 2023 23:27:11 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9DC8B900002; Thu, 13 Jul 2023 23:27:11 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8A55A90000D; Thu, 13 Jul 2023 23:27:11 -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 79B50900002 for ; Thu, 13 Jul 2023 23:27:11 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 536891A03F2 for ; Fri, 14 Jul 2023 03:27:11 +0000 (UTC) X-FDA: 81008781462.29.CD3F90E Received: from mail-yw1-f182.google.com (mail-yw1-f182.google.com [209.85.128.182]) by imf19.hostedemail.com (Postfix) with ESMTP id 8B3481A0004 for ; Fri, 14 Jul 2023 03:27:09 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=eBIxiJBm; spf=pass (imf19.hostedemail.com: domain of surenb@google.com designates 209.85.128.182 as permitted sender) smtp.mailfrom=surenb@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=1689305229; 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=Qja0tGHUe3CsYUmybjA5LsF+JmwMV9f/Md1cgSpFeFc=; b=wMLcqF4bdFeAKtNaKmoNboOmasJtRYPf+js81QppWFRRtc9LkvWO/PCYAIt5JsY/jAAkjs 8nPqkOhMx8lnAwUyJgaoWeV9SOO9jp8cPuBuQxrRDf8EhVKOjpg01BzGdtKC+n3Lybpo4X Q+RDNrbJHpeKMPRhFK5ABPQY8W1pkNY= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=eBIxiJBm; spf=pass (imf19.hostedemail.com: domain of surenb@google.com designates 209.85.128.182 as permitted sender) smtp.mailfrom=surenb@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1689305229; a=rsa-sha256; cv=none; b=yYuXpa3q5PSufszP8WaDUCAvtFOLujE9qM6eFSi2hXE0QdeyrOa1Jmh5l+QRigefvPcvzE ueZtiPzMbvmpXQWDE1d8yHea/dD2FFFJH9Zci/rlZ5OpdG9ljkoyLymhYkSwZ88nzkY2fL J268766U9MP+XXRpHD+1Fi9C7bjlTU8= Received: by mail-yw1-f182.google.com with SMTP id 00721157ae682-57722942374so13875907b3.1 for ; Thu, 13 Jul 2023 20:27:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1689305228; x=1691897228; 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=Qja0tGHUe3CsYUmybjA5LsF+JmwMV9f/Md1cgSpFeFc=; b=eBIxiJBmNuBrgP7lGfOCYZeaxPghyTYNFVFvrB8O7EUSpMHfLBf2WdBOStaLDe15JY 1hGhXx+8d5UnegrQnkh37kGdVMyaC9X34saBUabXFlGOcOmm21t+kxrHpQBHohPp0V4E mZwMpUc1n5DgEsocrc19qZW8NiJGdu4R2gyGz6jq03FQCsa85Oi+zu8JNmyycmd/a9ow 39M6bYOcRT52Zv807V16ymbMkJXnCGKRv5qev8LmyQsn/aN9udI8eTM0z7zKR2hMLUuO Rz+3uExoIX6IxPD1xhnQUfAg7wd/BjPOR+KvEHJVIhn//23vpJ+73ygxlH6Cgz9t2GMK vQAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689305228; x=1691897228; 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=Qja0tGHUe3CsYUmybjA5LsF+JmwMV9f/Md1cgSpFeFc=; b=b4c1O2WVddPK0zwXJZx1ie0JCwNtkTVziAPLcyQPXA/f2C+rXpOTMIkDjSjFHEeEdC rQysnQLW2Ja/+D00ioVOhLVwmn5jHZog2+Ilju11WcuDLD53T1L5+yyCeEMm/8CCSAui s2JhkDYi6kr7zEbIwn8dR28+TrqEoJBRx5pNVvMTL88vBLtjX3cRrzMnD0s/XlhajHJJ DJ/z+tHk2YHftRXklwU7k0yCfteGUSup+DG/lO2jGUTlpm0/twO3xRPH9kLb7jdYJ4iD PKg216yWksKJUV1a0TFVVaTaJfWNH1Ub2FuNwmDa8wu12T+HJa6QQLmHlA5VzrMI0b4q 1aKQ== X-Gm-Message-State: ABy/qLZVdJdA/uaenpg04J+MwHavO4gWcbBpmYnKpl0VTMzRy3FNelnJ HUjSVLYh6bjbJep35oFPl0F3NyAlNHi/2dBwxk1iGQ== X-Google-Smtp-Source: APBJJlF734dzdExqRsWZRf+j+L3+ORNaprFS+TD7rC3zGtYH5xO5mXdouTYbUfYS4VP5VS+yM81ztEOoaQ1jzCBLqYY= X-Received: by 2002:a0d:e687:0:b0:57a:3f43:236a with SMTP id p129-20020a0de687000000b0057a3f43236amr3215201ywe.8.1689305228424; Thu, 13 Jul 2023 20:27:08 -0700 (PDT) MIME-Version: 1.0 References: <20230711202047.3818697-1-willy@infradead.org> <20230711202047.3818697-6-willy@infradead.org> In-Reply-To: <20230711202047.3818697-6-willy@infradead.org> From: Suren Baghdasaryan Date: Thu, 13 Jul 2023 20:26:57 -0700 Message-ID: Subject: Re: [PATCH v2 5/9] mm: Move FAULT_FLAG_VMA_LOCK check down in handle_pte_fault() To: "Matthew Wilcox (Oracle)" Cc: linux-mm@kvack.org, Arjun Roy , Eric Dumazet , linux-fsdevel@vger.kernel.org, Punit Agrawal Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 8B3481A0004 X-Rspam-User: X-Stat-Signature: mzdpbt19aeme1ihe4az4wzshzbwk79g3 X-Rspamd-Server: rspam01 X-HE-Tag: 1689305229-804044 X-HE-Meta: U2FsdGVkX18nBb6HqSLRetUcYRxM2mY4wEBqP/A/1ab7CwzhRFpittCaBYzFtOUMZQ0jRrPJbbZAGPwDHJXarKdEMx/wkFm+vqToukKNJOAtcJwMuhesMsGRedILP62Ty0rCqD04XKmFTzobGXXFBdJsZEovTnHlwAbfsq1QZkiLmAok2WNKGD7iChnEH2DDWmdHN0qG3pzoPgY0lAAK5HHL3cV9jFoORLcTs9RykMcqJkBWIqZAxFoq7UUT9Je4suIp2LURn92ZhNdDa+GvfDN9oNtxnp8MYW1oyM8Np5qk7K/KmgzNnavgi8nJiGUnDctJiMeZhvszB7rBEluOu+CUYWvndlK8aJ7ZWpGuypfnf2mgcNoIzqltctNwkTGdYZTyYu0kDJ3TCzPfhl0ZjZ4qA/4WYG5FOtQDAmM3eIt5dZRFWpRmNYLPnkTOUUchkXL3CRPRnFXmHaIGIIhqjN34paEN0+BU4zF+B7cgynOPfKYgpVoIyZG63HthqWFxiSjs+D631t7U3Xdcasz9BfzHmf0d0MvHGo2ipPLparMHet84PdYq5HrwlDjRY+NaBLbgvKntU6XwsIThLB+eOU4JHeJhAvQ95gb0/QPxLbV+esIdQh1McSbgzeWzlV96wGGvkZCdvcwUOM9dFot4yikAWI0rvX9IePcj5MNM74wcaORglRy7mOEznkiI3Ux7oMg05pR/zQvApbi6MF6uQbyy3lkdonsN3UgqhP/7/uS15BQsXrmWYMhKrv1Iwucwp94Cx/XnH0UTAeHzU+eXxhcMU7Uj71QFHu2ebT9tX1ysFWiw4VPAPADymdyUgLjXIsV49Rf/rySyBVmpVDogsjSYRDEuae0PzhPJb9ve30+vr+QdhN16VZ3epb6SzgZQ5DlZNHh8GgHDWpKwLgOBDte69Q7JVnQ2/JKU3Ib278ItNmShBgHL9oB2iAasSQFGaS3Xim00/L1YZpWWZEv iRIBnHeU CZ4sRvWK+xlBNDOw7jKap9AHvdRykTpno8Jhe9hIpC1yhjAtlhzJxwvMvKlyBuroeITjZhDyUMgIKY0GMWjJ5r6ydQTahV0DBQFbDMBeAwm/perIM0NWGHiqFPPxY+rqrMSUsxkPbYzeHCmzXcUJaaK11ydsp/Ew62ptmU5t1g5V/o4ri6+JwtqUC+5uf/kkvuaps/qSqPWOmQN+0D4pEJBoSjB/QT9Rq7XQP+Y+REp8ksW5TLmdV0LrGlDg4dOrjGMl11wvjCIUYo2LGlcpjpEcvi6fSN/3p2QqWDKQ/6jT04varWwj35hrENjxBVmpCDBkoOX7F9AR/gfJ3QbwVwmlwm5MPbMYnLUGD 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 Tue, Jul 11, 2023 at 1:21=E2=80=AFPM Matthew Wilcox (Oracle) wrote: > > Call do_pte_missing() under the VMA lock ... then immediately retry > in do_fault(). > > Signed-off-by: Matthew Wilcox (Oracle) Reviewed-by: Suren Baghdasaryan > --- > mm/memory.c | 15 ++++++++++----- > 1 file changed, 10 insertions(+), 5 deletions(-) > > diff --git a/mm/memory.c b/mm/memory.c > index 52f7fdd78380..88cf9860f17e 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -4661,6 +4661,11 @@ static vm_fault_t do_fault(struct vm_fault *vmf) > struct mm_struct *vm_mm =3D vma->vm_mm; > vm_fault_t ret; > > + if (vmf->flags & FAULT_FLAG_VMA_LOCK){ nit: space before { > + vma_end_read(vma); > + return VM_FAULT_RETRY; > + } > + > /* > * The VMA was not fully populated on mmap() or missing VM_DONTEX= PAND > */ > @@ -4924,11 +4929,6 @@ static vm_fault_t handle_pte_fault(struct vm_fault= *vmf) > { > pte_t entry; > > - if ((vmf->flags & FAULT_FLAG_VMA_LOCK) && !vma_is_anonymous(vmf->= vma)) { > - vma_end_read(vmf->vma); > - return VM_FAULT_RETRY; > - } > - A comment a bit further talks about " A regular pmd is established and it can't morph into a huge pmd by anon khugepaged, since that takes mmap_lock in write mode" I assume this is about collapse_pte_mapped_thp() and it does call vma_start_write(vma), so I think we are ok. > if (unlikely(pmd_none(*vmf->pmd))) { > /* > * Leave __pte_alloc() until later: because vm_ops->fault= may > @@ -4961,6 +4961,11 @@ static vm_fault_t handle_pte_fault(struct vm_fault= *vmf) > if (!vmf->pte) > return do_pte_missing(vmf); > > + if ((vmf->flags & FAULT_FLAG_VMA_LOCK) && !vma_is_anonymous(vmf->= vma)) { > + vma_end_read(vmf->vma); > + return VM_FAULT_RETRY; > + } > + > if (!pte_present(vmf->orig_pte)) > return do_swap_page(vmf); > > -- > 2.39.2 >