From nobody Sun Feb 8 07:07:20 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9CD4CEB64DB for ; Wed, 14 Jun 2023 02:14:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242158AbjFNCOa (ORCPT ); Tue, 13 Jun 2023 22:14:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56908 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242132AbjFNCOZ (ORCPT ); Tue, 13 Jun 2023 22:14:25 -0400 Received: from mail-yw1-x112a.google.com (mail-yw1-x112a.google.com [IPv6:2607:f8b0:4864:20::112a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2D15119B6 for ; Tue, 13 Jun 2023 19:14:25 -0700 (PDT) Received: by mail-yw1-x112a.google.com with SMTP id 00721157ae682-5700401acbeso2308967b3.0 for ; Tue, 13 Jun 2023 19:14:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686708864; x=1689300864; 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=gIoFapX6nAbUleBYK2wE51yt/hsIHhUn+0PFfQGQ1N8=; b=OG0iNJ5GmEjZhXWO61u1AwU/idx/nazyQ7HP0I52znlouGZuNuyCp8x/YKDMNgE4TF FU/F4boFM8HzpQ/NYUPs6dBRfUqsDByWHFzr2KXzyKgbmBw6GKmPXJ7Cu/uWiikyv6gm GYjp2nEXcgLHMOQD6H3b3vuZiYRTJXs3N9sJB9GJ/BgnptFuN9WEMkcygTfvJyoXntc3 vHZBUztIkK9vRCdJJtya4e9pPE36OVtzPLhh748IQlh88xPZqc6gQBvcbEiDkhruCSoJ xue2DFFhxZdEW1Zhwmy3hRvDCHpd775F7lLi55NrX3Vk4O0E1d6pwWwZyjkeLm4B8i5u /3vA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686708864; x=1689300864; 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=gIoFapX6nAbUleBYK2wE51yt/hsIHhUn+0PFfQGQ1N8=; b=dduzOM8NH/4dUyEUvje6SE8cXaL0bahS24NWdQsAIZ/X4ARcESe6pQa81Or7iX/twE qZVb75nHpOBj4KS5gXxsu0RrvfDlgRJ4unCptmfhU5lXGtsxARQs6NBWcPSENI60ngsy RU04FN72h6XPzd/2k5FxeDkfk9YyE+e1X1Sj6ff/sGmL7FQTeMmvXFeZyOXUXWrgGiTl ZINnC76BYYLXAKTul+rNQsJ71DyXLTIhScSEfThoqVbOaP75ikqY+KS7HgYgzThZkv2N bezpUEU+SB3rSuLjYije1STvANSkvSUcnC3QwRI4XzuBhIkQCPcyWuolVzauDIDcl66F 1DKw== X-Gm-Message-State: AC+VfDxlKSdI71ABR2aZNqRQTja2W/VVbLzwAQYusK4kR2w9tfc9Les5 HVROfM0wePghLeO9C+PA+3I= X-Google-Smtp-Source: ACHHUZ4YSMJp3iF8wUHpYsSVNC2ramcdJy4Qkj6dvEyjhe8CY4rDVrJOLr8FWGbCxucf/XIz1bWsiQ== X-Received: by 2002:a81:484c:0:b0:56d:770:c315 with SMTP id v73-20020a81484c000000b0056d0770c315mr512357ywa.49.1686708864338; Tue, 13 Jun 2023 19:14:24 -0700 (PDT) Received: from unknowna0e70b2ca394.attlocal.net ([2600:1700:2f7d:1800::e]) by smtp.googlemail.com with ESMTPSA id p3-20020a817403000000b0056d30f1b508sm1463931ywc.107.2023.06.13.19.14.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jun 2023 19:14:23 -0700 (PDT) From: "Vishal Moola (Oracle)" To: akpm@linux-foundation.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, "Vishal Moola (Oracle)" , Matthew Wilcox Subject: [PATCH v2 1/5] mmzone: Introduce folio_is_zone_movable() Date: Tue, 13 Jun 2023 19:13:08 -0700 Message-Id: <20230614021312.34085-2-vishal.moola@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230614021312.34085-1-vishal.moola@gmail.com> References: <20230614021312.34085-1-vishal.moola@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Introduce folio_is_zone_movable() to act as a folio equivalent for is_zone_movable_page(). This is to assist in later folio conversions. Signed-off-by: Vishal Moola (Oracle) Reviewed-by: Matthew Wilcox (Oracle) --- include/linux/mmzone.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index a4889c9d4055..744bf32e48a8 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -1116,6 +1116,11 @@ static inline bool is_zone_movable_page(const struct= page *page) { return page_zonenum(page) =3D=3D ZONE_MOVABLE; } + +static inline bool folio_is_zone_movable(const struct folio *folio) +{ + return folio_zonenum(folio) =3D=3D ZONE_MOVABLE; +} #endif =20 /* --=20 2.40.1 From nobody Sun Feb 8 07:07:20 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A58BFEB64D7 for ; Wed, 14 Jun 2023 02:14:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242177AbjFNCOe (ORCPT ); Tue, 13 Jun 2023 22:14:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56920 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242140AbjFNCO1 (ORCPT ); Tue, 13 Jun 2023 22:14:27 -0400 Received: from mail-yw1-x1134.google.com (mail-yw1-x1134.google.com [IPv6:2607:f8b0:4864:20::1134]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A9B0119B6 for ; Tue, 13 Jun 2023 19:14:26 -0700 (PDT) Received: by mail-yw1-x1134.google.com with SMTP id 00721157ae682-56ce96063bcso2569007b3.1 for ; Tue, 13 Jun 2023 19:14:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686708865; x=1689300865; 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=gm8RCzO5kq5zZdBwoalxKcPrbyd/4JyQrIpAj2PmnKw=; b=JF+8NNIBzGX1b2qFl1Jx5pRAVPswMcC79XRisd5GVibmPivKhdXQEHc8d7/naDK+Up gOMZkzClZyEGSeqowDIclhILZeAtC2CVfFdBwWcF72qAW2JTytgWt2OQV3y8I8RctUcx rD6KgJEg8oUdHwdiguEbWPj746c0VQZU0McaRD4kt+DEq6GIX/MNy1JMHSsOA3yFYFsC sHAg4yl8apB5t961Pr7CxwWzQlGHdj90B056A9+csCHCbRFN/NaFi5TKCTMArvGdCO+F b6N2BalFlcr/9l9jpyRKLKuba5H+KeeEYg2dX7MvukOZKS8aw4C9SYq3KCCoGkWnNaHm 3bTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686708865; x=1689300865; 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=gm8RCzO5kq5zZdBwoalxKcPrbyd/4JyQrIpAj2PmnKw=; b=V+vwJGC7MV2TZwUpAZ/zMt5UudMjQ7W78QsLYE8/E9po4Gezn82XFNfN5SIihEeKYL +cVEQHx+SY8ZpdoxXBajTfHnG0mA0qsVrNK359R+/XT8lYPWEGB9ZG46maFuOEf2MHpN ch76at0Hy+A5qMUGOawUrVo5pwtzyFPzmlJ4g9qCyPF7yS8dG/M22vsuVD+8vHzwFkmS 1qBSLwP/vCLklQrkRFwTCWVf1aaWsS/vjl2BrC2M5EliEgDYr3bZl2q87rUiH7Eooa+u FEgXVqR2+6+GX6h27eqrRAC4tEaF6FuuHZAW2ksJtBq0zbp839d9iKpeU/a6/ZIkgiUn WbXw== X-Gm-Message-State: AC+VfDyBtLx25SFAHcJEN5Sj3eV8WNBUX5GK+ys5VGTSkMMvtBSnqrpO 2sa6zSHRb1R4tWaDlW0uryf9jM6ECIY= X-Google-Smtp-Source: ACHHUZ6/DNbpBrJKVXMNBdlaoO0AvEwN+Ng+T489V7u9cl6KqrcMtLNf5K/XiLAGr+3x3Kr65Pz04g== X-Received: by 2002:a0d:e6d0:0:b0:561:b53d:d1f1 with SMTP id p199-20020a0de6d0000000b00561b53dd1f1mr160456ywe.19.1686708865329; Tue, 13 Jun 2023 19:14:25 -0700 (PDT) Received: from unknowna0e70b2ca394.attlocal.net ([2600:1700:2f7d:1800::e]) by smtp.googlemail.com with ESMTPSA id p3-20020a817403000000b0056d30f1b508sm1463931ywc.107.2023.06.13.19.14.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jun 2023 19:14:25 -0700 (PDT) From: "Vishal Moola (Oracle)" To: akpm@linux-foundation.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, "Vishal Moola (Oracle)" , Matthew Wilcox Subject: [PATCH v2 2/5] mmzone: Introduce folio_migratetype() Date: Tue, 13 Jun 2023 19:13:09 -0700 Message-Id: <20230614021312.34085-3-vishal.moola@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230614021312.34085-1-vishal.moola@gmail.com> References: <20230614021312.34085-1-vishal.moola@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Introduce folio_migratetype() as a folio equivalent for get_pageblock_migratetype(). This function intends to return the migratetype the folio is located in, hence the name choice. Signed-off-by: Vishal Moola (Oracle) Reviewed-by: Matthew Wilcox (Oracle) --- include/linux/mmzone.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index 744bf32e48a8..b58c76e68ac7 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -105,6 +105,9 @@ extern int page_group_by_mobility_disabled; #define get_pageblock_migratetype(page) \ get_pfnblock_flags_mask(page, page_to_pfn(page), MIGRATETYPE_MASK) =20 +#define folio_migratetype(folio) \ + get_pfnblock_flags_mask(&folio->page, folio_pfn(folio), \ + MIGRATETYPE_MASK) struct free_area { struct list_head free_list[MIGRATE_TYPES]; unsigned long nr_free; --=20 2.40.1 From nobody Sun Feb 8 07:07:20 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E31B4EB64D7 for ; Wed, 14 Jun 2023 02:14:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242185AbjFNCOh (ORCPT ); Tue, 13 Jun 2023 22:14:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56926 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229499AbjFNCO2 (ORCPT ); Tue, 13 Jun 2023 22:14:28 -0400 Received: from mail-yw1-x1136.google.com (mail-yw1-x1136.google.com [IPv6:2607:f8b0:4864:20::1136]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4941019B9 for ; Tue, 13 Jun 2023 19:14:27 -0700 (PDT) Received: by mail-yw1-x1136.google.com with SMTP id 00721157ae682-56d2b7a9465so2522097b3.3 for ; Tue, 13 Jun 2023 19:14:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686708866; x=1689300866; 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=fB7c080hmSdFjIvh3R4otuK2wUDYLhoWmLvrdo1yBmw=; b=VFW1xJ4gnwv7pBeS0YE65pckiAxPEdYG7lGo7tzZjndkiBhVKufOgxXl+W7IFVCV1K 4TbG1Zx4rWCcT3BUOPtsNJRgIhIhzvi19CSD5ABbuUFp0TlMJxCpZCiZ3IK27cYBnFKN pIwW1L7ZlPC72CTTklcQfY7rNp3B2Vwl3MiRXeNSWX3rfTKX/Fhk7w1Ab1Dty4tE9/Ia bjOeYh7/dy+wD/d7slqEbflc1B0mqFOz9DbfxdHnlct6y9OdohNVDIIOe14jv3fF3ti4 JEJErk19IJ7v9pQnGBNTubxC5/+VB0/N3Qblyz2JDYiEJhghB/zIx2TcFA4TBfMbybhu gowQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686708866; x=1689300866; 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=fB7c080hmSdFjIvh3R4otuK2wUDYLhoWmLvrdo1yBmw=; b=OdDzKM3CHtWWDme6iBhUgDcKhkdQvvpwGoS1aw2qLgGQBjLso/Lh7v/hF8td4YoaUP EPHR6ZVfuvW8PDYswhIyu8NdaYUxip1ihOp1lwM2UGXc0nuZU7ToBRJCYA2igUCcu6dZ x+5LocYfOrPhZr7j2NY7UgFx9T+agceoLX4KyX4y7Bqrx9PAR0EmRVD/PvwTOVcmAI64 l30mlTaK0n0bNenunf2coRfH6h6471ODygBMaSCzz+kAX55QJItN3ETWzAAF0pWk89NG aVtEqnH6hkv4OL84MZJJgPjkck83E/Br4aEnUEzZahO/soOsKC3splMcM8VbxnWvnMQQ ZYzg== X-Gm-Message-State: AC+VfDwqVFVkgJO/RMkOY6t2e8bYmx+sjCkEfHuryvj8IoiSGJZebCYU 50UjEyuKHqfPniolkD+j0k1h+fvRJco= X-Google-Smtp-Source: ACHHUZ6D9ogohvWoySXrKmywAvhj/+wxSJub+ieNdKYpjexpUFv0OzYjFADwZblBr9FcPuHAo+i5MA== X-Received: by 2002:a81:6802:0:b0:559:d1ea:8c7a with SMTP id d2-20020a816802000000b00559d1ea8c7amr39535ywc.1.1686708866473; Tue, 13 Jun 2023 19:14:26 -0700 (PDT) Received: from unknowna0e70b2ca394.attlocal.net ([2600:1700:2f7d:1800::e]) by smtp.googlemail.com with ESMTPSA id p3-20020a817403000000b0056d30f1b508sm1463931ywc.107.2023.06.13.19.14.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jun 2023 19:14:26 -0700 (PDT) From: "Vishal Moola (Oracle)" To: akpm@linux-foundation.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, "Vishal Moola (Oracle)" , Matthew Wilcox Subject: [PATCH v2 3/5] mm/gup_test.c: Convert verify_dma_pinned() to us folios Date: Tue, 13 Jun 2023 19:13:10 -0700 Message-Id: <20230614021312.34085-4-vishal.moola@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230614021312.34085-1-vishal.moola@gmail.com> References: <20230614021312.34085-1-vishal.moola@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" verify_dma_pinned() checks that pages are dma-pinned. We can convert this to use folios. Signed-off-by: Vishal Moola (Oracle) Reviewed-by: Matthew Wilcox (Oracle) --- mm/gup_test.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/mm/gup_test.c b/mm/gup_test.c index 8ae7307a1bb6..860b093b4b3e 100644 --- a/mm/gup_test.c +++ b/mm/gup_test.c @@ -40,24 +40,25 @@ static void verify_dma_pinned(unsigned int cmd, struct = page **pages, unsigned long nr_pages) { unsigned long i; - struct page *page; + struct folio *folio; =20 switch (cmd) { case PIN_FAST_BENCHMARK: case PIN_BASIC_TEST: case PIN_LONGTERM_BENCHMARK: for (i =3D 0; i < nr_pages; i++) { - page =3D pages[i]; - if (WARN(!page_maybe_dma_pinned(page), + folio =3D page_folio(pages[i]); + + if (WARN(!folio_maybe_dma_pinned(folio), "pages[%lu] is NOT dma-pinned\n", i)) { =20 - dump_page(page, "gup_test failure"); + dump_page(&folio->page, "gup_test failure"); break; } else if (cmd =3D=3D PIN_LONGTERM_BENCHMARK && - WARN(!is_longterm_pinnable_page(page), + WARN(!folio_is_longterm_pinnable(folio), "pages[%lu] is NOT pinnable but pinned\n", i)) { - dump_page(page, "gup_test failure"); + dump_page(&folio->page, "gup_test failure"); break; } } --=20 2.40.1 From nobody Sun Feb 8 07:07:20 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1ABE8EB64D7 for ; Wed, 14 Jun 2023 02:14:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242193AbjFNCOk (ORCPT ); Tue, 13 Jun 2023 22:14:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56932 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242152AbjFNCO3 (ORCPT ); Tue, 13 Jun 2023 22:14:29 -0400 Received: from mail-yw1-x1134.google.com (mail-yw1-x1134.google.com [IPv6:2607:f8b0:4864:20::1134]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3774819B6 for ; Tue, 13 Jun 2023 19:14:28 -0700 (PDT) Received: by mail-yw1-x1134.google.com with SMTP id 00721157ae682-56d0d574964so2341157b3.0 for ; Tue, 13 Jun 2023 19:14:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686708867; x=1689300867; 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=Aw61vajIkA6oxKB73VTHpA/VflnxZ90Ui6bDTaJJ3WI=; b=YVGVxBZ24BVkgipFXR1ege6SG0fquUM1JH7q42WM3bdfobtzIc/5hyKqeObocHTx9s YtuexTTE4n9ZN6g09ubR4ZWkQxBVPZrZ8m1eDguoe2G4wXW96CQ6FI8nblgkM5bY4jU+ gUFK4MUuHGorqR4D0Vp98p+Kscxi4CjzlTH61wP3tNZNnMnXRyz9SHgK4NDbi2jc0QhP ASVH5Zm5MkUGhggDoxVovPSkseAh9bRkRrXskHJeRr2xlK3DyGjUP3H9bWMNiAXnEgNF ZDU9v507kHNPrF/05L1OOJKm9zQGf/tzfJKh2qSoF+lgxnCuOtSSp7Iq6vL0G8ISpxMP vRQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686708867; x=1689300867; 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=Aw61vajIkA6oxKB73VTHpA/VflnxZ90Ui6bDTaJJ3WI=; b=jALGCBZqdwZRKhQeh50Mc9ZYZmR0RGXe4mvtZmePrDexDwV7TFXE9WaocLsQzUKnlb mDCW+q4DGyOoyZAKqatYRpkHZ3cOx9yipevv7eveB07t8no1x9r5Mg4iVZsWCvbR8JMZ AFFsz4nFc8ZVzeMkDbrGokfVFrYav3KIoq+6f3gwQj1+qGZSjuv0pgotUXXPl/+yzJ0a xhx+v8Ct1T1CvMdzzkoGkoaedd6n68kQ2Gd4Zsa2DsizIWRxZ1CdVJtPqD2xgRyzc2cY USm5c/xh4T+o+nNz0wlDtUQpRE42f6/5Um+xfS0SFacjniNGGtKSVP6sik12g53vUHn8 lzUQ== X-Gm-Message-State: AC+VfDxI6VfNmbYlPS+E/D8rxUIpkArLWrc+JmkAVoILkko91Zi1yBhN wdH27A/rKkW6qCxJraSRoTEB7yXSMZY= X-Google-Smtp-Source: ACHHUZ44hRkvmSZRyOdyCv9N6hHgq9+NVCEiHaCWIGQfc+HCHZ7D1N44hd00/7Ix8TjS3ef0oKpmIw== X-Received: by 2002:a81:84d3:0:b0:56d:5a2:89ff with SMTP id u202-20020a8184d3000000b0056d05a289ffmr488167ywf.33.1686708867379; Tue, 13 Jun 2023 19:14:27 -0700 (PDT) Received: from unknowna0e70b2ca394.attlocal.net ([2600:1700:2f7d:1800::e]) by smtp.googlemail.com with ESMTPSA id p3-20020a817403000000b0056d30f1b508sm1463931ywc.107.2023.06.13.19.14.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jun 2023 19:14:27 -0700 (PDT) From: "Vishal Moola (Oracle)" To: akpm@linux-foundation.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, "Vishal Moola (Oracle)" Subject: [PATCH v2 4/5] mm/gup.c: Reorganize try_get_folio() Date: Tue, 13 Jun 2023 19:13:11 -0700 Message-Id: <20230614021312.34085-5-vishal.moola@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230614021312.34085-1-vishal.moola@gmail.com> References: <20230614021312.34085-1-vishal.moola@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" try_get_folio() takes in a page, then chooses to do some folio operations based on the flags (either FOLL_GET or FOLL_PIN). We can rewrite this function to be more purpose oriented. After calling try_get_folio(), if neither FOLL_GET nor FOLL_PIN are set, warn and fail. If FOLL_GET is set we can return the result. If FOLL_GET is not set then FOLL_PIN is set, so we pin the folio. This change assists with folio conversions, and makes the function more readable. Signed-off-by: Vishal Moola (Oracle) --- mm/gup.c | 86 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/mm/gup.c b/mm/gup.c index bbe416236593..6ec5c9629dc9 100644 --- a/mm/gup.c +++ b/mm/gup.c @@ -123,58 +123,58 @@ static inline struct folio *try_get_folio(struct page= *page, int refs) */ struct folio *try_grab_folio(struct page *page, int refs, unsigned int fla= gs) { + struct folio *folio; + + if (WARN_ON_ONCE((flags & (FOLL_GET | FOLL_PIN)) =3D=3D 0)) + return NULL; + if (unlikely(!(flags & FOLL_PCI_P2PDMA) && is_pci_p2pdma_page(page))) return NULL; =20 - if (flags & FOLL_GET) - return try_get_folio(page, refs); - else if (flags & FOLL_PIN) { - struct folio *folio; + folio =3D try_get_folio(page, refs); =20 - /* - * Can't do FOLL_LONGTERM + FOLL_PIN gup fast path if not in a - * right zone, so fail and let the caller fall back to the slow - * path. - */ - if (unlikely((flags & FOLL_LONGTERM) && - !is_longterm_pinnable_page(page))) - return NULL; + if (flags & FOLL_GET) + return folio; =20 - /* - * CAUTION: Don't use compound_head() on the page before this - * point, the result won't be stable. - */ - folio =3D try_get_folio(page, refs); - if (!folio) - return NULL; + /* FOLL_PIN is set */ + if (!folio) + return NULL; =20 - /* - * When pinning a large folio, use an exact count to track it. - * - * However, be sure to *also* increment the normal folio - * refcount field at least once, so that the folio really - * is pinned. That's why the refcount from the earlier - * try_get_folio() is left intact. - */ - if (folio_test_large(folio)) - atomic_add(refs, &folio->_pincount); - else - folio_ref_add(folio, - refs * (GUP_PIN_COUNTING_BIAS - 1)); - /* - * Adjust the pincount before re-checking the PTE for changes. - * This is essentially a smp_mb() and is paired with a memory - * barrier in page_try_share_anon_rmap(). - */ - smp_mb__after_atomic(); + /* + * Can't do FOLL_LONGTERM + FOLL_PIN gup fast path if not in a + * right zone, so fail and let the caller fall back to the slow + * path. + */ + if (unlikely((flags & FOLL_LONGTERM) && + !folio_is_longterm_pinnable(folio))) { + if (!put_devmap_managed_page_refs(&folio->page, refs)) + folio_put_refs(folio, refs); + return NULL; + } =20 - node_stat_mod_folio(folio, NR_FOLL_PIN_ACQUIRED, refs); + /* + * When pinning a large folio, use an exact count to track it. + * + * However, be sure to *also* increment the normal folio + * refcount field at least once, so that the folio really + * is pinned. That's why the refcount from the earlier + * try_get_folio() is left intact. + */ + if (folio_test_large(folio)) + atomic_add(refs, &folio->_pincount); + else + folio_ref_add(folio, + refs * (GUP_PIN_COUNTING_BIAS - 1)); + /* + * Adjust the pincount before re-checking the PTE for changes. + * This is essentially a smp_mb() and is paired with a memory + * barrier in page_try_share_anon_rmap(). + */ + smp_mb__after_atomic(); =20 - return folio; - } + node_stat_mod_folio(folio, NR_FOLL_PIN_ACQUIRED, refs); =20 - WARN_ON_ONCE(1); - return NULL; + return folio; } =20 static void gup_put_folio(struct folio *folio, int refs, unsigned int flag= s) --=20 2.40.1 From nobody Sun Feb 8 07:07:20 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2E2F0EB64D7 for ; Wed, 14 Jun 2023 02:14:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242208AbjFNCOo (ORCPT ); Tue, 13 Jun 2023 22:14:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56938 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242157AbjFNCOa (ORCPT ); Tue, 13 Jun 2023 22:14:30 -0400 Received: from mail-yw1-x112d.google.com (mail-yw1-x112d.google.com [IPv6:2607:f8b0:4864:20::112d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 70E9019B9 for ; Tue, 13 Jun 2023 19:14:29 -0700 (PDT) Received: by mail-yw1-x112d.google.com with SMTP id 00721157ae682-56d06711fccso2206407b3.2 for ; Tue, 13 Jun 2023 19:14:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686708868; x=1689300868; 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=Oezw1x9OR5I9OrjQTv8pl4ceJsvnhhH8ZZxaxblQe1s=; b=O48zV0HJ8AnO6I45UUKI48I+tD/Vv23woacs9hKnlQUxpefbJbhzQLqPr5GRevY5g9 QPj5DwIyXOvszZCwPQHWvb8S2Nec48dlPm76GAa7K/NYG3zynZ9iCijubGWPdTnPPLT0 PNLSWXCh2boJweoP/O9U5JQj5ruvgnbTzpj5Co9lQHUdNgysNtGP9IcmCL13jGSnCTaN /r/5Gw13CrEJV0ZyM4DKdT6pAAe9yjoHrmua6tqXJZJ22cz/oxKC8YCvWk0BzhIevIVA qeMFjIYfkShTzuvIClUtOGRftTo40VJp9tIsll7NcDaok7XIcijeg4IZ0QOGEojV9+h0 TJxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686708868; x=1689300868; 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=Oezw1x9OR5I9OrjQTv8pl4ceJsvnhhH8ZZxaxblQe1s=; b=YgaPhH59v13Icu6UbZV8VUA1VWAPH4U1+RScT0BQtGZwPZSUInYjl2xRIZL/6E0t9S CSaijQgf7lQ095SrYRdusVRbOoVPdOqygCghpFJhBvbht9S3llFCP6sRaExUNCzQHfYw 2oYkmNf+4Z58QFyBu/MwNdyObjTB/1H5u2usMhRdHWKA+mdT2lvMqS1ZiLbiRkwUu0LG YbVct+YpNWi8lv4FQ8hAXYr67jOJT1bUcc0nIk5WBWcVFTBBFk0yVXjxT3jM/Vu9Ozyx T5ZLK+V3MPRT0PH79jErZxxIyAGf0TPuNlmN02zWBwCcehtQNJoqMorfg9JVTssDvlpo u28g== X-Gm-Message-State: AC+VfDwSVqmfQ+nk9AxEY+zOopm1F2OQOwC8ZZx2w5zUmzQlBuxI/dTN eiQKBl+tbgwNSWVtxhmTy5o= X-Google-Smtp-Source: ACHHUZ4U+/TjEKVuJNFVPqHGiuvcd9miGd5mgokN6FTvX/wE87apwS8HCpWNLHMIde0JYtJVPLwbsg== X-Received: by 2002:a0d:e6cc:0:b0:56d:3b1a:8641 with SMTP id p195-20020a0de6cc000000b0056d3b1a8641mr516908ywe.23.1686708868335; Tue, 13 Jun 2023 19:14:28 -0700 (PDT) Received: from unknowna0e70b2ca394.attlocal.net ([2600:1700:2f7d:1800::e]) by smtp.googlemail.com with ESMTPSA id p3-20020a817403000000b0056d30f1b508sm1463931ywc.107.2023.06.13.19.14.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jun 2023 19:14:28 -0700 (PDT) From: "Vishal Moola (Oracle)" To: akpm@linux-foundation.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, "Vishal Moola (Oracle)" , Matthew Wilcox Subject: [PATCH v2 5/5] mm: Remove is_longterm_pinnable_page() and Reimplement folio_is_longterm_pinnable() Date: Tue, 13 Jun 2023 19:13:12 -0700 Message-Id: <20230614021312.34085-6-vishal.moola@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230614021312.34085-1-vishal.moola@gmail.com> References: <20230614021312.34085-1-vishal.moola@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" folio_is_longterm_pinnable() already exists as a wrapper function. Now that the whole implementation of is_longterm_pinnable_page() can be implemented using folios, folio_is_longterm_pinnable() can be made its own standalone function - and we can remove is_longterm_pinnable_page(). Signed-off-by: Vishal Moola (Oracle) Reviewed-by: Matthew Wilcox (Oracle) Reviewed-by: Lorenzo Stoakes --- include/linux/mm.h | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index 27ce77080c79..e2d35e272e07 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -1910,39 +1910,35 @@ static inline bool page_needs_cow_for_dma(struct vm= _area_struct *vma, return page_maybe_dma_pinned(page); } =20 -/* MIGRATE_CMA and ZONE_MOVABLE do not allow pin pages */ +/* MIGRATE_CMA and ZONE_MOVABLE do not allow pin folios */ #ifdef CONFIG_MIGRATION -static inline bool is_longterm_pinnable_page(struct page *page) +static inline bool folio_is_longterm_pinnable(struct folio *folio) { #ifdef CONFIG_CMA - int mt =3D get_pageblock_migratetype(page); + int mt =3D folio_migratetype(folio); =20 if (mt =3D=3D MIGRATE_CMA || mt =3D=3D MIGRATE_ISOLATE) return false; #endif /* The zero page may always be pinned */ - if (is_zero_pfn(page_to_pfn(page))) + if (is_zero_pfn(folio_pfn(folio))) return true; =20 /* Coherent device memory must always allow eviction. */ - if (is_device_coherent_page(page)) + if (folio_is_device_coherent(folio)) return false; =20 - /* Otherwise, non-movable zone pages can be pinned. */ - return !is_zone_movable_page(page); + /* Otherwise, non-movable zone folios can be pinned. */ + return !folio_is_zone_movable(folio); + } #else -static inline bool is_longterm_pinnable_page(struct page *page) +static inline bool folio_is_longterm_pinnable(struct folio *folio) { return true; } #endif =20 -static inline bool folio_is_longterm_pinnable(struct folio *folio) -{ - return is_longterm_pinnable_page(&folio->page); -} - static inline void set_page_zone(struct page *page, enum zone_type zone) { page->flags &=3D ~(ZONES_MASK << ZONES_PGSHIFT); --=20 2.40.1