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 8DEB9C7EE26 for ; Tue, 23 May 2023 02:45:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EF0CE6B0074; Mon, 22 May 2023 22:45:11 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id EA04F6B0075; Mon, 22 May 2023 22:45:11 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D68B6900002; Mon, 22 May 2023 22:45:11 -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 C80856B0074 for ; Mon, 22 May 2023 22:45:11 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 9A0101A0625 for ; Tue, 23 May 2023 02:45:11 +0000 (UTC) X-FDA: 80819978022.17.C5BD0E5 Received: from mail-pj1-f53.google.com (mail-pj1-f53.google.com [209.85.216.53]) by imf10.hostedemail.com (Postfix) with ESMTP id D18B6C0015 for ; Tue, 23 May 2023 02:45:09 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=RrzmUBLX; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf10.hostedemail.com: domain of shy828301@gmail.com designates 209.85.216.53 as permitted sender) smtp.mailfrom=shy828301@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1684809909; 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=ZHxjOHFezdgtF4NBYBIMb6jc3c6vhP3piT2YLvnyXjM=; b=gU1McPc9xYOAddDB+n+Z0yMZADgzhJsUrwqW49aW98+mnKLA8d0a17YeVOyyXW1lrl04k5 3kbgE1uWQGqZ5o+jNjcavfY0qF+HLujlGbQvx75IPIQWlj8ptmXNQFzpDUclXd1egDgBDl TXbArLs/Q2YDloCWDckmGlD9gwbKFV0= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=gmail.com header.s=20221208 header.b=RrzmUBLX; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf10.hostedemail.com: domain of shy828301@gmail.com designates 209.85.216.53 as permitted sender) smtp.mailfrom=shy828301@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684809909; a=rsa-sha256; cv=none; b=b9wOFJxrxseihQI/VFJ+x9JO1hsiX356FJ6jU767JvYKdf8NYujdO9yKkPH7sDm6jSx5ji EjyA85CtwCryGh9X6L773K42eqBhqGEINGgfCT+B/tzbo9jE/+7FsECtP4s0Z6EeFGEpO2 4svJh2WTkp9prpHdUoaBiLac7K9IO54= Received: by mail-pj1-f53.google.com with SMTP id 98e67ed59e1d1-2533ed4f1dcso4634924a91.1 for ; Mon, 22 May 2023 19:45:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1684809908; x=1687401908; 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=ZHxjOHFezdgtF4NBYBIMb6jc3c6vhP3piT2YLvnyXjM=; b=RrzmUBLXd13viYNCNSEK8TDRcqf5eaBA4G+zJtgpMI+fsu+1pOaRNG+/oKmMWQnlZP qlFB4/7tYWmrgn/z8IPz4PEqNB7ipFpdi41qBHSqH4CYbs2cBkczRrF2q8/mSitCMOlf PYGa6rAYQtV1dfSAJPvrMK416VSV+45kWPeoEzIN/v3kFmhpnrdKNCjZJ95oriDYLC9H RJYh57YBFi2kBDRzdRiLEVf8TkkO0FrxMY3y/JB/FSe5T1kDKhaVsgTV/kIbHDL6FEic pigp9+ZFKMCBRp67VuAfYnOXx7K6dhb0l+Fn3ob+t4z8JYcdtF2GFVlmZ0ZlkBuigYPQ AFGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684809908; x=1687401908; 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=ZHxjOHFezdgtF4NBYBIMb6jc3c6vhP3piT2YLvnyXjM=; b=LxGBAmIDJoPkYpUeCqLqO8LmWrApcEReIgSCls3yprEt2pZ61H9dAUhyjtIzH82plq F2yY+YrpyPxxyeAZk+3EK+a0BkTHk1FtzBnqUDYukEtfGp7i6no7MVEazQJIKoYTLbS7 h9Tfxqz3+f5qnMNMTXUpreS0yvWyV9zwVROLqafMq6wLiOm6T9f90bOlocXaqnd/sCkn bgePcBqh2nbNpYcLxeHj/RPHHdNAPnH7w2HRMmFePYPRkzmxL0ItdZATuivD7DJj4jaE /CMxPuqhbORzpwoGZLmBQUXA7w23H6JiV7qDHgpmGJ9lMDgvJuuFEMeFcWTG9qpNv7ER FH6g== X-Gm-Message-State: AC+VfDzZlenviKORfTvg9sqBmwOd8lGf1seGgF9YbYouwjEjjoo7UW+a /eeBNncrFC998lgnjQ0npFjsE8sesnXHHJ+cJxk= X-Google-Smtp-Source: ACHHUZ4chL0XGofs+/tcpaAexxFoaQEXDZdeFGq6AqniMDKnp1aBqQdRf7eyg8sAi0RLHM+ZfqGrISR4y6ZJAE/WBZg= X-Received: by 2002:a17:90a:6309:b0:24d:f1a5:e279 with SMTP id e9-20020a17090a630900b0024df1a5e279mr11549623pjj.12.1684809908632; Mon, 22 May 2023 19:45:08 -0700 (PDT) MIME-Version: 1.0 References: <68a97fbe-5c1e-7ac6-72c-7b9c6290b370@google.com> In-Reply-To: From: Yang Shi Date: Mon, 22 May 2023 19:44:57 -0700 Message-ID: Subject: Re: [PATCH 25/31] mm/gup: remove FOLL_SPLIT_PMD use of pmd_trans_unstable() To: Hugh Dickins Cc: Andrew Morton , Mike Kravetz , Mike Rapoport , "Kirill A. Shutemov" , Matthew Wilcox , David Hildenbrand , Suren Baghdasaryan , Qi Zheng , Mel Gorman , Peter Xu , Peter Zijlstra , Will Deacon , Yu Zhao , Alistair Popple , Ralph Campbell , Ira Weiny , Steven Price , SeongJae Park , Naoya Horiguchi , Christophe Leroy , Zack Rusin , Jason Gunthorpe , Axel Rasmussen , Anshuman Khandual , Pasha Tatashin , Miaohe Lin , Minchan Kim , Christoph Hellwig , Song Liu , Thomas Hellstrom , linux-kernel@vger.kernel.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Stat-Signature: q7mc78yjcignjemzpcs8pmq8ux9msbzw X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: D18B6C0015 X-HE-Tag: 1684809909-524422 X-HE-Meta: U2FsdGVkX19WMD0Uyrz0IUZMPncyI/pcvxXjHr4GQ8zcH6O4MVXsoX3Omx1Jpe+F0Bm1F6iRCDYGYDXkVvn2O+kzyYcjcpop6V/qkaMyrWSkWKRQAWrb63jvzVtdXW8UyGNwyZOyvF6p3Ezy0qQ8eeNC3wV2hv7MBoXIu7+E6ZYFDOCzzAX0x4K112FyaLAPtV/Ss3QW4Xw1YOBloXn+exT2QF6l4LXCBB53G5btyjXDqsZ2uks15mUSHATMUo8gtqq69Ry0kaIXQDTRuLfkchTx1O4FXoxr/YoKDPFbYmj6/ubbAMKytSPgPbexUu+vDNkDQXITI4Uip0JYKmLjIntN1hiGGRbXCtgInF4L5vukMAJQGT2aqih5YIOEEmRSkvFaafMArQXf6XcTFrkReWqEZdyrJ9l6PJAbxeRx15XZ6NhhCVJeipbFnrea592H21vp94qX6aodlhaYkQ2uwcaPYr589p+494Thf91BoW/uPAuerLcs6iIDs9FIZ+qKaGG6xFyViCuDb6eV+ZV5WonGG+Y086wXz1tuA13gMEadbOqVqc2HkuxDJhNf0sx7GhUUgne3yhHCzidM2t9mJg1eiwF++6PZ1Yxv9YeNlO73NN8FXZd8F/UyB6mWwdEBpRgbM3aXBV+OdTtH+0SqHX20krdEsZDWvyWeKbMSoLhKdfwuZqtziRq26YX+gTDkB3hyp+44g1etv6vs2dNKzdPeNAYIEMJgx+duqtxbpMHzbmdKZdX/qUCwE2SPlPnkTCPod+9FBpGM/r+CDHwFqfs6b9Bgp45b0POrUgELAl+194lG+l34GgbkLMWtQtEebiBjRBbqdBRvnhg/2Zm+D9iZ0YebRtNyXH2mA7wXWMfI1IGWjNqXekyFP3IPAI2TmyCquqtHTxVLNRTg0eGeSDi8UaV7UH0sS89m/mQZo0SZp5w5aD3gnVFQNHiA936zrDcmgvOFto5I44Jg2Iw V5gHMhPq TimE4qIMuQY7PDPaCDvZ4/3+oOELlLIFVN7RONpFswtxD35yM24OSZFlEy0TS5b1lDvNWzp9kZuLWyBGRL2Hhou54clpTM73d2omZkgDorGvTgpiCKYBqlqyxXxdaUmA2CHrtOow9R3YFLKFcbtiS+tpJAYS9/tY4IFIWFdfrrGRpK5298ovGs6f/+xLIjsyVV0A7HVxBjUxjXZ/DEq1kzFsfrgbXZJhJ0zmLd6NH7Fl6Sd3YuUoeGNmydUSg6RBwPlTZwVZri/V8Mt9mNi99X5fQpsuEoH0D/J5pZIzZRpqRT+HhgTz/4823e66/R2VXACyntN/IstDAXzRKkd9Za70pizJu/7PPcR72+fIcd3zN8V9zDuawxoWXeiapCgcP97OHEZXAUg6XL2arVQsYubtiHxvANQQM24nyBcnJYK8XyCMsiOdQWh7ze0sw/8OfdDmj 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 Mon, May 22, 2023 at 7:26=E2=80=AFPM Yang Shi wrot= e: > > On Sun, May 21, 2023 at 10:22=E2=80=AFPM Hugh Dickins = wrote: > > > > There is now no reason for follow_pmd_mask()'s FOLL_SPLIT_PMD block to > > distinguish huge_zero_page from a normal THP: follow_page_pte() handles > > any instability, and here it's a good idea to replace any pmd_none(*pmd= ) > > by a page table a.s.a.p, in the huge_zero_page case as for a normal THP= . > > (Hmm, couldn't the normal THP case have hit an unstably refaulted THP > > before? But there are only two, exceptional, users of FOLL_SPLIT_PMD.) > > > > Signed-off-by: Hugh Dickins > > --- > > mm/gup.c | 19 ++++--------------- > > 1 file changed, 4 insertions(+), 15 deletions(-) > > > > diff --git a/mm/gup.c b/mm/gup.c > > index bb67193c5460..4ad50a59897f 100644 > > --- a/mm/gup.c > > +++ b/mm/gup.c > > @@ -681,21 +681,10 @@ static struct page *follow_pmd_mask(struct vm_are= a_struct *vma, > > return follow_page_pte(vma, address, pmd, flags, &ctx->= pgmap); > > } > > if (flags & FOLL_SPLIT_PMD) { > > - int ret; > > - page =3D pmd_page(*pmd); > > - if (is_huge_zero_page(page)) { > > - spin_unlock(ptl); > > - ret =3D 0; > > - split_huge_pmd(vma, pmd, address); > > - if (pmd_trans_unstable(pmd)) > > - ret =3D -EBUSY; > > IIUC the pmd_trans_unstable() check was transferred to the implicit > pmd_none() in pte_alloc(). But it will return -ENOMEM instead of > -EBUSY. Won't it break some userspace? Or the pmd_trans_unstable() is > never true? If so it seems worth mentioning in the commit log about > this return value change. Oops, the above comment is not accurate. It will call follow_page_pte() instead of returning -EBUSY if pmd is none. For other unstable cases, it will return -ENOMEM instead of -EBUSY. > > > - } else { > > - spin_unlock(ptl); > > - split_huge_pmd(vma, pmd, address); > > - ret =3D pte_alloc(mm, pmd) ? -ENOMEM : 0; > > - } > > - > > - return ret ? ERR_PTR(ret) : > > + spin_unlock(ptl); > > + split_huge_pmd(vma, pmd, address); > > + /* If pmd was left empty, stuff a page table in there q= uickly */ > > + return pte_alloc(mm, pmd) ? ERR_PTR(-ENOMEM) : > > follow_page_pte(vma, address, pmd, flags, &ctx-= >pgmap); > > } > > page =3D follow_trans_huge_pmd(vma, address, pmd, flags); > > -- > > 2.35.3 > >