From patchwork Mon Dec 26 08:44:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lorenzo Stoakes X-Patchwork-Id: 13081714 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 43DCDC46467 for ; Mon, 26 Dec 2022 08:44:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6BA35900004; Mon, 26 Dec 2022 03:44:32 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 669C4900002; Mon, 26 Dec 2022 03:44:32 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 49610900004; Mon, 26 Dec 2022 03:44:32 -0500 (EST) 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 3AE72900002 for ; Mon, 26 Dec 2022 03:44:32 -0500 (EST) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id F062B80730 for ; Mon, 26 Dec 2022 08:44:31 +0000 (UTC) X-FDA: 80283821142.24.E3F00F2 Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) by imf07.hostedemail.com (Postfix) with ESMTP id 50E3440008 for ; Mon, 26 Dec 2022 08:44:30 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=crtUviAZ; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf07.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.221.47 as permitted sender) smtp.mailfrom=lstoakes@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1672044270; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=WF0czWG0z2T4oq6TY2ZkLRE6dWmClGYr0kuRjGhgjlc=; b=0yNXiV7X9Lz0Pfz+kgaH0WsWCY48KLGPBSh4/3Mn58E99lXGjF3jZFCv5746MrSScHxmBG e4CrHbtJ+w1B7hkColII5V7XZ5sU9RZdcuirx2Smmcq79sTRIZuEu6wZkrh63vPNTnSPT5 Ax/PNfgSztOGQTVIHFt/srROFamCB+Y= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=crtUviAZ; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf07.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.221.47 as permitted sender) smtp.mailfrom=lstoakes@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1672044270; a=rsa-sha256; cv=none; b=5/ky/bA6hCkCr69uD1OZR6/FrTvsal+2J8ZBWU8QaV2W3Cb0SjHn91YXFvPNU264vaALQh FMPIYFhmsTHlIAIinpX3NZMQSUF2SgTuaOqBgLKpRKLynd2qcnJ+7HeRgDkl1TQep25iXH /YBxmyNPTz3SJBWYGnS/YLXRe0+XQks= Received: by mail-wr1-f47.google.com with SMTP id co23so9578556wrb.4 for ; Mon, 26 Dec 2022 00:44:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=WF0czWG0z2T4oq6TY2ZkLRE6dWmClGYr0kuRjGhgjlc=; b=crtUviAZFraW9aio2bfSjtkziz8WjnRNOQeWdAf0u2+zEXl0h09SG/WZwfa7gQsQ27 MwBMstJNcTGsxcyJdwiO/Cq/2RqaP0u6mT63Pr1kzywS9NS7F8l8vL++QkSVm05GBW/A o3WkDnb1eo7yJdm2vlfjRGLtVEmWExsY2rVqRLTB9KTprJPLVYnmvBYbZZLCACvPaerO b846AD5/3y/3sn0Z5ARghvOHSUmt6rfwK3q7eHBcAvpK2O4KPd1C+i4YKQafJAyq5BRd oi2X9EKu9iK6vqcKKjmRUKnAdCGgDZS4XwuBp8xzbbEbr/sKvLXkSAYyxPEKHk7x2Rdb sp1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=WF0czWG0z2T4oq6TY2ZkLRE6dWmClGYr0kuRjGhgjlc=; b=OPlQ5phiaGe0cyJ4ThlvYJhhjJN06Xd9t2k21YzmAGYIOlkzt+eG+rJxdIpLAN+G1H +HbP9yFKw3gjZM2HuVOHgNpL/v003I9h0cuCp3tu2UstG1Coq50K99+Xq4aD2RP7zuOC TcswPaZXhWcCizJYUPHVJ1sH2dQAUIZsbOnvRryc1LzymtApZaU0SPZfd5kEf0RIPGAw WjkgpSbLQsWYf30WRTZwi5wXafn1eCYjMriDpiteYbJvOiF37rtmQarsWtWB5202D4eC L+dNnnLCMB1e8mZpZbTmnorVvo6nH5yvIgJeHrtFxHxx8qeCsZYOD7AxbegdOiBMAdLS 1V7g== X-Gm-Message-State: AFqh2kq9zmocDsUdDxd5c+0w1MRvzlE1zreI7C4q0rZkbHrM+6PaQsg4 GAixIqJcaFf8WjpJZOIx3UzAv6Wmmjw= X-Google-Smtp-Source: AMrXdXvHrmDIUZtGPHoYbQh76pYeg6Gpq29Q4e+53IIvzHC+4BgsPCw3M80xOdXVeczWzxE2psz1eA== X-Received: by 2002:a5d:50c9:0:b0:236:770a:665a with SMTP id f9-20020a5d50c9000000b00236770a665amr9743724wrt.66.1672044268718; Mon, 26 Dec 2022 00:44:28 -0800 (PST) Received: from lucifer.home ([2a00:23c5:dc8c:8701:1663:9a35:5a7b:1d76]) by smtp.googlemail.com with ESMTPSA id m16-20020adffe50000000b00241bd7a7165sm10593253wrs.82.2022.12.26.00.44.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Dec 2022 00:44:28 -0800 (PST) From: Lorenzo Stoakes To: linux-mm@kvack.org, Andrew Morton , linux-kernel@vger.kernel.org Cc: Matthew Wilcox , Hugh Dickins , Vlastimil Babka , Liam Howlett , William Kucharski , Christian Brauner , Jonathan Corbet , Mike Rapoport , Joel Fernandes , Geert Uytterhoeven , Lorenzo Stoakes Subject: [PATCH v3 1/5] mm: pagevec: add folio_batch_reinit() Date: Mon, 26 Dec 2022 08:44:19 +0000 Message-Id: X-Mailer: git-send-email 2.39.0 In-Reply-To: References: MIME-Version: 1.0 X-Rspamd-Queue-Id: 50E3440008 X-Rspamd-Server: rspam09 X-Rspam-User: X-Stat-Signature: y3ca4sybbswzrpaeze113gzhmx9cm3tx X-HE-Tag: 1672044270-456304 X-HE-Meta: U2FsdGVkX18vl4bEQUnP7SnY+L/dr+Dk24sJMKBitza4cd4S2IBHHJ0e0oX1l1xXB9+UBiASKAqnWQLmg7y7Zpgujz3pjru1m/c+sw6or4OIdx2smRLB15s6LrzMB3fB9rDdx48vgNoh5qXiA98nEznFBvvVPY0t1PJQu69DbaOTr4Z+QFGTJ3/Fw99eksIQU8wS7QaEQ4uWr+R4Wtd+bFJy+pY3i4RSkjlCUAqCKNuUdlMIWSI8mHcv/1s0aTip4EGSJrp1DWEuGmaSjHbOXQ9LPQmJ6KjocgTy8HNpBgIjx6ye9XC5S4ngwWU7TXZA+aboheQfARkXMB4Yso+wCCWLQoWKLuwP+C86sPMkwklaLnSfeTs/isLroJOnvWDaYxJg4OJ09KabLzR4sv+YNDmjbDxJBB57+4h+Ht8OqiUSpLxR1KZrC5BcLP8YYjRIZ2Wf91DaV8P/lTlhpxaHNjXqApiotnHVkEzHQ2NZ+8g2GtsRA/8V6OpZqWRVvFvz5BYOoJpldbVvu31ktt+JcudCDl7cJ1Li/jI22A+r7++busXd/d7zqs2j+WDxG58Exk+sfpDQxodEtGAP+LNz2bN7m+ozBJj5Ng9TPh7OK6iYmtmSEXGt+JlbL0myYxsFNa70KIs5wraIddZSPEgSdSGmvlrqWg//fmeoI8c+lgJavkUAwlpXEpbAm+werh7mTooLmIoHc26ZHwAtORVMQqfsJocp8rsudRUpg7ak63b5qSy5+69HAnaxpvr1uhx6It5e/TbmJ1O7u55YiDGucuWTit1CQZfNz7O18kp2qIxvIf4fDqzUYzc3Be8Do3rSBO8ks97QQSYfN4CLnM+nVtKV7jwsa/x1fuRFkt5qcrZ7uh/A5WliQXQLT+jAR/XenPz76MNT0fnU9nAaf5wn3/hyYirnGvI2EOPf2b2Pdn8jatJh5jdV524ZiL3j/ru0BW0ToA2dhjKl9KP4OTp AQyYAfhO ltgtHJ0n1dY2NJ5Cvc+ra6HUlJtIzkDimahvAu9jrX9KGxkuYZVzcOh5IFLCJOZVdteRFPn4fqd54Xf3m3vksXZrJ290gUhJabPPHnSRBmxgQBV9WJfGXJD9qMVwFw3c60/4EN3FDyB37W/CbQXyYcOP/NcVGmDUils1lf16m933sNwI2GiE/g7Qd6A== 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: This performs the same task as pagevec_reinit(), only modifying a folio batch rather than a pagevec. Signed-off-by: Lorenzo Stoakes Acked-by: Vlastimil Babka --- include/linux/pagevec.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/linux/pagevec.h b/include/linux/pagevec.h index 215eb6c3bdc9..2a6f61a0c10a 100644 --- a/include/linux/pagevec.h +++ b/include/linux/pagevec.h @@ -103,6 +103,11 @@ static inline void folio_batch_init(struct folio_batch *fbatch) fbatch->percpu_pvec_drained = false; } +static inline void folio_batch_reinit(struct folio_batch *fbatch) +{ + fbatch->nr = 0; +} + static inline unsigned int folio_batch_count(struct folio_batch *fbatch) { return fbatch->nr; From patchwork Mon Dec 26 08:44:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lorenzo Stoakes X-Patchwork-Id: 13081715 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 724B6C4332F for ; Mon, 26 Dec 2022 08:44:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E5C88940007; Mon, 26 Dec 2022 03:44:33 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id DBD19900002; Mon, 26 Dec 2022 03:44:33 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BE911940007; Mon, 26 Dec 2022 03:44:33 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id A4058900002 for ; Mon, 26 Dec 2022 03:44:33 -0500 (EST) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 7157D1C5DC9 for ; Mon, 26 Dec 2022 08:44:33 +0000 (UTC) X-FDA: 80283821226.09.939D916 Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.50]) by imf01.hostedemail.com (Postfix) with ESMTP id AF9C640006 for ; Mon, 26 Dec 2022 08:44:31 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=eyqQ8EjX; spf=pass (imf01.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.221.50 as permitted sender) smtp.mailfrom=lstoakes@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=1672044271; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=VLkOKeT4uIbBG6ss89Hd1tlt6NrDYEFm7lc6id39hK0=; b=HBtGKLl9xjQH9fgoPTYqqj+hYvPyt18fpWr4ra4Y/GIvF1VvhCV8OGKM8ktZ3H96fVR6ml oJeldhHy+Ybu/cphOOWYM3OY4aH2ylNu4g4xxRloE3D3AMIYUUWGwC5Gg/RvydAcJON0gg DYAOr2hgmpxMEwopzZCTknBCmjUkJiM= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=eyqQ8EjX; spf=pass (imf01.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.221.50 as permitted sender) smtp.mailfrom=lstoakes@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1672044271; a=rsa-sha256; cv=none; b=q9h77kwmXmeD58DNdMyCTPdfgJHHLHSl8LbGPQssiKNNswsUyjaIqHycWe4t+K6k6XNQad RH5py8KGaDb3qXTX1Hg1gCi+MMAIQ8SEcSJnLUMPjsgelv+cXhn4hVesSkHyC1BAlMFsQ5 RJCRT4sii7+FKbp3JX3JwbnA6l+XWdU= Received: by mail-wr1-f50.google.com with SMTP id t15so736579wro.9 for ; Mon, 26 Dec 2022 00:44:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VLkOKeT4uIbBG6ss89Hd1tlt6NrDYEFm7lc6id39hK0=; b=eyqQ8EjXSV89/1fXCsCYjEV7+ama/10F8Lq2nRdB7uTKAW2hzK00tXiWUxmpcKeuo8 YKUSkkaks7fv4RgqSOHf/ukYKR+JSFiiGojlTRYLSnVVDFizkHESrcMmk2oLUxt7yves QTzb6LlkjYnOvrW2CHvQh6eJyzRkhfJpiyzO/X6CsBrm1DgAItMi/iO9n/i6zU53RxsP i+0bR0hkGBb4W/D7Iq01MJnHMjrx+gA9sh0jp5mszPsffkmVryh5sAoYjRxA7keQ5Iac hQWWTlj7X7fRnXpzSqHz0a8Qj+z4hYdIXT8ZA4jG/b1OLwH5Z3G7tkx9473TxSg/9vSK llzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=VLkOKeT4uIbBG6ss89Hd1tlt6NrDYEFm7lc6id39hK0=; b=0q38TC7JNUQeL3Gm9YydA0vgk+qbXJ6O2u+kUUjFGqemyzRW6Lc41jj6AVhqbfoZsw j3YrI0lYmp7GAyq8PyN0ZkcXhLhNV8uZFc/3GW2Y3MjpAfHFUDKtls4eRyC7xdtqiz4E EuQ077Wye4+Q5zg7H5lXRG0o3Y1U67dtJSxbCyK5ntIdssgo2d+fsiSuXfPvPte4ZzLn 1+jTJpmBFWlTH43cc/3M815DzZkBqaZwd0L10HNMBaK02dnd18JQZfLwtNDnVrqMnmv7 F61u5TxNa8Rznna6gTr7+53GLL9bYJz6LjyK1tJ55/uI+LmyMD5WbozsiiVno3F84Vyi hN0w== X-Gm-Message-State: AFqh2kqss/ppkzNEIhX8A2pJ+CVErIxU+UIWOaokXSqFUZv1UAy2r41l r47dnptYCWvZDbwkPAA1ZhcNZtOGV9w= X-Google-Smtp-Source: AMrXdXvkx0ZiKARj9eCYvPjSEESupfKR2o9UHPNbFBJCx+a7ivp762Cwovc55wun5cIBW6J0WwCwEA== X-Received: by 2002:a05:6000:18a6:b0:280:4a9:c8dd with SMTP id b6-20020a05600018a600b0028004a9c8ddmr783606wri.18.1672044269896; Mon, 26 Dec 2022 00:44:29 -0800 (PST) Received: from lucifer.home ([2a00:23c5:dc8c:8701:1663:9a35:5a7b:1d76]) by smtp.googlemail.com with ESMTPSA id m16-20020adffe50000000b00241bd7a7165sm10593253wrs.82.2022.12.26.00.44.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Dec 2022 00:44:29 -0800 (PST) From: Lorenzo Stoakes To: linux-mm@kvack.org, Andrew Morton , linux-kernel@vger.kernel.org Cc: Matthew Wilcox , Hugh Dickins , Vlastimil Babka , Liam Howlett , William Kucharski , Christian Brauner , Jonathan Corbet , Mike Rapoport , Joel Fernandes , Geert Uytterhoeven , Lorenzo Stoakes Subject: [PATCH v3 2/5] mm: mlock: use folios and a folio batch internally Date: Mon, 26 Dec 2022 08:44:20 +0000 Message-Id: <03ac78b416be5a361b79464acc3da7f93b9c37e8.1672043615.git.lstoakes@gmail.com> X-Mailer: git-send-email 2.39.0 In-Reply-To: References: MIME-Version: 1.0 X-Rspamd-Queue-Id: AF9C640006 X-Stat-Signature: qaeq8wri7tidzkddpguq8qymhbp5oi3x X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1672044271-603799 X-HE-Meta: U2FsdGVkX19PXFzLC8DGTyrxLRKQ/J7+dh0II4CCXKAevsBsuehJCktSb/uNxhlYARo6fZmrZ40FGVnP4F2+Q47xeG+pBkPgh9CWXQN5poZHG1pKaX7TzZWMRAGNel10cuqAuGf/4qMGUmwTNawUCXefDqOa88KQUhb3vd6dx/QEJNzBJhgrOH+M4al494HDDR0ATKBhAQOmr4sMGv0LUDG/gXyUTUt4C5/txxFj1dQsa/9zmCnr1hZFz3h9Oj9X0ghgU2CUd5YXJHO18sALt3Xv9AUba5oEV4O3+A3Kr/xv+vLqK8uA91XgYV/fmtQUxrubPteNyKSUL3zsyIhXoa30k+y+UwYQ3TyTAWb8Nbovp0fxeZvxAjpVSLVUMWAQTOBRzO3HiRSl8XO1BcshWKbDIGZm34hr/pb2QVYzD5P7t0fIzHjhs+l0ec+gTF+qnwlMLU7BiWxnGSLZ5sZIv3PMXSW/9aYDqixz21A36tC8y3frlmmG632LQW3LGcOsdId0f6lqLdAh00WV/qJiC4c/Sg/JZdVmCk8+asqaJa6R+SG1r3FLjIcyKSkTHL4eUFKDlYWndY0Iep84VfaZAVy3NvGa6YxAtBf3Y3CmAmhD4a3Pyf4b35I7agYniK/ipcg4TaWhKm55id5G/d8ym1tWWa+mV51q+l/i+0WpCyv3W4vQxgNbb9AsB+N2lgA7okSfGZUVAoZM0MdI+NNTdgVRBPXPC8mIRyHQg3k+lZ7IKEis8lyiamfGh/JLOSbYZoaZhGvxHWgfadiQOnTVpCFqfPUrtIzYWkjnsAU/ARCxL8MG+kS3CWGZbMj939OfPyJ9TaU4E9ROp9n9/t9Hr0JqRzPrgIjXCwWTU3ify9UZWuyrYcBJatWRl0BEBpCQ/8kRMQ6029kYGCc+gBRdt0YT6UqdPV7Kmq1GwmC8HJfn7IYrBJuLmnElkuCGazd+TAU11WPEs+GrmkH6njW m0K/N2T7 gG9ZnMejQz0H2RKWeROQjMwkcrFGfUC9pXJ78hoD2v/JRV1ktNH9BprgEerv6F7PO0YtINwMTIjSm8KPvhYAg4rOOKHksOdm3pxnHqT3Rp8bcpXaavAYB2/tk7Otu84GJD/Ss 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: This brings mlock in line with the folio batches declared in mm/swap.c and makes the code more consistent across the two. The existing mechanism for identifying which operation each folio in the batch is undergoing is maintained, i.e. using the lower 2 bits of the struct folio address (previously struct page address). This should continue to function correctly as folios remain at least system word-aligned. All invoctions of mlock() pass either a non-compound page or the head of a THP-compound page and no tail pages need updating so this functionality works with struct folios being used internally rather than struct pages. In this patch the external interface is kept identical to before in order to maintain separation between patches in the series, using a rather awkward conversion from struct page to struct folio in relevant functions. However, this maintenance of the existing interface is intended to be temporary - the next patch in the series will update the interfaces to accept folios directly. Signed-off-by: Lorenzo Stoakes Acked-by: Vlastimil Babka --- mm/mlock.c | 238 +++++++++++++++++++++++++++-------------------------- 1 file changed, 120 insertions(+), 118 deletions(-) diff --git a/mm/mlock.c b/mm/mlock.c index 7032f6dd0ce1..e9ba47fe67ed 100644 --- a/mm/mlock.c +++ b/mm/mlock.c @@ -28,12 +28,12 @@ #include "internal.h" -struct mlock_pvec { +struct mlock_fbatch { local_lock_t lock; - struct pagevec vec; + struct folio_batch fbatch; }; -static DEFINE_PER_CPU(struct mlock_pvec, mlock_pvec) = { +static DEFINE_PER_CPU(struct mlock_fbatch, mlock_fbatch) = { .lock = INIT_LOCAL_LOCK(lock), }; @@ -48,192 +48,192 @@ bool can_do_mlock(void) EXPORT_SYMBOL(can_do_mlock); /* - * Mlocked pages are marked with PageMlocked() flag for efficient testing + * Mlocked folios are marked with the PG_mlocked flag for efficient testing * in vmscan and, possibly, the fault path; and to support semi-accurate * statistics. * - * An mlocked page [PageMlocked(page)] is unevictable. As such, it will - * be placed on the LRU "unevictable" list, rather than the [in]active lists. - * The unevictable list is an LRU sibling list to the [in]active lists. - * PageUnevictable is set to indicate the unevictable state. + * An mlocked folio [folio_test_mlocked(folio)] is unevictable. As such, it + * will be ostensibly placed on the LRU "unevictable" list (actually no such + * list exists), rather than the [in]active lists. PG_unevictable is set to + * indicate the unevictable state. */ -static struct lruvec *__mlock_page(struct page *page, struct lruvec *lruvec) +static struct lruvec *__mlock_folio(struct folio *folio, struct lruvec *lruvec) { /* There is nothing more we can do while it's off LRU */ - if (!TestClearPageLRU(page)) + if (!folio_test_clear_lru(folio)) return lruvec; - lruvec = folio_lruvec_relock_irq(page_folio(page), lruvec); + lruvec = folio_lruvec_relock_irq(folio, lruvec); - if (unlikely(page_evictable(page))) { + if (unlikely(folio_evictable(folio))) { /* - * This is a little surprising, but quite possible: - * PageMlocked must have got cleared already by another CPU. - * Could this page be on the Unevictable LRU? I'm not sure, - * but move it now if so. + * This is a little surprising, but quite possible: PG_mlocked + * must have got cleared already by another CPU. Could this + * folio be unevictable? I'm not sure, but move it now if so. */ - if (PageUnevictable(page)) { - del_page_from_lru_list(page, lruvec); - ClearPageUnevictable(page); - add_page_to_lru_list(page, lruvec); + if (folio_test_unevictable(folio)) { + lruvec_del_folio(lruvec, folio); + folio_clear_unevictable(folio); + lruvec_add_folio(lruvec, folio); + __count_vm_events(UNEVICTABLE_PGRESCUED, - thp_nr_pages(page)); + folio_nr_pages(folio)); } goto out; } - if (PageUnevictable(page)) { - if (PageMlocked(page)) - page->mlock_count++; + if (folio_test_unevictable(folio)) { + if (folio_test_mlocked(folio)) + folio->mlock_count++; goto out; } - del_page_from_lru_list(page, lruvec); - ClearPageActive(page); - SetPageUnevictable(page); - page->mlock_count = !!PageMlocked(page); - add_page_to_lru_list(page, lruvec); - __count_vm_events(UNEVICTABLE_PGCULLED, thp_nr_pages(page)); + lruvec_del_folio(lruvec, folio); + folio_clear_active(folio); + folio_set_unevictable(folio); + folio->mlock_count = !!folio_test_mlocked(folio); + lruvec_add_folio(lruvec, folio); + __count_vm_events(UNEVICTABLE_PGCULLED, folio_nr_pages(folio)); out: - SetPageLRU(page); + folio_set_lru(folio); return lruvec; } -static struct lruvec *__mlock_new_page(struct page *page, struct lruvec *lruvec) +static struct lruvec *__mlock_new_folio(struct folio *folio, struct lruvec *lruvec) { - VM_BUG_ON_PAGE(PageLRU(page), page); + VM_BUG_ON_FOLIO(folio_test_lru(folio), folio); - lruvec = folio_lruvec_relock_irq(page_folio(page), lruvec); + lruvec = folio_lruvec_relock_irq(folio, lruvec); /* As above, this is a little surprising, but possible */ - if (unlikely(page_evictable(page))) + if (unlikely(folio_evictable(folio))) goto out; - SetPageUnevictable(page); - page->mlock_count = !!PageMlocked(page); - __count_vm_events(UNEVICTABLE_PGCULLED, thp_nr_pages(page)); + folio_set_unevictable(folio); + folio->mlock_count = !!folio_test_mlocked(folio); + __count_vm_events(UNEVICTABLE_PGCULLED, folio_nr_pages(folio)); out: - add_page_to_lru_list(page, lruvec); - SetPageLRU(page); + lruvec_add_folio(lruvec, folio); + folio_set_lru(folio); return lruvec; } -static struct lruvec *__munlock_page(struct page *page, struct lruvec *lruvec) +static struct lruvec *__munlock_folio(struct folio *folio, struct lruvec *lruvec) { - int nr_pages = thp_nr_pages(page); + int nr_pages = folio_nr_pages(folio); bool isolated = false; - if (!TestClearPageLRU(page)) + if (!folio_test_clear_lru(folio)) goto munlock; isolated = true; - lruvec = folio_lruvec_relock_irq(page_folio(page), lruvec); + lruvec = folio_lruvec_relock_irq(folio, lruvec); - if (PageUnevictable(page)) { + if (folio_test_unevictable(folio)) { /* Then mlock_count is maintained, but might undercount */ - if (page->mlock_count) - page->mlock_count--; - if (page->mlock_count) + if (folio->mlock_count) + folio->mlock_count--; + if (folio->mlock_count) goto out; } /* else assume that was the last mlock: reclaim will fix it if not */ munlock: - if (TestClearPageMlocked(page)) { - __mod_zone_page_state(page_zone(page), NR_MLOCK, -nr_pages); - if (isolated || !PageUnevictable(page)) + if (folio_test_clear_mlocked(folio)) { + zone_stat_mod_folio(folio, NR_MLOCK, -nr_pages); + if (isolated || !folio_test_unevictable(folio)) __count_vm_events(UNEVICTABLE_PGMUNLOCKED, nr_pages); else __count_vm_events(UNEVICTABLE_PGSTRANDED, nr_pages); } - /* page_evictable() has to be checked *after* clearing Mlocked */ - if (isolated && PageUnevictable(page) && page_evictable(page)) { - del_page_from_lru_list(page, lruvec); - ClearPageUnevictable(page); - add_page_to_lru_list(page, lruvec); + /* folio_evictable() has to be checked *after* clearing Mlocked */ + if (isolated && folio_test_unevictable(folio) && folio_evictable(folio)) { + lruvec_del_folio(lruvec, folio); + folio_clear_unevictable(folio); + lruvec_add_folio(lruvec, folio); __count_vm_events(UNEVICTABLE_PGRESCUED, nr_pages); } out: if (isolated) - SetPageLRU(page); + folio_set_lru(folio); return lruvec; } /* - * Flags held in the low bits of a struct page pointer on the mlock_pvec. + * Flags held in the low bits of a struct folio pointer on the mlock_fbatch. */ #define LRU_PAGE 0x1 #define NEW_PAGE 0x2 -static inline struct page *mlock_lru(struct page *page) +static inline struct folio *mlock_lru(struct folio *folio) { - return (struct page *)((unsigned long)page + LRU_PAGE); + return (struct folio *)((unsigned long)folio + LRU_PAGE); } -static inline struct page *mlock_new(struct page *page) +static inline struct folio *mlock_new(struct folio *folio) { - return (struct page *)((unsigned long)page + NEW_PAGE); + return (struct folio *)((unsigned long)folio + NEW_PAGE); } /* - * mlock_pagevec() is derived from pagevec_lru_move_fn(): - * perhaps that can make use of such page pointer flags in future, - * but for now just keep it for mlock. We could use three separate - * pagevecs instead, but one feels better (munlocking a full pagevec - * does not need to drain mlocking pagevecs first). + * mlock_folio_batch() is derived from folio_batch_move_lru(): perhaps that can + * make use of such page pointer flags in future, but for now just keep it for + * mlock. We could use three separate folio batches instead, but one feels + * better (munlocking a full folio batch does not need to drain mlocking folio + * batches first). */ -static void mlock_pagevec(struct pagevec *pvec) +static void mlock_folio_batch(struct folio_batch *fbatch) { struct lruvec *lruvec = NULL; unsigned long mlock; - struct page *page; + struct folio *folio; int i; - for (i = 0; i < pagevec_count(pvec); i++) { - page = pvec->pages[i]; - mlock = (unsigned long)page & (LRU_PAGE | NEW_PAGE); - page = (struct page *)((unsigned long)page - mlock); - pvec->pages[i] = page; + for (i = 0; i < folio_batch_count(fbatch); i++) { + folio = fbatch->folios[i]; + mlock = (unsigned long)folio & (LRU_PAGE | NEW_PAGE); + folio = (struct folio *)((unsigned long)folio - mlock); + fbatch->folios[i] = folio; if (mlock & LRU_PAGE) - lruvec = __mlock_page(page, lruvec); + lruvec = __mlock_folio(folio, lruvec); else if (mlock & NEW_PAGE) - lruvec = __mlock_new_page(page, lruvec); + lruvec = __mlock_new_folio(folio, lruvec); else - lruvec = __munlock_page(page, lruvec); + lruvec = __munlock_folio(folio, lruvec); } if (lruvec) unlock_page_lruvec_irq(lruvec); - release_pages(pvec->pages, pvec->nr); - pagevec_reinit(pvec); + release_pages(fbatch->folios, fbatch->nr); + folio_batch_reinit(fbatch); } void mlock_page_drain_local(void) { - struct pagevec *pvec; + struct folio_batch *fbatch; - local_lock(&mlock_pvec.lock); - pvec = this_cpu_ptr(&mlock_pvec.vec); - if (pagevec_count(pvec)) - mlock_pagevec(pvec); - local_unlock(&mlock_pvec.lock); + local_lock(&mlock_fbatch.lock); + fbatch = this_cpu_ptr(&mlock_fbatch.fbatch); + if (folio_batch_count(fbatch)) + mlock_folio_batch(fbatch); + local_unlock(&mlock_fbatch.lock); } void mlock_page_drain_remote(int cpu) { - struct pagevec *pvec; + struct folio_batch *fbatch; WARN_ON_ONCE(cpu_online(cpu)); - pvec = &per_cpu(mlock_pvec.vec, cpu); - if (pagevec_count(pvec)) - mlock_pagevec(pvec); + fbatch = &per_cpu(mlock_fbatch.fbatch, cpu); + if (folio_batch_count(fbatch)) + mlock_folio_batch(fbatch); } bool need_mlock_page_drain(int cpu) { - return pagevec_count(&per_cpu(mlock_pvec.vec, cpu)); + return folio_batch_count(&per_cpu(mlock_fbatch.fbatch, cpu)); } /** @@ -242,10 +242,10 @@ bool need_mlock_page_drain(int cpu) */ void mlock_folio(struct folio *folio) { - struct pagevec *pvec; + struct folio_batch *fbatch; - local_lock(&mlock_pvec.lock); - pvec = this_cpu_ptr(&mlock_pvec.vec); + local_lock(&mlock_fbatch.lock); + fbatch = this_cpu_ptr(&mlock_fbatch.fbatch); if (!folio_test_set_mlocked(folio)) { int nr_pages = folio_nr_pages(folio); @@ -255,10 +255,10 @@ void mlock_folio(struct folio *folio) } folio_get(folio); - if (!pagevec_add(pvec, mlock_lru(&folio->page)) || + if (!folio_batch_add(fbatch, mlock_lru(folio)) || folio_test_large(folio) || lru_cache_disabled()) - mlock_pagevec(pvec); - local_unlock(&mlock_pvec.lock); + mlock_folio_batch(fbatch); + local_unlock(&mlock_fbatch.lock); } /** @@ -267,20 +267,22 @@ void mlock_folio(struct folio *folio) */ void mlock_new_page(struct page *page) { - struct pagevec *pvec; - int nr_pages = thp_nr_pages(page); + struct folio_batch *fbatch; + struct folio *folio = page_folio(page); + int nr_pages = folio_nr_pages(folio); - local_lock(&mlock_pvec.lock); - pvec = this_cpu_ptr(&mlock_pvec.vec); - SetPageMlocked(page); - mod_zone_page_state(page_zone(page), NR_MLOCK, nr_pages); + local_lock(&mlock_fbatch.lock); + fbatch = this_cpu_ptr(&mlock_fbatch.fbatch); + folio_set_mlocked(folio); + + zone_stat_mod_folio(folio, NR_MLOCK, nr_pages); __count_vm_events(UNEVICTABLE_PGMLOCKED, nr_pages); - get_page(page); - if (!pagevec_add(pvec, mlock_new(page)) || - PageHead(page) || lru_cache_disabled()) - mlock_pagevec(pvec); - local_unlock(&mlock_pvec.lock); + folio_get(folio); + if (!folio_batch_add(fbatch, mlock_new(folio)) || + folio_test_large(folio) || lru_cache_disabled()) + mlock_folio_batch(fbatch); + local_unlock(&mlock_fbatch.lock); } /** @@ -289,20 +291,20 @@ void mlock_new_page(struct page *page) */ void munlock_page(struct page *page) { - struct pagevec *pvec; + struct folio_batch *fbatch; + struct folio *folio = page_folio(page); - local_lock(&mlock_pvec.lock); - pvec = this_cpu_ptr(&mlock_pvec.vec); + local_lock(&mlock_fbatch.lock); + fbatch = this_cpu_ptr(&mlock_fbatch.fbatch); /* - * TestClearPageMlocked(page) must be left to __munlock_page(), - * which will check whether the page is multiply mlocked. + * folio_test_clear_mlocked(folio) must be left to __munlock_folio(), + * which will check whether the folio is multiply mlocked. */ - - get_page(page); - if (!pagevec_add(pvec, page) || - PageHead(page) || lru_cache_disabled()) - mlock_pagevec(pvec); - local_unlock(&mlock_pvec.lock); + folio_get(folio); + if (!folio_batch_add(fbatch, folio) || + folio_test_large(folio) || lru_cache_disabled()) + mlock_folio_batch(fbatch); + local_unlock(&mlock_fbatch.lock); } static int mlock_pte_range(pmd_t *pmd, unsigned long addr, From patchwork Mon Dec 26 08:44:21 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lorenzo Stoakes X-Patchwork-Id: 13081716 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 A9AFAC46467 for ; Mon, 26 Dec 2022 08:44:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BC30B900002; Mon, 26 Dec 2022 03:44:34 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B7385940008; Mon, 26 Dec 2022 03:44:34 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9C5AC900005; Mon, 26 Dec 2022 03:44:34 -0500 (EST) 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 8B263900002 for ; Mon, 26 Dec 2022 03:44:34 -0500 (EST) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 65701A01F6 for ; Mon, 26 Dec 2022 08:44:34 +0000 (UTC) X-FDA: 80283821268.01.6B1DBDE Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) by imf03.hostedemail.com (Postfix) with ESMTP id B868A20008 for ; Mon, 26 Dec 2022 08:44:32 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b="S/g5U5Kb"; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf03.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.221.49 as permitted sender) smtp.mailfrom=lstoakes@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1672044272; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=BAasLS5piscKHmj2mkeiZECl/zgxp7yB65Ha7FfxjAc=; b=LEraxo0nv1uMpBdVkGhRKMR/KS/yMMHwNqqLXoXBOUT+ajPR+WY026Tff4SMkuaVPDvHPE +WlKmIaRXZecufA9VXLgv3faM3cxoJjTpphOS1JI3tQ6N5shXY2WWSdOg0UsPPZM/u214R ENxaGrUK5RsvgcTYTxznAq0Rmi3+Gsw= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b="S/g5U5Kb"; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf03.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.221.49 as permitted sender) smtp.mailfrom=lstoakes@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1672044272; a=rsa-sha256; cv=none; b=KW+9DkhTmRUJxM2sVjc0yE7Z9yO8x3mOG7e3PNx/x1tHxK1Biqq/EQRRGFDdhX3ZmP6i32 8hwHJ3hWP5vvjl5aII/p7nzgmwiVRlsWSsBAtjisEiDNwaS9vzUpJ1MFcPDOpOM8hDiSrY z0RxUod7lXtANH9zq/DqxIO92zlW2Ts= Received: by mail-wr1-f49.google.com with SMTP id h16so9542896wrz.12 for ; Mon, 26 Dec 2022 00:44:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=BAasLS5piscKHmj2mkeiZECl/zgxp7yB65Ha7FfxjAc=; b=S/g5U5KbNJO2Sul16L8x7UQIrS1nwPDHZCJqliviGoCbAelu50KAZS5EDTDI2B1WET TZD/IxLEnU4suuSVPTGW/Pp7CO+apWw4N8vFTQVUV2VAuxcJSEad7cCx9CakEC75Zrsh Bg6DKhFlimPpanqAhoL5WVNrrfy525sZR0bgCTYRZ+ASQDrbFkfxLYX66nyGfQU01akV IPO6HobN7IHqzqSItuWDJa2arEL5YcqpxDTLO8K2qht84kZzdvsKhEjyXlBZP/MrYJ78 AaP2KwxZCKIEMwLpsW1/Ube9WBplv3FVy9DQ/c5g0bxvnNqP/HQ2DzYmlpUkLgRoWxPF Diqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=BAasLS5piscKHmj2mkeiZECl/zgxp7yB65Ha7FfxjAc=; b=CCITm9dFao+hhKEkGSYLRs7EyANjsOwZV0yKKAQlmDBOWFmcB4Zzp5Pz97vjOw87l7 0KUQWHdIHlR/w+tPYuydOzShutbNNpnRaOGXqTu4XtbChO+SAIMLmSRMrnfHE0U+UW0j FFO2G6nUiwdJnetvOEzHJ3Oli/0Is0m2UV2VjzcuNfZdeii4yPI7f1e88EI2IZ8x4sMT zoO9CtydTqIsKNhBwRgdnYYHYTFY6zG1uJpvEWV2B2zva65uVoBGrQ2gkXBY/imYJzih DTaJagyU0aABQZ32oUGoeO+9+JmirWuzGgVea/YV0pEeZvJaJ6KOgB46Qj0Z2pTv2DMl izww== X-Gm-Message-State: AFqh2kqwRoc3Cl1zf+0p27JdcIyn3p/qpzx+lnjR50W5t9lJmjwO1Zyu wO+pdEMndLFBr2mAK7UdpEDTGLvE1W0= X-Google-Smtp-Source: AMrXdXvviisHQb2mXnJZVBNdr+6iL8AQ80jBKLi2sJvWvpvs1vVzsBq7ECSgs7SC23AXa2Vx+sLZBA== X-Received: by 2002:adf:a4c3:0:b0:242:7279:a56b with SMTP id h3-20020adfa4c3000000b002427279a56bmr11645451wrb.56.1672044271211; Mon, 26 Dec 2022 00:44:31 -0800 (PST) Received: from lucifer.home ([2a00:23c5:dc8c:8701:1663:9a35:5a7b:1d76]) by smtp.googlemail.com with ESMTPSA id m16-20020adffe50000000b00241bd7a7165sm10593253wrs.82.2022.12.26.00.44.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Dec 2022 00:44:30 -0800 (PST) From: Lorenzo Stoakes To: linux-mm@kvack.org, Andrew Morton , linux-kernel@vger.kernel.org Cc: Matthew Wilcox , Hugh Dickins , Vlastimil Babka , Liam Howlett , William Kucharski , Christian Brauner , Jonathan Corbet , Mike Rapoport , Joel Fernandes , Geert Uytterhoeven , Lorenzo Stoakes Subject: [PATCH v3 3/5] m68k/mm/motorola: specify pmd_page() type Date: Mon, 26 Dec 2022 08:44:21 +0000 Message-Id: <4b59f47ff4cd89ff76a5b6edbef6e8e0b37046f1.1672043615.git.lstoakes@gmail.com> X-Mailer: git-send-email 2.39.0 In-Reply-To: References: MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: B868A20008 X-Stat-Signature: 8dazr1b5pj5oqgzqbnpw6tk3htcbqbdw X-HE-Tag: 1672044272-513453 X-HE-Meta: U2FsdGVkX19FqGQmP7lPv0INLfmOqhVTCZiF3BqHIwGnuaqOeuwL7bCdJVgHJLYKJQ8FHCp7QsEBhcbhKTxjAjd9XhH+SsS/gTmax4QGyhx8VSrroka5CGiSgHQIdGkRcWuQloS3OI6rsNVsmKjR4E4aRnFkm/DqtnHJS+IbcK/ddL6zxW2R1VS+gn47MT1bFjxuMXLWrWhA1eSNnTPAHUTmtIBKkOwGtpHWCHfEanR9+EO8bPVAmW6GjBGl76UTgurafn3p6RSUdf8KM0scO2mQBTo1lbBqwvBLhK4SJbKkYUT1REAQhi1TU5rGLJ48xjKybJsr6W7ZQsvGuGyt4bcJYTQuzzxvflaRPtbuikwuarJldKBcfi195qBYPlilkuaKJfoU+mgYMYPEYmgeuA8SUqa2PeDo/NhTNGkudN/VbD6ImD2Dm7E47/8lhY2Ie/NBr1XzAor6ooj7+8ciyxeImMTm+nbMQPvsRGJZ3cG17KA7d7JSByxQZi8o3DD8IS3dz6pl75XAMTp/iDO7IPyn7MberReDS5DIo/stUiT7AoFPY90nhCrB89ejRQNEDmCyYoMvVe35rDEcvAOc2HXOyjANpIx/7EoDlQGhFdVUIePCvHP/m2X1kHoo6A66Slv5gJKd82gpRqJxCrJaQQnzK1NLPcQJFd0qBZmt8iSbTJ9OLG91Rn2o1V+QiLRhCohS7VLW17bXEEZi8ccXjOiXhbs+uRe+1TwqWOT4XrGyqLJtery9pJ1/ujYhWDNwtOr8dovECjkGWoh7PQxBRzxrUa67M8m/2W4IKYmgOWmOQTPAeZyY0rT5r9hEKj98v5qVNz93RVqflxsDxP2mFN4CTlViUiOGnaGc4cRY9HdCR9bQluxZ3JaZUZurJU/r5DXr7nxKv2cfZHrIKBAJ7k3iYgv5ikg7/4sCcKMggy4kASMk9zry2cSEu6G5qzmxoAy0w1b7+RW2e6vrPam HB0/Gmz9 ptCyyaoySMNlwfx4pDZ2jh7hhYPzY9mISVwFF9XpfaKlR23EcJZ/elGiXHY+FZ9KRGZx8OdqQL6R2hDmqzRs989HOSTGcH5THuPFMGkLdSLSar2UL30RnHUwwqrpNYtE7IBP4xis2uuFYM2vNtyf103QstHpwIzC/LY8EUgvBmm6hH0jP8tZs6pPq9A== 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: Failing to specify a specific type here breaks anything that relies on the type being explicitly known, such as page_folio(). Make explicit the type of null pointer returned here. Signed-off-by: Lorenzo Stoakes Acked-by: Geert Uytterhoeven Acked-by: Vlastimil Babka --- arch/m68k/include/asm/motorola_pgtable.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/m68k/include/asm/motorola_pgtable.h b/arch/m68k/include/asm/motorola_pgtable.h index 7ac3d64c6b33..562b54e09850 100644 --- a/arch/m68k/include/asm/motorola_pgtable.h +++ b/arch/m68k/include/asm/motorola_pgtable.h @@ -124,7 +124,7 @@ static inline void pud_set(pud_t *pudp, pmd_t *pmdp) * expects pmd_page() to exists, only to then DCE it all. Provide a dummy to * make the compiler happy. */ -#define pmd_page(pmd) NULL +#define pmd_page(pmd) ((struct page *)NULL) #define pud_none(pud) (!pud_val(pud)) From patchwork Mon Dec 26 08:44:22 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lorenzo Stoakes X-Patchwork-Id: 13081717 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 18D33C3DA79 for ; Mon, 26 Dec 2022 08:44:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 840AF940009; Mon, 26 Dec 2022 03:44:35 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 7CAC4940008; Mon, 26 Dec 2022 03:44:35 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5F591940009; Mon, 26 Dec 2022 03:44:35 -0500 (EST) 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 512F4940008 for ; Mon, 26 Dec 2022 03:44:35 -0500 (EST) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 2A042C05FA for ; Mon, 26 Dec 2022 08:44:35 +0000 (UTC) X-FDA: 80283821310.28.8BAB926 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) by imf01.hostedemail.com (Postfix) with ESMTP id 82C7940006 for ; Mon, 26 Dec 2022 08:44:33 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=FgkDWhxX; spf=pass (imf01.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.221.42 as permitted sender) smtp.mailfrom=lstoakes@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=1672044273; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=65qxl2pPQDnBMbGwdUZ+PFGonfHL4ihIaGu2BHcPC3E=; b=jN8lnvDGZAqf4HhPDgUo2ozBAB7H/RSKCPkcsirTn8il4rk8zEaP+/+K+1eYa0X7XOroxJ 1QRTCmK1eASxAYjWiuA8DfucMiEe+kkx44luJ9drNMS96memMdP1Fa0v1Imsbf6rTO+bZa pzwBpONo3nB6GB5ib65yFNQWGqWiILE= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=FgkDWhxX; spf=pass (imf01.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.221.42 as permitted sender) smtp.mailfrom=lstoakes@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1672044273; a=rsa-sha256; cv=none; b=7tZbiBuX0IqHehTFvm4mht1CPITnNkn/UtP0kzdHYAPdcx8wcQNxC6hTyNc9iAxTmK3bs9 E3y4bicJyVUhXydftjpTV6vorEiPVClFvTW89dqeZN+7Z72RDuezrrrpSyPTvA+fiyspYY UxVJsrZouUdPH5Y5OiLZUZOx9MEMSN4= Received: by mail-wr1-f42.google.com with SMTP id j17so4203307wrr.7 for ; Mon, 26 Dec 2022 00:44:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=65qxl2pPQDnBMbGwdUZ+PFGonfHL4ihIaGu2BHcPC3E=; b=FgkDWhxXChE2Ah6CAPAdtfnpZw2aUSmE9f8oFWA0FnR8ofTYUM1SDtwnT6VuCIBVNy PTMlbo4WkY0LpvkaVci/gogKcodFLwGQNAvF56lh2J0b6k/o+RGBIBtOFfVGggfA1tyh d6DG7FBQqIBKSoQY6KL3aKyVUq+3UAFwt8v/NevHvrNlJ4hsTj8jX1FiT3vdO/uj7SeO NYvf3X2VK5jEswRAfscG5X/I6pmd+e9ifMdsTrRNKKWzyCQ90hufV3nfffCgjuidGU3Y qMnOxEPFJ6f95vhqsj/XUwM+7uaOP5SYhs/t5uz40SFCHEBAneKTY22D/Z22mFN+P917 Am8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=65qxl2pPQDnBMbGwdUZ+PFGonfHL4ihIaGu2BHcPC3E=; b=GFAmqpWqIcdjWIk5KPsJAKAsPjLpZ8L3DQFQVXCtx2IG4xSSv4HcY20DGBhY5MRRTw L6+b9U090fN0wuuRdW80uBWo33b7OcVSi7k5t/gwx11YGQ4TahWdA/eUVJSAiuX1LISI /D7bTsFY+qTuT0kStMCJKmt3fVA7jsh3CPkUjHtjSwaWHI4HcUdyT9p2tQJjJATWunGV 4SNGpzciii/fvQBbE/FF0rAdf5ggHBuvFrZgkbQ3xiCgCbGyzpwTHmHv1PE4iSC9PkIA L6ALDPuFesSbJKiQ92otvumYb5q9YSaFNaacdt9NqTklPpApi7dKA/EApWC1EsTYxncQ HkWQ== X-Gm-Message-State: AFqh2kqAMBX2bupzsUK8uDmNC55i9CacJrpvIBD17lfRtnZOLKtipTFC AYpVO2qibKeXImlQ/moEJO8xuyzref0= X-Google-Smtp-Source: AMrXdXslUa0w4r+uVtAIHdIox5/CO/jCEnlpT1uvf+NMtbH+3xN1khmtIZti8q1jPLjsins5m6+Olw== X-Received: by 2002:adf:e5ce:0:b0:27e:520f:1093 with SMTP id a14-20020adfe5ce000000b0027e520f1093mr1282397wrn.37.1672044272478; Mon, 26 Dec 2022 00:44:32 -0800 (PST) Received: from lucifer.home ([2a00:23c5:dc8c:8701:1663:9a35:5a7b:1d76]) by smtp.googlemail.com with ESMTPSA id m16-20020adffe50000000b00241bd7a7165sm10593253wrs.82.2022.12.26.00.44.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Dec 2022 00:44:31 -0800 (PST) From: Lorenzo Stoakes To: linux-mm@kvack.org, Andrew Morton , linux-kernel@vger.kernel.org Cc: Matthew Wilcox , Hugh Dickins , Vlastimil Babka , Liam Howlett , William Kucharski , Christian Brauner , Jonathan Corbet , Mike Rapoport , Joel Fernandes , Geert Uytterhoeven , Lorenzo Stoakes Subject: [PATCH v3 4/5] mm: mlock: update the interface to use folios Date: Mon, 26 Dec 2022 08:44:22 +0000 Message-Id: X-Mailer: git-send-email 2.39.0 In-Reply-To: References: MIME-Version: 1.0 X-Rspamd-Queue-Id: 82C7940006 X-Stat-Signature: k87cdk9mq4jwxx85diumhrgge7u89i3e X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1672044273-523122 X-HE-Meta: U2FsdGVkX1+klQ3ym6EdBsrpWvqTDonlqGATI1BZ6iTdv9mlJt5NVN+iLXlEZnJFVH/cW0dcjTALMKHuVPCgz5iuSVe7SzSFxP4v16BACySoZmtrIwlAwXWS6G6xKLwSx0UWzTh8K9yJHS66DpEpal+D4CXlFgTfXgonMEcA6kSXkcddtYa5JxzINUecN+lbzIFf6R6Js1OUD5mnEaG5FX0cnV57DOEt5QDSHqT4GocO8TmRMB4kqHXnQMDlfubEhFBEpvOGRuFDdBoZvw41P7/JfX1TjNTqcVtHHOT1W2hGuN/f2pUKXzJNwakfA9XCLwfwTWjf6zXGBguvQrXl5H0+2E+CFSoiJcmNKMsXc/KW9nqcE0+eyUQGyQtHj1F3IOWWgutNjLThyDM/G1iFRvxkY9Mnp2eoHgvGuoExy2VXHvnftpM/Ot7OPHs9f9wuMXcc6EvsdY3/EhJrFXMadwoNDhUCCYtX1w3rVnLQKDFxxkD1nAEyi/7bG0aOB8D2BNmVwQawFXYsvcoz9fb3B0cBavD+Ls40+M+2Y1QTUDt/gDhM1S5L6BNoD6PM0z0hy1n7A5VcLzrPHSkMnB2PI7PNzRWick+zy4gNtHzFhMwNHrhkWJKjbVS3r1EZOBgETQEo7BWMWjonJgUF/f59rvQVJE7+nRb99bIZRrBg5Gv8+GuJuS8u5bSStVllJ0LqQ6BVcDyzhkUyFNaGYF0SyDSM0EHJC5j9rXgdxpAVTjvjiGysVk28VMc+iSOH7/ahLXVZcFlWhB4qStSr3qoqgVDIg7I6/cS5ZVjbxdDTMieRakkk0FHeRpilEwSFux8IXz7w6jVR5uP1RPy0XmSSCZI4HPLVNQZWySs7ObyUkhyO1N/eUD0eOWspsFc52BId1SFL7ICguW/0jST4+/EW49CX9oOkTIZUz0aQXE//SUTDmBT4Rb7eAZYVhkxWhYywQdKBmZEZtHBUjs37M9K Z++2QMxX vP081IJgkJctmSWBp3hXQPuzCMVVd9tODMSZhc1l42LezvtOG5MHYF6uQVtZYZ8+4hq1u9m3xiCezwhmfAddLXefX22DKUEvMCcZnrUqWBzyv+JgpeV5+LWpjP7fcPBAARvrk 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: This patch updates the mlock interface to accept folios rather than pages, bringing the interface in line with the internal implementation. munlock_vma_page() still requires a page_folio() conversion, however this is consistent with the existent mlock_vma_page() implementation and a product of rmap still dealing in pages rather than folios. Signed-off-by: Lorenzo Stoakes Acked-by: Vlastimil Babka --- mm/internal.h | 26 ++++++++++++++++---------- mm/mlock.c | 32 +++++++++++++++----------------- mm/swap.c | 2 +- 3 files changed, 32 insertions(+), 28 deletions(-) diff --git a/mm/internal.h b/mm/internal.h index 1d6f4e168510..8a6e83315369 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -515,10 +515,9 @@ extern int mlock_future_check(struct mm_struct *mm, unsigned long flags, * should be called with vma's mmap_lock held for read or write, * under page table lock for the pte/pmd being added or removed. * - * mlock is usually called at the end of page_add_*_rmap(), - * munlock at the end of page_remove_rmap(); but new anon - * pages are managed by lru_cache_add_inactive_or_unevictable() - * calling mlock_new_page(). + * mlock is usually called at the end of page_add_*_rmap(), munlock at + * the end of page_remove_rmap(); but new anon folios are managed by + * folio_add_lru_vma() calling mlock_new_folio(). * * @compound is used to include pmd mappings of THPs, but filter out * pte mappings of THPs, which cannot be consistently counted: a pte @@ -547,15 +546,22 @@ static inline void mlock_vma_page(struct page *page, mlock_vma_folio(page_folio(page), vma, compound); } -void munlock_page(struct page *page); -static inline void munlock_vma_page(struct page *page, +void munlock_folio(struct folio *folio); + +static inline void munlock_vma_folio(struct folio *folio, struct vm_area_struct *vma, bool compound) { if (unlikely(vma->vm_flags & VM_LOCKED) && - (compound || !PageTransCompound(page))) - munlock_page(page); + (compound || !folio_test_large(folio))) + munlock_folio(folio); +} + +static inline void munlock_vma_page(struct page *page, + struct vm_area_struct *vma, bool compound) +{ + munlock_vma_folio(page_folio(page), vma, compound); } -void mlock_new_page(struct page *page); +void mlock_new_folio(struct folio *folio); bool need_mlock_page_drain(int cpu); void mlock_page_drain_local(void); void mlock_page_drain_remote(int cpu); @@ -647,7 +653,7 @@ static inline void mlock_vma_page(struct page *page, struct vm_area_struct *vma, bool compound) { } static inline void munlock_vma_page(struct page *page, struct vm_area_struct *vma, bool compound) { } -static inline void mlock_new_page(struct page *page) { } +static inline void mlock_new_folio(struct folio *folio) { } static inline bool need_mlock_page_drain(int cpu) { return false; } static inline void mlock_page_drain_local(void) { } static inline void mlock_page_drain_remote(int cpu) { } diff --git a/mm/mlock.c b/mm/mlock.c index e9ba47fe67ed..3982ef4d1632 100644 --- a/mm/mlock.c +++ b/mm/mlock.c @@ -262,13 +262,12 @@ void mlock_folio(struct folio *folio) } /** - * mlock_new_page - mlock a newly allocated page not yet on LRU - * @page: page to be mlocked, either a normal page or a THP head. + * mlock_new_folio - mlock a newly allocated folio not yet on LRU + * @folio: folio to be mlocked, either normal or a THP head. */ -void mlock_new_page(struct page *page) +void mlock_new_folio(struct folio *folio) { struct folio_batch *fbatch; - struct folio *folio = page_folio(page); int nr_pages = folio_nr_pages(folio); local_lock(&mlock_fbatch.lock); @@ -286,13 +285,12 @@ void mlock_new_page(struct page *page) } /** - * munlock_page - munlock a page - * @page: page to be munlocked, either a normal page or a THP head. + * munlock_folio - munlock a folio + * @folio: folio to be munlocked, either normal or a THP head. */ -void munlock_page(struct page *page) +void munlock_folio(struct folio *folio) { struct folio_batch *fbatch; - struct folio *folio = page_folio(page); local_lock(&mlock_fbatch.lock); fbatch = this_cpu_ptr(&mlock_fbatch.fbatch); @@ -314,7 +312,7 @@ static int mlock_pte_range(pmd_t *pmd, unsigned long addr, struct vm_area_struct *vma = walk->vma; spinlock_t *ptl; pte_t *start_pte, *pte; - struct page *page; + struct folio *folio; ptl = pmd_trans_huge_lock(pmd, vma); if (ptl) { @@ -322,11 +320,11 @@ static int mlock_pte_range(pmd_t *pmd, unsigned long addr, goto out; if (is_huge_zero_pmd(*pmd)) goto out; - page = pmd_page(*pmd); + folio = page_folio(pmd_page(*pmd)); if (vma->vm_flags & VM_LOCKED) - mlock_folio(page_folio(page)); + mlock_folio(folio); else - munlock_page(page); + munlock_folio(folio); goto out; } @@ -334,15 +332,15 @@ static int mlock_pte_range(pmd_t *pmd, unsigned long addr, for (pte = start_pte; addr != end; pte++, addr += PAGE_SIZE) { if (!pte_present(*pte)) continue; - page = vm_normal_page(vma, addr, *pte); - if (!page || is_zone_device_page(page)) + folio = vm_normal_folio(vma, addr, *pte); + if (!folio || folio_is_zone_device(folio)) continue; - if (PageTransCompound(page)) + if (folio_test_large(folio)) continue; if (vma->vm_flags & VM_LOCKED) - mlock_folio(page_folio(page)); + mlock_folio(folio); else - munlock_page(page); + munlock_folio(folio); } pte_unmap(start_pte); out: diff --git a/mm/swap.c b/mm/swap.c index e54e2a252e27..7df297b143f9 100644 --- a/mm/swap.c +++ b/mm/swap.c @@ -562,7 +562,7 @@ void folio_add_lru_vma(struct folio *folio, struct vm_area_struct *vma) VM_BUG_ON_FOLIO(folio_test_lru(folio), folio); if (unlikely((vma->vm_flags & (VM_LOCKED | VM_SPECIAL)) == VM_LOCKED)) - mlock_new_page(&folio->page); + mlock_new_folio(folio); else folio_add_lru(folio); } From patchwork Mon Dec 26 08:44:23 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lorenzo Stoakes X-Patchwork-Id: 13081718 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 BB48DC46467 for ; Mon, 26 Dec 2022 08:44:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 81A8994000A; Mon, 26 Dec 2022 03:44:37 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 7CBF2940008; Mon, 26 Dec 2022 03:44:37 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5F70794000A; Mon, 26 Dec 2022 03:44:37 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 4C25F940008 for ; Mon, 26 Dec 2022 03:44:37 -0500 (EST) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 283F8802D2 for ; Mon, 26 Dec 2022 08:44:37 +0000 (UTC) X-FDA: 80283821394.13.29F5A50 Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.51]) by imf03.hostedemail.com (Postfix) with ESMTP id 83A3720008 for ; Mon, 26 Dec 2022 08:44:35 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=Luutk8sT; spf=pass (imf03.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.221.51 as permitted sender) smtp.mailfrom=lstoakes@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=1672044275; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=r2F81c9AgLyck1wSShCjUojXRC7u44cFLH6IR6oWmN4=; b=mae4ie4laBVl8y/3NLTNSfXenul6CymK1Dy8apY4uorIoBAYl24HyHCFxgnUQu1og8Q0mN DFf0I8Bz8bs9Y9rHXa6I8z/1OchGQiLSepebganE9NZljsT04Hw8Az89m+riPTmPZn8sFh v/iYjJucKQMcXG8a+51XDnKxtps7v8M= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=Luutk8sT; spf=pass (imf03.hostedemail.com: domain of lstoakes@gmail.com designates 209.85.221.51 as permitted sender) smtp.mailfrom=lstoakes@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1672044275; a=rsa-sha256; cv=none; b=qqwz93+Gr95b+S1WIBOOBXCS7W1bCJEviUEkgFcxeiwgUu85JAS5ZG6LH7uY4LtIyx/xNo ad6quZ0quan8gUnKN4b8lM7WeJdONFVVxn+s42HcZDC0sUC4V+gnVqqzi16lay0/TTSC0t BmRGliIBogMqerIhr7SujKlPQBT2eFk= Received: by mail-wr1-f51.google.com with SMTP id y8so9548256wrl.13 for ; Mon, 26 Dec 2022 00:44:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=r2F81c9AgLyck1wSShCjUojXRC7u44cFLH6IR6oWmN4=; b=Luutk8sTmkcPaV2HE6ZSm09yMDd6aFg37OB1rbF+z6MNMKyYZIy2EhVaJ8oIYCBjnB B2oixh9MFvf2UtOfNsPSuzO8f2ANjFTV351U8BHT/q5eP9Ez5aZX9Ye4Kes1fANH3IBw mY+LkVCPLJc7lShfS6oBJIYoYmg3vR5HaJLNL+Sg7dcIOIZ12GPP0t4NBD7Lhd8jDYUg FISQC4Bl8cJoalEFXhStA10T82XA5bxFIr2Tg/leWqa0KvSgdTOyhzfSKJU1cWfwPZmM hhqvoAJ7NSgYcTdwT7BF25IR2P/c8k7I5HPpbw7bVTOqkOOn7yAeEmhIk7lf5Q8hRHuD KnFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=r2F81c9AgLyck1wSShCjUojXRC7u44cFLH6IR6oWmN4=; b=SNNpu30F4SpT+u+P7TI78yB8XkAEsqN2gbxtsg3AX15t0+u0v2MF8Erx8yfjXvhL+L 5APCwBUNFNv3BignHkaIkwGcUcvDLGd3D/JoivQ6Bcg4bt2VdEPdi3sTFWSbL7KeJnss HvbT+ScxJt1YPSoCloqCX+GHON+oaz7CzDxBjvJn6Z/I117WmYAlYf6/oQQ4y06hz8eN TB7JgI2Sqt5xcquANjKizagHda1rznMB542rkGhYosUiKc45k0X8oQH/aVeko0F+USfZ ZZbMbUGHPIAJP+tSnRDPXaCoNoeJTLcWHHdyPnLjNjhV3hc620AJ2IGD8aybX6RYoGF5 +NTg== X-Gm-Message-State: AFqh2kpjt5NuWwIVF6UROY33K3x/vFT3qN/7L3NelMFr04dbjDnSBNhf WeQXWyydfxCWB+OhgCkIutOWjYa4vUE= X-Google-Smtp-Source: AMrXdXssR55KbgMxEr7dJwad4zliU0tQ0fJwRlDzhgMpGzuioR1wo/Z5xOzvgxOdHsStnOtIPiN1VA== X-Received: by 2002:a5d:65c4:0:b0:281:24c5:a533 with SMTP id e4-20020a5d65c4000000b0028124c5a533mr220616wrw.23.1672044273841; Mon, 26 Dec 2022 00:44:33 -0800 (PST) Received: from lucifer.home ([2a00:23c5:dc8c:8701:1663:9a35:5a7b:1d76]) by smtp.googlemail.com with ESMTPSA id m16-20020adffe50000000b00241bd7a7165sm10593253wrs.82.2022.12.26.00.44.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Dec 2022 00:44:33 -0800 (PST) From: Lorenzo Stoakes To: linux-mm@kvack.org, Andrew Morton , linux-kernel@vger.kernel.org Cc: Matthew Wilcox , Hugh Dickins , Vlastimil Babka , Liam Howlett , William Kucharski , Christian Brauner , Jonathan Corbet , Mike Rapoport , Joel Fernandes , Geert Uytterhoeven , Lorenzo Stoakes Subject: [PATCH v3 5/5] Documentation/mm: Update references to __m[un]lock_page() to *_folio() Date: Mon, 26 Dec 2022 08:44:23 +0000 Message-Id: X-Mailer: git-send-email 2.39.0 In-Reply-To: References: MIME-Version: 1.0 X-Rspamd-Queue-Id: 83A3720008 X-Stat-Signature: wca5w3f3rhm9f5embd1bb7em8etxeoz9 X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1672044275-955078 X-HE-Meta: U2FsdGVkX1+L+PuO7TS1APoMiC30RdwsYJFjqeyI7C3cBMGdsJKuhy/NuBCub1ey7cXyHXGQNLR8yYsrbnZwhLKIMKyIauFSWsjsSZ77yliC0slBfyhSl/MeTuP8m+ihpBeC/TYwPv2lS+6EgREJB43gX2jy1Z6EHSaJFtqafqLFThwgaqfCbQUlOkJNP/4keVGLxgUvjxY+ATLCgrwjyTgocXd3xdKhEQNYm/QG4M2rAF8jIVco5tGicVskCCjYDYE05X/xaRHC/syRNealNmn0MU3siMXHx+vzZ4Iod3GznprZAgw3sPtsvXRtqDGgwMJpoAVL/aJUWSA2hBbSecUX5mLC/tBOJprLGPhEOykVGr8Nd7JldsKlJKx+kn9ppVgq5J9SQUyLewFwoL/IkssMYKW3OaPOscCNrfqRHSfG/z40438EvzR6fHHOkCaGIIGfnTlNsRT+uQlS8z7SHYe9+TmkXFxYryi4HFNVAC5Y1/GvTFkbb6tsNgceyCj2M2vn/zxEFI31/LDK+TWo1CLLaEP6T+bqPaVun1lSMUmMVF+bHmzLkbjz0fOwRHdCg3e3Q8KrfGkyoHNVDh3p9BKbIWH0fn37YbNlWJEalR7TpBM5EE9Mjm5YlUaUSY9f+zeF8JSyPcnGQRrAJcbrsuFhtWeerQylfeAcwTRHMTvfUajjy2jTL5a2m4vK5xhg0Lw4wC0IgbpplueZJP8GMBBBNq7w0kut7/3FsJWRPfeDVgGSjryrt6VJY01ALQW1FLLk+tj2UcLyHxq/l5TY2TuFJbLYa80chzT+Bzi45wjUsOoZ6/GdQPVjO4SoQS9ijEBgDl44fHvoLLu9Hd2Oe2QS/rI36q0mXF2S2FSuHO1Uw+l2QI/+lpiesnCvZprQJDVcP+5tD0mkLM84JtLpllMJFCg6KsoC6keOzmMpZg1xLj7te00mmSz9BmHC151yos5kGbfEIx0yMLm5DMq CF8nGV8c f0ebWF9HobfgoxgUjcO/pFl4KTZOaGytnXpYxtfvgIP3pz/lN+PL/xfCC6lV9K18gth8Z2kZRDe8mZ9gw2Mb/mGN4kbo3ye9T4f9F72+XPAtJIJ2NBowL76DmXAwkZ/0QXBeplXSmEER53A1RkQEnW/bKQT+ISXuNHwN90QivitLQ8YOkVzgvnylPvg== 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: We now pass folios to these functions, so update the documentation accordingly. Additionally, correct the outdated reference to __pagevec_lru_add_fn(), the referenced action occurs in __munlock_folio() directly now. Signed-off-by: Lorenzo Stoakes Acked-by: Vlastimil Babka --- Documentation/mm/unevictable-lru.rst | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Documentation/mm/unevictable-lru.rst b/Documentation/mm/unevictable-lru.rst index 4a0e158aa9ce..153629e0c100 100644 --- a/Documentation/mm/unevictable-lru.rst +++ b/Documentation/mm/unevictable-lru.rst @@ -308,22 +308,22 @@ do end up getting faulted into this VM_LOCKED VMA, they will be handled in the fault path - which is also how mlock2()'s MLOCK_ONFAULT areas are handled. For each PTE (or PMD) being faulted into a VMA, the page add rmap function -calls mlock_vma_page(), which calls mlock_page() when the VMA is VM_LOCKED +calls mlock_vma_page(), which calls mlock_folio() when the VMA is VM_LOCKED (unless it is a PTE mapping of a part of a transparent huge page). Or when it is a newly allocated anonymous page, lru_cache_add_inactive_or_unevictable() -calls mlock_new_page() instead: similar to mlock_page(), but can make better +calls mlock_new_folio() instead: similar to mlock_folio(), but can make better judgments, since this page is held exclusively and known not to be on LRU yet. -mlock_page() sets PageMlocked immediately, then places the page on the CPU's -mlock pagevec, to batch up the rest of the work to be done under lru_lock by -__mlock_page(). __mlock_page() sets PageUnevictable, initializes mlock_count +mlock_folio() sets PageMlocked immediately, then places the page on the CPU's +mlock folio batch, to batch up the rest of the work to be done under lru_lock by +__mlock_folio(). __mlock_folio() sets PageUnevictable, initializes mlock_count and moves the page to unevictable state ("the unevictable LRU", but with mlock_count in place of LRU threading). Or if the page was already PageLRU and PageUnevictable and PageMlocked, it simply increments the mlock_count. But in practice that may not work ideally: the page may not yet be on an LRU, or it may have been temporarily isolated from LRU. In such cases the mlock_count -field cannot be touched, but will be set to 0 later when __pagevec_lru_add_fn() +field cannot be touched, but will be set to 0 later when __munlock_folio() returns the page to "LRU". Races prohibit mlock_count from being set to 1 then: rather than risk stranding a page indefinitely as unevictable, always err with mlock_count on the low side, so that when munlocked the page will be rescued to