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 288F5C25B75 for ; Mon, 3 Jun 2024 04:27:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AEA266B0088; Mon, 3 Jun 2024 00:27:27 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A9ABD6B009E; Mon, 3 Jun 2024 00:27:27 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 93A516B00A0; Mon, 3 Jun 2024 00:27:27 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 75E2A6B0088 for ; Mon, 3 Jun 2024 00:27:27 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 22B5A80677 for ; Mon, 3 Jun 2024 04:27:27 +0000 (UTC) X-FDA: 82188293334.09.18FD854 Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com [209.85.167.48]) by imf30.hostedemail.com (Postfix) with ESMTP id 3AACB80008 for ; Mon, 3 Jun 2024 04:27:24 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=H3GocV6A; spf=pass (imf30.hostedemail.com: domain of ioworker0@gmail.com designates 209.85.167.48 as permitted sender) smtp.mailfrom=ioworker0@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1717388845; a=rsa-sha256; cv=none; b=YoOHrUqBxAvgukF3nCHQROVluNKodRa2+uIgJt54nkpb8G4PJLw6TgjKzJFPlf8hoZ/P5T UWum/D92V9gqd2gFS536i1lgkWypTs5Sh2iH4HsMPdfLuiCMFdVnlZ9bZj92K2Hv2OHOcT yVQ7L22Orf26PpBKawJpdKTWvo9Zg8M= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=H3GocV6A; spf=pass (imf30.hostedemail.com: domain of ioworker0@gmail.com designates 209.85.167.48 as permitted sender) smtp.mailfrom=ioworker0@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1717388845; 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=h9qPC6w1NV4TD2a+FwRxTwDP6kMv2SLCKMCaWmtBFqU=; b=HZZ8IXTXhTxv1DULnTNzzEYWY0bWmeHSahE6MwCt+nONWUKgCD2XWYzH5y3Rjsu1zGgwzc ZCNh+NWfjx340CkRixDVW/Be7BL01iNB3mJ7i3IryOsSCaYrXRMjItVSViX1Q+WAPs+8Jg 1D9y2zHLB9s2o96UGJ8kXUxaskVVnRw= Received: by mail-lf1-f48.google.com with SMTP id 2adb3069b0e04-52b88740a93so2815092e87.3 for ; Sun, 02 Jun 2024 21:27:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717388843; x=1717993643; darn=kvack.org; 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=h9qPC6w1NV4TD2a+FwRxTwDP6kMv2SLCKMCaWmtBFqU=; b=H3GocV6AZhygo8FpfQlHHj5JUHYQAvOK156izxQFyzHhrE7Wcjl6zgb3KXVSyj5zeV VIrKtxAjEzq9wn8H+iEH4mrfn1WtreDGTBD9ro+5XpiKuRB7yTp47lLDZTKchrj08XTj zxflc/ISUkDhOJE02+8JZH/h3rg5mYH3HiFayUDCdLAHs1h8DLkhY2TEm+gWGA0NvLxm yfJjc058qfl7ZXymO3oB8DNwZbv7mLuEWPTNZIwpC2r8LdWFSuIr6vzaEwBXMLGo8LX2 +NfKrldoXP8pfc0yXbpAsNS/+1orOef+oKdhMliI/E9aE5NJRyG6+vN0Sp0sq+EqfwKM FWHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717388843; x=1717993643; 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=h9qPC6w1NV4TD2a+FwRxTwDP6kMv2SLCKMCaWmtBFqU=; b=iKHLyHa1sGBO4l6065Z3YIm7SUFcF4g7vk9cUlpwl0sxavFBVZ+2f2C+9SNyneRS8R rGUtLsX+p8iV3JVH/lrT8RAubl8C2hE9RQS5mxsNITA5UMLP8V5rSLKkZo4Os5T6aFPZ zO6+s7kECrxidfVHrNrKbKXTMu0MOnYakHxakuRm99hFnPFLBbrOzg8tMKjeeTsdxoW7 jwCfsproocS9nu4/evkUmgLfgB8tfZupyjduvoWJ2gRdu5JrXLTtXZlP74TH0UymDLxo lTq9pK2D4E4TWuOu50tmtCY88NHno+vaJqRmfOphfrTboOvhhLyWdkMg1H+dm8ziyPjn be9g== X-Forwarded-Encrypted: i=1; AJvYcCWclplramYIX26GQEaPmxQZZ50sfjku8gwzLgXKKkaJmyPvXMbxTRFCLAxr+sDADs4NLbzdg4eI7jWjhkI3a9f0FLk= X-Gm-Message-State: AOJu0Yyik3HgwRXWP3DIF4dOoj0vzzEKitC+S3xhn0Ew0Vf56/nbXqt0 iweljk2ww55rj3B4jgaT/XZd2FuP7UYLq2qhUNrRwKC+aH1o/xDViAVxZQI/cMGg7KEy+h0Be7k 4M+0432gTZZcB/fD+4DyVBkk8dqc= X-Google-Smtp-Source: AGHT+IGfPkHs5bDh5yAfeHOJLWnOKEj2ZHrjS6wPzQziS2Fnw04L03cMa96XkUhTXnCZhJ+UwC0E8fmq+ee9Roh9d6s= X-Received: by 2002:ac2:544c:0:b0:51c:a0e1:2a44 with SMTP id 2adb3069b0e04-52b8957f627mr4896967e87.26.1717388843141; Sun, 02 Jun 2024 21:27:23 -0700 (PDT) MIME-Version: 1.0 References: <20240603033118.76457-1-ioworker0@gmail.com> In-Reply-To: From: Lance Yang Date: Mon, 3 Jun 2024 12:27:09 +0800 Message-ID: Subject: Re: [PATCH 1/1] mm/mlock: implement folio_mlock_step() using folio_pte_batch() To: Barry Song <21cnbao@gmail.com> Cc: akpm@linux-foundation.org, ryan.roberts@arm.com, david@redhat.com, baolin.wang@linux.alibaba.com, ziy@nvidia.com, fengwei.yin@intel.com, ying.huang@intel.com, libang.li@antgroup.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 3AACB80008 X-Stat-Signature: 53p9pyq1g3mtissgmc11ho1thgd9jmys X-HE-Tag: 1717388844-64495 X-HE-Meta: U2FsdGVkX1/eYgwUr3d06ZcNzQlzBHjdGlY8yV5q+Q5vqLqgbu1Yc2y5VrdZM6/RDxBEEdsWCXg1KQpEEj01aO6rtUwSUqlstpvZROsicAizX+R6QbGmcfmT+btDJWJFeX+awEqCWzv4arNMq98cpix1LnMp2YsECMAPS3p6PjjlmPYgwNBLCptSRXXyekUnVJVe6OIUKl55dDDU5O9RdXukh6IlS0ibyQ1ZQLTS+ndFuKAA6jR+q2TEmmh0WFaA7gklftApBCzBxRUKBbDzPZZmw+XEKQmBYmczG8Pn58Rl0/Tk4kW2cY2MHjLxp+BTDnXnFjz/ouOy32pCWB9EyChlJZ4M9BXtAqr5nUrPwXvFiH0WO7eORzdmk+K2k7ndSKOuwWeeC6DoFIvbLWO9QoDqtXkCpRwpqiMLPPuMrZo7qXv+eFG2hkkddcrId6w34cL4UEU/Z+9oqe+8Pleq4vAumGiWok4oej/V9Gkp1ihzUEvSmjPUCsnH7SbiGiNHlJ2ZrUVZ/nXgA9zUys4437aZcAEgFWGJ/N8M8eD31v0arM6D7JJ/1/cyOmlNDqXg4tTUpGcGHa0cXAbCsVHBt9mlwltvSheu3kNTkP1SAVnyyFi8oau+CsJdgHIA69K2FWbH7e59Cbdczkb5xDGv6vZehTnFGKO2o3uEmjkpZd93zDSNdR4Mn9a2Pa4SAvPzknMMpjPAQqqCVZ0q4K8xqVCLfHS0Zhs382JG5u9HwoxzFGXgsFRivF9EDKjS1NUDltmEmaGBX7SYh2ZnQqo78PGya5pS/4xei+xS53ywurUIVX/ct3P7++FCMAxMA2MqIIDCP1sddA/jyCjQpUAa3dOLg3ZX8k5eOiSBJjnH1EESa80ufDvB3NfO43m589Oqk/vjiVQXlXLx5/hYzHr6tj+Jly5++4qdUFrzmOeKxbMl6DJ8KjhXdbcrFhlFjo9T643mSelCy+uMeewOfm5 qfkV6Dsb fLKCzD7WsPGGqfOVCsk8ZUBOg/uIt0SFe9ZInIJ7DYYrdsEOtnqysZxCqGH1RmbspJtHwO4M8whVJ0PB6AcVN1YBL+KCNb2JyOCY2btiCuNAnr4fjaWmRu0zKfTDmkHglBDpHl8+UakBukpp42nYDwWZTAjI0cPebkgePVVwre49f+Cu12ru3SR1z5uti5AXRQqzegpKi31c4bT5ho2KihCS3wBxMv27RP7KURn7RzGAecUylF5QwyTJXg7blBSs1UZMxr2ih8PWSFTsRwtxbC7Qjq6cWybd/lc101uZPFv8ye5LThdg1r7aQWKb8JbYQ7fsQvRLcL9VxzIL3lLo+X+RuG8BpjLO30N0kJCz05E2+XYDnN9gAMW7O7hn/s+ahWP1VdzuXAO3B3qKEk2bq2+3yvyUl/8uYQul9znJweRlG24e8y3ZyVQ15+jmddjSZ1Wgp2WrqzR5iOZ8= 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: Hi Barry, Thanks for taking time to review! On Mon, Jun 3, 2024 at 12:14=E2=80=AFPM Barry Song <21cnbao@gmail.com> wrot= e: > > On Mon, Jun 3, 2024 at 3:31=E2=80=AFPM Lance Yang w= rote: > > > > Let's make folio_mlock_step() simply a wrapper around folio_pte_batch()= , > > which will greatly reduce the cost of ptep_get() when scanning a range = of > > contptes. > > > > Signed-off-by: Lance Yang > > --- > > mm/mlock.c | 23 ++++++----------------- > > 1 file changed, 6 insertions(+), 17 deletions(-) > > > > diff --git a/mm/mlock.c b/mm/mlock.c > > index 30b51cdea89d..1ae6232d38cf 100644 > > --- a/mm/mlock.c > > +++ b/mm/mlock.c > > @@ -307,26 +307,15 @@ void munlock_folio(struct folio *folio) > > static inline unsigned int folio_mlock_step(struct folio *folio, > > pte_t *pte, unsigned long addr, unsigned long end) > > { > > - unsigned int count, i, nr =3D folio_nr_pages(folio); > > - unsigned long pfn =3D folio_pfn(folio); > > - pte_t ptent =3D ptep_get(pte); > > - > > - if (!folio_test_large(folio)) > > + if (likely(!folio_test_large(folio))) > > return 1; > > > > - count =3D pfn + nr - pte_pfn(ptent); > > - count =3D min_t(unsigned int, count, (end - addr) >> PAGE_SHIFT= ); > > - > > - for (i =3D 0; i < count; i++, pte++) { > > - pte_t entry =3D ptep_get(pte); > > - > > - if (!pte_present(entry)) > > - break; > > - if (pte_pfn(entry) - pfn >=3D nr) > > - break; > > - } > > + const fpb_t fpb_flags =3D FPB_IGNORE_DIRTY | FPB_IGNORE_SOFT_DI= RTY; > > + int max_nr =3D (end - addr) / PAGE_SIZE; > > + pte_t ptent =3D ptep_get(pte); > > > > - return i; > > + return folio_pte_batch(folio, addr, pte, ptent, max_nr, fpb_fla= gs, NULL, > > + NULL, NULL); > > } > > what about a minimum change as below? Nice, that makes sense to me ;) I'll adjust as you suggested. Thanks again for your time! Lance > index 30b51cdea89d..e8b98f84fbd2 100644 > --- a/mm/mlock.c > +++ b/mm/mlock.c > @@ -307,26 +307,15 @@ void munlock_folio(struct folio *folio) > static inline unsigned int folio_mlock_step(struct folio *folio, > pte_t *pte, unsigned long addr, unsigned long end) > { > - unsigned int count, i, nr =3D folio_nr_pages(folio); > - unsigned long pfn =3D folio_pfn(folio); > + unsigned int count =3D (end - addr) >> PAGE_SHIFT; > pte_t ptent =3D ptep_get(pte); > + const fpb_t fpb_flags =3D FPB_IGNORE_DIRTY | FPB_IGNORE_SOFT_DIRT= Y; > > if (!folio_test_large(folio)) > return 1; > > - count =3D pfn + nr - pte_pfn(ptent); > - count =3D min_t(unsigned int, count, (end - addr) >> PAGE_SHIFT); > - > - for (i =3D 0; i < count; i++, pte++) { > - pte_t entry =3D ptep_get(pte); > - > - if (!pte_present(entry)) > - break; > - if (pte_pfn(entry) - pfn >=3D nr) > - break; > - } > - > - return i; > + return folio_pte_batch(folio, addr, pte, ptent, count, fpb_flags,= NULL, > + NULL, NULL); > } > > > > > > > static inline bool allow_mlock_munlock(struct folio *folio, > > -- > > 2.33.1 > >