From patchwork Wed Aug 24 05:09:51 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Popple X-Patchwork-Id: 12952931 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 010F8C00140 for ; Wed, 24 Aug 2022 05:10:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 20DA86B0072; Wed, 24 Aug 2022 01:10:15 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1C996940008; Wed, 24 Aug 2022 01:10:15 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 036DC940007; Wed, 24 Aug 2022 01:10:14 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id E76D66B0072 for ; Wed, 24 Aug 2022 01:10:14 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id BB5BD160C36 for ; Wed, 24 Aug 2022 05:10:14 +0000 (UTC) X-FDA: 79833309948.08.96CED93 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2058.outbound.protection.outlook.com [40.107.94.58]) by imf17.hostedemail.com (Postfix) with ESMTP id 2E9AC40014 for ; Wed, 24 Aug 2022 05:10:14 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MGxzr7UvnTf0Dm5ORkeQzHpUUNQqKHCnzN2r6+JnyznhoWKJcpi0g8yME+ZyERvIZKYYfRRSaWezl0rBc/94OyAxAHpA0Ow9B/e+ViBaUQdrlysiObjIn26phjbKG9oQTKORwvPeHlTygDACzqwHCTcPehxWNI7nOKUc0Wly8OoebCJeLnoyjx/YE4UeBga4Q/TQBs1qjW0m+VU5krj5IsrDowXHRCbN6xdyKUHpQlK8zxlzBNLa+TCi43cLCniEem72YiKcxJcIQBJihSBdySMcOwgfWUdrxFa62GXXOU55XsVDNBeYf/xPIZdodxKJHfzuRATcJ07SL7DC/u0B1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=jlPr1u1DasuJLNBQTAijt5mELyMjSf5RQaPl7+4dKkg=; b=NdilfWD16N93EI7spFWpdJ1ahJjuN7bCe/lQX2GQ5EOb2UH5uY2UWbwTQ8dCHLhrxFSE644b8RktzypXhB+rO27CEpaTljeZw6nL/VBTuZ1KVLvwgxRbBsFhP2S41QGrgnNjmLvjW5jGtgQNbJPalY0ko7FQIoSXfy0XzNhxD3i9fafPhT8ytbFkySqahnaQTlUfXz/DfEdtOXBbfZYXispTK1eGuXRpKDmDHgIOUPe1zwSdanaAvMa0IGFQXKRzgn6GLeSr/k0kWoohyKdlQryCsQzljrg83MtXNiyOl4C92oAxN86b5wMkIL4E2FVvapAiUoPQroMef+eFNYzxKA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jlPr1u1DasuJLNBQTAijt5mELyMjSf5RQaPl7+4dKkg=; b=mMr/9VgYSv5OYCgD6m8ed/91sVJa21+zIg70f6aiKoMASJvqsffDUSbjv0pFqDHyxCAUV5MHAJDf4k008aFbTBv4qBU3WIlESKwabkmY58NMjFFs3cS9Xz0kMBqWbWQXnHCrom4sAkp98aVyeubhsSTE3lwkqYHJ+NVzNuKSSKUoB9VREm9maYzSS1+P4KN6U1Z7whws4iVauDo7C3MzcX27YWsM6ikgW59lKBxJQXOocGzVQb7TzmD0eTu0qit0MeDsUS2KluTTqc7x8+08e8idBMeIzsPUNFcdGZgRrm2gYD4H8gz6ut/jE1HgI9LPDcrwE0jodAkbGNdLdiajcg== Received: from BYAPR12MB3176.namprd12.prod.outlook.com (2603:10b6:a03:134::26) by BL0PR12MB4657.namprd12.prod.outlook.com (2603:10b6:207:1a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5525.19; Wed, 24 Aug 2022 05:10:11 +0000 Received: from BYAPR12MB3176.namprd12.prod.outlook.com ([fe80::7432:2749:aa27:722c]) by BYAPR12MB3176.namprd12.prod.outlook.com ([fe80::7432:2749:aa27:722c%7]) with mapi id 15.20.5546.022; Wed, 24 Aug 2022 05:10:11 +0000 From: Alistair Popple To: linux-mm@kvack.org, akpm@linux-foundation.org Cc: linux-kernel@vger.kernel.org, "Sierra Guiza, Alejandro (Alex)" , Dan Williams , Felix Kuehling , Jason Gunthorpe , John Hubbard , Logan Gunthorpe , Miaohe Lin , Muchun Song , Ralph Campbell , David Hildenbrand , Matthew Wilcox , Alistair Popple , Shigeru Yoshida Subject: [PATCH v6 1/2] mm/gup.c: Don't pass gup_flags to check_and_migrate_movable_pages() Date: Wed, 24 Aug 2022 15:09:51 +1000 Message-Id: X-Mailer: git-send-email 2.35.1 X-ClientProxiedBy: BY5PR17CA0033.namprd17.prod.outlook.com (2603:10b6:a03:1b8::46) To BYAPR12MB3176.namprd12.prod.outlook.com (2603:10b6:a03:134::26) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fd80df3a-e3a6-453c-7ad3-08da858eebb4 X-MS-TrafficTypeDiagnostic: BL0PR12MB4657:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: InXdTtMigDQBz7rTTHz4ZkvpyKs7vZ7TwXiPokk1u4wPBsZh50OduY3xghV07LS7zF/cBo5lNnUyBnFxMtiAnWIDkcGhC0Hd26OBppd/QlngatAx1PBLFfL1ZFZa+uvpB1b3WG6/w9XaeksO4c5SgkwRK17hI3CTG731nOeXNjf/9fOqlXqMwn+LyM0elxagjwYmkX6U4XP10Bnen5/WeVwkLjYEvLryFXV3sNgyTJ88hV3uhW68k7r84/uzL9wxekwTGJ2lr8+dayCEIwc9/hx/rCBAIOG7+S7ZbbP7M+JbKQx+tusQU1sSWXO2/5G4tcm9eBDUiDDRoJzcVwnkirYGp5vC9ywV+ooL6raZY+23ufmhFAlJM3uocEuyS5g7xWlfO+O+SpkFfVWzsSwCLk+nr5b5YzlzQltjAASurdTbnT+IS7bmH9t4I022CUmm2LadgzfUmOIGnsR0MeXKa9O78A6yen8T7bhgAlFlGFXJvMJKW2zs3P+XXEHwDfuVhahZBFfHdeaSYitJodhWdnQ9T1TfnrhsWtiD8rx52Wf2cpa2LXjrR1t+hZBUPLdd9EqMdagHmIg3bRjV0JBo5InVAt4Z9IEmjXGLE7tRUndku/dH0rXJ0uB77oIOBV0iUcXzuFmQPbG36MwzDquAqPxmE/ePMy/mo+o0VSQhqIPZm9a1UHwZtrRPjAvI4LwcCqtARpDjoER50/RWwZIKgA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR12MB3176.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(396003)(39860400002)(366004)(346002)(376002)(136003)(2616005)(6506007)(6512007)(26005)(38100700002)(8676002)(7416002)(83380400001)(4326008)(5660300002)(186003)(66946007)(66556008)(8936002)(6486002)(6666004)(66476007)(41300700001)(2906002)(54906003)(86362001)(316002)(36756003)(478600001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: fAFP7Cj+l+tVn+ICQNuOr2GuCqbqZgWEyDGXgKLoT/ngdCQdGsEZi3CnhEqgHU2qPb62w4S5sw/j5wCfJ1M5aTCkCe0RrFLQi38YNqMvlsiOuY62FbMqPJL2bsvT3qpAXpjDxXWYCGtZiDYJ3l5Vp5XQTzjizM0iW4D3IMrK7ztFnAtYDiumLI6g1+kBeFbzm77Svs4GVaeYey/62QUBNdfOLwet8MszBXfJ1zpClpTEZHq2joXrX3ZvXlQphhcg2Z6cRp1AcmgXsmD71WcNpNWBWDI/8ld5XxVwmcQ2lX2vQWsz6JAiB4lQVb2sW/yyi3/CCBnF55HiKqoCIlmNzCEgLXAk5qmGlbnNBzjmKdmHM+SC4bpZPk3IeXBp79xYlaI6rD646uUGvjF2bHj8zwZ0WYAYzU0ObOS1HWH7/unHfteHxQ18FTczol/2ERw+TjaJ4gQ6JvMFGil/vXDowArJZxFje6XTsQhtiVDDL8H9QfArNGLo9x+EMSYSFD9/LcwuIIAAgh6/zBMZP10VYb86L1X8V8JEXxlJs/G5kRhBHwT6IHKiqssM7iJwPvsT23OKyTITsEFzj/+ACApAPj1/FYGFc+OL8soFqJacUCOkjDE+jaNa2TczPDnkmYZ+dBVfFDP84Wm02nwCP0VQFeq6FOyLT/sA8lNgETeIKCP+e+EyszLjhjpRiZXfgkCPJjRpD5r8Q0EROacUC8w8VNHVfPg96HST4GQfp1EWbmwaZoE72unjl8wX+Ohh61EnBvYBNg8dZ7QqQZT1REGmRMai4hjq6u2ZrgzVlLdRoCxMzmLHa+NJpfsmlJEAAW2h5WvWa6H2V84GHN/osCanclt113zjpF3D+hvHCyjHFoqEHFiIsY8nNym9D3zkq7P0n2pRfSCHAjgImRPZSxh4kmQpNk93YgO4Jl1oIyWBfu49WINx7SttHfe5OoBe1K4R7WiBPf6XZYWPArzwVahZz8ke8DkmksGwTftEqopi7LDcUAMfH/PPEjkHsODhvJGecEjC2Qz/EaUAbKDqDmUHavSBNEy0H20USj93sINT4/GgZ4QfEDtHWT1Sb6o5jCX8nt7EF/KodEGstK+DfutTaI3musExwHj6WEGqTnh5IIdJE5WnVa1VYOlRYn+/902mXrGwzt5Yug5Rd6q78ZDvq0I4CqUJHxJ1m3jGR/HFdusmEKPbYXchXJHZe/lk2DdDLReMNpYXl2aUTszj+VYDsciVbmMYq92VwLfU1vxV7tINJbZF5gVq0BB9u7abBlS7gud7E/pVlN/KwvVGlZ74perAuY7djDcaMBuxeQvPoOd0Br8GPqbKThRtN4t7NwMj7ccWFK7I9eh2KJApKN5880YUA80Dsb2tscV4AE3ylkqCwFIBWWt7NTW95mJdudY7L10rTaTFJ3H9lVYbbe8Qqh7yJGCyW6H+Ud5qA/6cZhwcP0msTHrZhC73/1cvK31VcYl9UqIVfN9WC+mh1qwDYP8yWsRuav1J7wbT7hW3E+hGdmR9V4hg3NRnwDqGXj50oAnaLy0PlNhH/pUpgMmBDH7d+fS3MsU1DtNsQlk7yqg4ex0CMsggbbNEAKdKyWsS X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: fd80df3a-e3a6-453c-7ad3-08da858eebb4 X-MS-Exchange-CrossTenant-AuthSource: BYAPR12MB3176.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Aug 2022 05:10:11.4076 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Tnho5wlvkvsbX0iYQxZNhNoxfnkwUlTojN7u/bzbTNoCigWVAmY7cLKb03uXb0Vaz6mfdHzWATwh/sWv0SaJjg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR12MB4657 ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1661317814; 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: references:dkim-signature; bh=jlPr1u1DasuJLNBQTAijt5mELyMjSf5RQaPl7+4dKkg=; b=S9FtDzd9Op00dihs+ffJ42oXpVuhJ9DBiLKbk5jXKPGRtPcMcp7NxD7lm2T+n2G8+KZPNr 6WY6iZZB4PmLRZU77TH8b6eaW07SJsUlulXTKCJWYHGW+mvZeYBtYsfzJ4XYr0aFhRjq5s Ocv0KhVEBA4kJYxkG+183hg9gmW2Yjc= ARC-Authentication-Results: i=2; imf17.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b="mMr/9VgY"; spf=pass (imf17.hostedemail.com: domain of apopple@nvidia.com designates 40.107.94.58 as permitted sender) smtp.mailfrom=apopple@nvidia.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=reject) header.from=nvidia.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1661317814; a=rsa-sha256; cv=pass; b=BNiAWqoPTP6JQ8ICCFs7ABRcLfq81m3k5dwd4kFdAluFYKIz+CbGdwTCIurN2JTVDe2WjP 7Qk4fgGa0zr70EeJFcJ2lukh7vVZsO8yIWqRdnsdeJdNX/zGewdqU4rMon4vEzk1rdG38u Ks0RdrxMqol+Afq1+rAhD9Lz+RLNjKQ= X-Stat-Signature: a15ck3sy11yh96pcfaowtjxbtroc411h X-Rspamd-Queue-Id: 2E9AC40014 X-Rspam-User: Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b="mMr/9VgY"; spf=pass (imf17.hostedemail.com: domain of apopple@nvidia.com designates 40.107.94.58 as permitted sender) smtp.mailfrom=apopple@nvidia.com; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=pass (policy=reject) header.from=nvidia.com X-Rspamd-Server: rspam01 X-HE-Tag: 1661317814-65054 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: gup_flags is passed to check_and_migrate_movable_pages() so that it can call either put_page() or unpin_user_page() to drop the page reference. However check_and_migrate_movable_pages() is only called for FOLL_LONGTERM, which implies FOLL_PIN so there is no need to pass gup_flags. Signed-off-by: Alistair Popple Reviewed-by: David Hildenbrand Reviewed-by: John Hubbard --- Changes for v6: - Rebased onto mm-unstable Changes for v3: - Move WARN_ON() out of loop --- mm/gup.c | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) base-commit: d711de4adbec4cb0b8769bcae971b13293e6d311 diff --git a/mm/gup.c b/mm/gup.c index 3b656b7..8d66ee2 100644 --- a/mm/gup.c +++ b/mm/gup.c @@ -1934,8 +1934,7 @@ struct page *get_dump_page(unsigned long addr) * migration failure. */ static long check_and_migrate_movable_pages(unsigned long nr_pages, - struct page **pages, - unsigned int gup_flags) + struct page **pages) { unsigned long i; struct folio *prev_folio = NULL; @@ -1968,10 +1967,8 @@ static long check_and_migrate_movable_pages(unsigned long nr_pages, * Migration will fail if the page is pinned, so convert * the pin on the source page to a normal reference. */ - if (gup_flags & FOLL_PIN) { - get_page(&folio->page); - unpin_user_page(&folio->page); - } + get_page(&folio->page); + unpin_user_page(&folio->page); if (migrate_device_coherent_page(&folio->page)) { ret = -EBUSY; @@ -2024,10 +2021,7 @@ static long check_and_migrate_movable_pages(unsigned long nr_pages, if (!pages[i]) continue; - if (gup_flags & FOLL_PIN) - unpin_user_page(pages[i]); - else - put_page(pages[i]); + unpin_user_page(pages[i]); } if (!list_empty(&movable_page_list)) { @@ -2050,8 +2044,7 @@ static long check_and_migrate_movable_pages(unsigned long nr_pages, } #else static long check_and_migrate_movable_pages(unsigned long nr_pages, - struct page **pages, - unsigned int gup_flags) + struct page **pages) { return 0; } @@ -2074,6 +2067,9 @@ static long __gup_longterm_locked(struct mm_struct *mm, if (!(gup_flags & FOLL_LONGTERM)) return __get_user_pages_locked(mm, start, nr_pages, pages, vmas, NULL, gup_flags); + /* check_and_migrate_movable_pages() assumes pages have been pinned. */ + if (WARN_ON(!(gup_flags & FOLL_PIN))) + return -EINVAL; flags = memalloc_pin_save(); do { nr_pinned_pages = __get_user_pages_locked(mm, start, nr_pages, @@ -2081,8 +2077,7 @@ static long __gup_longterm_locked(struct mm_struct *mm, gup_flags); if (nr_pinned_pages <= 0) break; - rc = check_and_migrate_movable_pages(nr_pinned_pages, pages, - gup_flags); + rc = check_and_migrate_movable_pages(nr_pinned_pages, pages); } while (rc == -EAGAIN); memalloc_pin_restore(flags);