From patchwork Fri Feb 14 15:42:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zi Yan X-Patchwork-Id: 13975150 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 C128CC02198 for ; Fri, 14 Feb 2025 15:42:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 585F1280001; Fri, 14 Feb 2025 10:42:47 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 50CE46B0085; Fri, 14 Feb 2025 10:42:47 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 38709280001; Fri, 14 Feb 2025 10:42:47 -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 159FF6B0083 for ; Fri, 14 Feb 2025 10:42:47 -0500 (EST) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id CCB0147DD4 for ; Fri, 14 Feb 2025 15:42:45 +0000 (UTC) X-FDA: 83118967890.01.374C122 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2061.outbound.protection.outlook.com [40.107.93.61]) by imf09.hostedemail.com (Postfix) with ESMTP id 0C7FD140005 for ; Fri, 14 Feb 2025 15:42:42 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=D3daoQ5+; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf09.hostedemail.com: domain of ziy@nvidia.com designates 40.107.93.61 as permitted sender) smtp.mailfrom=ziy@nvidia.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1739547763; a=rsa-sha256; cv=pass; b=do+DI675oO3hvyxjMxcW6/08hChlPPCel/QbITL9wH96iK+pFqIavTgQwOZYonQmZe9LHI ghbTJD9jnu/hPuQhPAymSC6vA8StpiQAwTExWdGNw/U0Sl428fLjfhEzkq47X6w3QLwsGJ WFElC0gWEfNUBjgAX5yq7r09utWjeFA= ARC-Authentication-Results: i=2; imf09.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=D3daoQ5+; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf09.hostedemail.com: domain of ziy@nvidia.com designates 40.107.93.61 as permitted sender) smtp.mailfrom=ziy@nvidia.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739547763; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=/uEVNm36daEAQedWM1fmv32brDf7DLmvj6nt8IZy6Dw=; b=d0EgsGkwmhCUgGAiJWhsIT0ud8ZxfKQtd+YTAvBuoaIjYKSK3PjLY2huc65xWhBPrjDjp/ 6/s2Z2OBR+ZBeVrzrWChFuOkn0kq9Ljos9ecY0Wb/R6ZsUnHvBnMDcafUv1kKLh9/HbvD2 +9pAfh0qm4h7URdZDJ42OfcY5i2OEXY= ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JcKR+gSlOFJs2dCdD8is4SJYkklmNF4pRtJkH/akNSY0uGlSOW21pDp4OFryFEMzWrDeLGfERRPNHHgfnhNdLHHG9PXj9FewY7gUSSzpAnboMjGUd80bbU9UFrLqk4RNCbSDQHfgRGVrrcrG4BO+zEmo2/ZPGCf/dn13WYJJZCbrlCPX0aS3X+AoOYGKDGC+3QUG3EG3W/Couj36UFuykx+80OE3kfzAQTdCplWDSqmwvqt/farX0bCggfant9FEu1VI0Yx1tyDThPjcCu3MPppyEb+q2z8bMfpzpsciANtyT3uoxW1qkLEwlzMiLAh6LHEerEKSIPDWXT9AzczQzw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=/uEVNm36daEAQedWM1fmv32brDf7DLmvj6nt8IZy6Dw=; b=lrJYJ9Gwxm6Ri1Z22QGQS+ZV7EBpz4cG9AQyxrp+u7QQC8oZMazWkwEUu1Z3QkFEkZ0r+e7ivXv3cV3Kz5XhIiaAIpDoDhCOvJfVf5uFCBH4JQAioeHLRJmw+Jj722fHNQy0VWCFTHq+AaPsn4J7XjXodE+MpB+TXcDJ+pD1hxcjg/DvpsAXUTx7+MehefAvBlo03MENImluhObIe9wweFH0izqpwvJLORuIFVTD431vY21R7hcVG1xiXY/0sBvPtJZcU2xm42mUBTYT2NfvCq5gQ/6LgNvJlfiXQzthBmXjwDFc9prX8junu8xpcI1QID5rhotfzhuaiJJ+u3AZFg== 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=/uEVNm36daEAQedWM1fmv32brDf7DLmvj6nt8IZy6Dw=; b=D3daoQ5+em1PgiHIu5ibfHx0vgBxPl158qqlRuDSzBE0fKPY89tiyhNZKcwyNHVDSF/fx/fzq5y7uqGqddgEbZ1o9/HwKd0GUL9iWRNvPID7hAfObv6qtTpw5XOwlvTep/h9fA2lAkrPqEa911O6pM1WUhh1EBal3XNagwZlOyjGSOs1gBzgPk268L7HkYJyq9LqnwKY65nsuDBVy3lY/O5E6WwUW/jCoIsoaWxH65n0l6CIsDHU/PxHYZ2BbjrbxAP5NoWa3nypxusOvHEuH2yhPq7b/TYVBblDA0zYDr/RxJBlPRQOaNhJVUcAqKqN7s9bzVhxanmzO6Y5+caQCQ== Received: from DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) by CY8PR12MB8339.namprd12.prod.outlook.com (2603:10b6:930:7e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8445.14; Fri, 14 Feb 2025 15:42:25 +0000 Received: from DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a]) by DS7PR12MB9473.namprd12.prod.outlook.com ([fe80::5189:ecec:d84a:133a%5]) with mapi id 15.20.8445.016; Fri, 14 Feb 2025 15:42:25 +0000 From: Zi Yan To: linux-mm@kvack.org, David Hildenbrand Cc: Oscar Salvador , Vlastimil Babka , Johannes Weiner , Baolin Wang , "Kirill A. Shutemov" , Mel Gorman , linux-kernel@vger.kernel.org, Zi Yan Subject: [PATCH v2 2/4] mm/page_isolation: remove migratetype from move_freepages_block_isolate() Date: Fri, 14 Feb 2025 10:42:13 -0500 Message-ID: <20250214154215.717537-3-ziy@nvidia.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250214154215.717537-1-ziy@nvidia.com> References: <20250214154215.717537-1-ziy@nvidia.com> X-ClientProxiedBy: MN0PR04CA0005.namprd04.prod.outlook.com (2603:10b6:208:52d::9) To DS7PR12MB9473.namprd12.prod.outlook.com (2603:10b6:8:252::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB9473:EE_|CY8PR12MB8339:EE_ X-MS-Office365-Filtering-Correlation-Id: af76635c-b321-4b72-a20b-08dd4d0e2e41 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: 00NuQBAPdZNCJgjPosGQu+5+M/ivtm6R/nfQFYVhIjZQSnfpsJ1PFqsg8ROBG1jw0bdRcQVZSqU0tw9jmkXYTexMeGRizvItU32/j6Y8CbQPgcgBJxMjMf4Q0p/XLp/M7cUKD95XoMg7/Pp2YqffAcmntHLAz2o19UHy8on4yX2QAjt2rmt3Z29sEizzd66JmS4ac4267VvTfipkh54sUTA70UG0y9qZ1sXe6Xr5vNGzrfuHeLPtz8Bsn0zzePB2Lnq14nm07958uTYmQVdOf9Z7s9FEKH5LdXtyT1LMkqjsMNwEltwGXH5KEcjR0TmXKjU3hMBLuQUKOtjGBnFHXcEQC3cw/Z+Q5+Umn8BkaiG22xuQ7jv3PSF4gDD5wQrxehHgfdtmwH+FwGq0hLc85MCV1PVqh//EME6lHDTMG35daLe4rngvXPMJquZFTSWUIO6MxM9amgbMzPOXx1MteJRDfnoquX5RNqXWe5GQAuJOlg4RXtDu4QlH2/ceDhhI9yaOgot3uswN6c4D/caAFzp9IwCAzXyx4+XoUu5FGscqHcmugcaSoMvaOCSNCb8RPbFpB/di3b2Wo0JGduh6hzZcKhSGKXsPMsEhXDMKIN3jYoyGpwT3apdsS1uC2OzI6QHWOAnjuTWeeYE1IxKyxr+VB+TQ8NuqrDZJdf+PrVNm15kzoTvCp7JFOY7DYY1Jl2vMShrt5Zvbrp3wzW2+ksErHUvylqemb855jNUpA7Y6RbE0be5ml+ll7aQqJmXeckoK24ILNMMV9fNkSojyo6RIXjwfwvAsNfLDzpoCG4+OqWryB5jMtOiuEWVVAfGxljd5M7ToLsTe0t+OgRPh11w/ho11TVh+JMjZQHDJdEYxDXajXVD7YRWc4AcbiCNiVxuVkPOAHFgcQPWDaSoyl7ljxlfRRQ/Wtgn9eXWx4VDLUTMo3K/L5GQj3bq2emIKpUT6wUy7uD+4sLJO+VlHFbb9s639hGSScgyqZhAKMHCH/Vb9EyhL5ZnTwhK/m21nV4XCZnvKvH4QtEPFwOB8PQQ3gxPBAfvxTJhLeaHgRyDJVue51CZnvjIXHjGzC+vYcmFKWWcb8xaB0C8jG8hkDELdNVB6mFWQWJkTFvny+tYBqRoWVw1raGlgzVqWw4YBni6642O+QqSW0H5yVC4V1rRD81R9r/i4vxzuKocGxuNsCjEfSc71lSvvHj8P43k9ydtPe5lUN8lf2WRDhZIgF0M6tm2OqJNvFzD0bpc4rAI9yN6E95EpSTy+DJGAKtYIsngSFPtQ8lfrwZq3ARFImLMyMkxaOERPQbYy4k8oex0Fc5HJIMb8ufN2tzaDOg66eOUDXqj3vM1DJ6a6to7+Ru3Hr2f9Vt0RYh3j/f9KVNvx4I0f/R664UDA6dypFo4L X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR12MB9473.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /KTufJfOzhmERdxbqVaH09hSAfDLI5zd2qYNxso/H7o8fju0ew/uhruv6v4SzV/ThRhksDrrmY4az7qA27Df0vn2/FMis099TpOhgnbR8fT4WGAB4zwpk+mL5Ph1EhuV9QhVStjQci2T4t08D+yUTNAADYzC0ELrHQT3ur6XDH9dm4VfZvM3VzdcXswOBWOPtTHizN6NOS0cZdfyyiE6ToJOw8OY5OVXoxf+7GrIkPDe8Pnp9j81OjakWzxfymbbpXdD9CRxTKKU5tL+miYpJLzedukI76YCioqxksCtPI2Lr380peshEeC38rsw6zPp0UHUJ3tr00pGq/Bi/Vb+yilorTYfUCLb01g9KI9o08f7eu8tuYpfdnzdLJrc/hA2wPPkodYK2N0+4Q/MQlFTYvy2h9RjOf8P3VkyG9Rq3MhNg+ZpcKgqWig0lJqKzqx8nwQZvYMCO+SUn1CZ5F78tCjHjGkN6xMw/QqKUkEAulw/Q2PZoVNT7FpLTNfymz5NcjvJo9/9/2PK6iHt/BPs46o140oJqn/JDV8JN0RD5A0Q/w9sISiIDonoVUskEa0QTcQcgVctilI8/ZxVNl+D6uCvjelrQUlwKIkamWaGL57fpEvdLi1PHbzP5RM8k+zcmvNLFFSwWYX8FF33/BFHYjoruyhCiS2BpuuxqFnHB/J/IPODSjpA8eQtlCd35L3c0BziAbcDV8yhzw7EZnZAX4dWvQ0tZVzyKQHbkfjymoE13av9Zz1U64be5tPslXAmkIfZdOpwd7bxKfTW9VRrlICy05aQTrIMyCYlnDrtAGzByEcqtd2hqYrbdXKEU2lY5fNGXpCm2pYF0SkV21q+EpYIL3rhPStiD8/8VIeKliKWrgRNZ5ltPiqCO6MYjLzGR9UXrBjhUyUmFuIusoH2egwuKo3UkfOHlRlVOv8w9TVxIWDgu3IeOO1D/D7TvarWzas5svddpNZBREm/vhBftEAS0nAzTzGRSDy4yzdNu6HrS88upmHTH8P9gzP9COgVtWr6YKt1uyOoelOVU75+vqNqlagQgxwv4qH/gBsqAGOlPV630AxAR7rSxuHjnjsIKF1kAzzwrWwWAzu7830iruI8vKDQBL8Byn4qq67AdUWV0oeQyjyPNYv/jPykS/zs4ENBJED9Z5t9uRLRPLCKi+W6qswkEyzRpMWGd6M5kTtT22ZPoGV5TDvoKCeGFrW8ojTFzOG5A/oY2wa/LcO+dJJy2VYSXsf4gjGnEMaYOSi0K/o5lEvlOCi5CIQNsyXWTTA/myexFTwBSzAu7qMVqXR/GvYfWt2NOVBJYYuh/G5+TVjIR5ckVFrC7ZE+q5QLF8heRNcljRPebV8hdHFBaUCjB4YeYyG4wZBHe3IT5LcTebql7VwvgrAftMpGDn0yVm1g7o8k836Fg7CJatts3voxeZRNsb4mCYpvcsGgc8cbVnfsIoOTC4ZenYg5NnJ9mi88RQBrXt0iabh91ZLwf/B87cTC+6QvZ/ZL9gmJiuregJT6au397fk8P+x2lf8HobO1C2zLBUAfX9iJIb0UvlCtHVG/rBqen0lt3EfmWZ3FR1jl1gmZQEaZt0MIym2b X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: af76635c-b321-4b72-a20b-08dd4d0e2e41 X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB9473.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Feb 2025 15:42:25.8483 (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: Idb0lS7AmnEH0ThnxLALp2rXBzg8+dmQAnz8ES71r6UPULUzgRLFU+YJx9of+E9d X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB8339 X-Rspam-User: X-Rspamd-Queue-Id: 0C7FD140005 X-Rspamd-Server: rspam12 X-Stat-Signature: gew6m7y4hdwbkdydak9jhcoxk17u6a9k X-HE-Tag: 1739547762-335365 X-HE-Meta: U2FsdGVkX1+bsHQr6fXXveh5KFP9pCp+oRLBaO4BEg9+4cj8HluKWdFKrKWetA0YNIGHymAxLSLaxFoHoly5GRf6zKFudFVcdCMNGfHZfd1Jp96BOR2myNx+11FRF9Bxa1Y2n+HpkpBDcAM1KRg3XdK4Hfx5xTJVG+w7kYLBXsZm0iPrsoDbtDzcjzIFBMZV+gy3nbcESgboGWI5sM7AWgSdmNTVO1GuErwZeIakqHulRxd86eqlAC2dTcNnSQFjbd8tgtrQpkLub9dhk4CCbSAYybRp6mnZclJ9/ZhLINZCodCrwMQeMJRWd5LcLHuA8egi/WGnCZdZ9lNmBV1N803A7TnHlkJDJnreDLJI1Qexl2YaxP0l7PhOQbl2UlidEPqpb0P9nGyzcPjnm0JWbxtTTt27ulVHA4yuKsGomUyZoPBRAq1BJD321QiuUBzIQeWAhaAH6ejb1FYIhkocbu5d7yLb6xO04hIR5/ApcJTB+EHaiVk3cP+sHhVchuQ7CpE6ERb8iczBthhsjWvPPYOILbMIgtiFqdsFmRewlUKkFW46knvG79+KIr5YY8nKf700g8D1A616vfunfXNtuJYD6s/K2FC0JVVFlPbGmaRO8RvC/8wdFkCTmntWOvXJm6TGVGwYnMYZa7yw5cxDysDiY9BhZ+2PnYvafpCgc3vKlRJB2K1rIKrwvkV710sNOXCKpBCx5Os2RcK+YouX6WgRtAvpYBlvLFaZBhngBqJpskMWFAUJoR+ohJj12dKXTeQ60KXeIWs598aTTa8CrvgTLmVtDCnjC71u625Qj8AZricalExOxGIfmCTpcTfy+XROxqaiq4r7t8tJvKZcB2joQTHVr3XlewkJNatL5ssPNbFBnwiyFVPuJ7FrqRdKLK4gG297lQ/GpDySIS63SAwr/ut5UhFL6aYn9c42Ym4DgbDUL7H8VxOOmxOgf6R5Z2Ic5/X1cTm5uLV31OC FaBoBco+ pI0NlQ7mLRoBuDT/3Hu3UpmuaKm3CCPad7h40PoNFq9uABvJYZO5YSjnwNz6SIYIg1lH9j731ALdeIzK+22JXz4MQM6H/Ko3Bjowkn03uyuCxCWrF35oNbQtFtNnnDdwYL2bEo68vEl/Crb09vtEboqgfmSQfirqxdqWACKDTXqO6ZO2w+V36EhtjP1EMX/UHlP7TVKXPHqRJrZGUp9DiOanMC0QytQK4MkMvV5SjeeVPB4F+RcjSeZ19T52leY9+HeAiKsIpUT3XgwUGnGTcvPgoNC8oAMgp6saSd7g9XAmns96qawrQtIXp2Fzaq0m1FePpzcXfwMJ2mVjb8tMpr1uytdgN5h6Ag9vrxF5UJbmt4oecELbqsm/PunCF5tr1M5BoCqtwvjmFpR04V1UZr1nUmUmvmp/SMgK6dWGBRNmnOI3GSsKVfvQ5D6CQv8CMphOAA5yCXeNT+KU= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Since migratetype is no longer overwritten during pageblock isolation, moving pageblocks to and from MIGRATE_ISOLATE do not need migratetype. Rename move_freepages_block_isolate() to share common code and add pageblock_isolate_and_move_free_pages() and pageblock_unisolate_and_move_free_pages() to be explicit about the page isolation operations. Signed-off-by: Zi Yan --- include/linux/page-isolation.h | 4 +-- mm/page_alloc.c | 48 +++++++++++++++++++++++++++------- mm/page_isolation.c | 21 +++++++-------- 3 files changed, 51 insertions(+), 22 deletions(-) diff --git a/include/linux/page-isolation.h b/include/linux/page-isolation.h index 51797dc39cbc..28c56f423e34 100644 --- a/include/linux/page-isolation.h +++ b/include/linux/page-isolation.h @@ -27,8 +27,8 @@ static inline bool is_migrate_isolate(int migratetype) void set_pageblock_migratetype(struct page *page, int migratetype); -bool move_freepages_block_isolate(struct zone *zone, struct page *page, - int migratetype); +bool pageblock_isolate_and_move_free_pages(struct zone *zone, struct page *page); +bool pageblock_unisolate_and_move_free_pages(struct zone *zone, struct page *page); int start_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn, int migratetype, int flags); diff --git a/mm/page_alloc.c b/mm/page_alloc.c index f17f4acc38c6..9bba5b1c4f1d 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -1848,10 +1848,10 @@ static unsigned long find_large_buddy(unsigned long start_pfn) } /** - * move_freepages_block_isolate - move free pages in block for page isolation + * __move_freepages_for_page_isolation - move free pages in block for page isolation * @zone: the zone * @page: the pageblock page - * @migratetype: migratetype to set on the pageblock + * @isolate_pageblock to isolate the given pageblock or unisolate it * * This is similar to move_freepages_block(), but handles the special * case encountered in page isolation, where the block of interest @@ -1866,10 +1866,15 @@ static unsigned long find_large_buddy(unsigned long start_pfn) * * Returns %true if pages could be moved, %false otherwise. */ -bool move_freepages_block_isolate(struct zone *zone, struct page *page, - int migratetype) +static bool __move_freepages_for_page_isolation(struct zone *zone, + struct page *page, bool isolate_pageblock) { unsigned long start_pfn, pfn; + int from_mt; + int to_mt; + + if (isolate_pageblock == get_pageblock_isolate(page)) + return false; if (!prep_move_freepages_block(zone, page, &start_pfn, NULL, NULL)) return false; @@ -1886,7 +1891,10 @@ bool move_freepages_block_isolate(struct zone *zone, struct page *page, del_page_from_free_list(buddy, zone, order, get_pfnblock_migratetype(buddy, pfn)); - set_pageblock_migratetype(page, migratetype); + if (isolate_pageblock) + set_pageblock_isolate(page); + else + clear_pageblock_isolate(page); split_large_buddy(zone, buddy, pfn, order, FPI_NONE); return true; } @@ -1897,16 +1905,38 @@ bool move_freepages_block_isolate(struct zone *zone, struct page *page, del_page_from_free_list(page, zone, order, get_pfnblock_migratetype(page, pfn)); - set_pageblock_migratetype(page, migratetype); + if (isolate_pageblock) + set_pageblock_isolate(page); + else + clear_pageblock_isolate(page); split_large_buddy(zone, page, pfn, order, FPI_NONE); return true; } move: - __move_freepages_block(zone, start_pfn, - get_pfnblock_migratetype(page, start_pfn), - migratetype); + if (isolate_pageblock) { + from_mt = __get_pfnblock_flags_mask(page, page_to_pfn(page), + MIGRATETYPE_MASK); + to_mt = MIGRATE_ISOLATE; + } else { + from_mt = MIGRATE_ISOLATE; + to_mt = __get_pfnblock_flags_mask(page, page_to_pfn(page), + MIGRATETYPE_MASK); + } + + __move_freepages_block(zone, start_pfn, from_mt, to_mt); return true; } + +bool pageblock_isolate_and_move_free_pages(struct zone *zone, struct page *page) +{ + return __move_freepages_for_page_isolation(zone, page, true); +} + +bool pageblock_unisolate_and_move_free_pages(struct zone *zone, struct page *page) +{ + return __move_freepages_for_page_isolation(zone, page, false); +} + #endif /* CONFIG_MEMORY_ISOLATION */ static void change_pageblock_range(struct page *pageblock_page, diff --git a/mm/page_isolation.c b/mm/page_isolation.c index 8ed53ee00f2a..01d9a4eace7a 100644 --- a/mm/page_isolation.c +++ b/mm/page_isolation.c @@ -188,7 +188,7 @@ static int set_migratetype_isolate(struct page *page, int migratetype, int isol_ unmovable = has_unmovable_pages(check_unmovable_start, check_unmovable_end, migratetype, isol_flags); if (!unmovable) { - if (!move_freepages_block_isolate(zone, page, MIGRATE_ISOLATE)) { + if (!pageblock_isolate_and_move_free_pages(zone, page)) { spin_unlock_irqrestore(&zone->lock, flags); return -EBUSY; } @@ -209,7 +209,7 @@ static int set_migratetype_isolate(struct page *page, int migratetype, int isol_ return -EBUSY; } -static void unset_migratetype_isolate(struct page *page, int migratetype) +static void unset_migratetype_isolate(struct page *page) { struct zone *zone; unsigned long flags; @@ -262,10 +262,10 @@ static void unset_migratetype_isolate(struct page *page, int migratetype) * Isolating this block already succeeded, so this * should not fail on zone boundaries. */ - WARN_ON_ONCE(!move_freepages_block_isolate(zone, page, migratetype)); + WARN_ON_ONCE(!pageblock_unisolate_and_move_free_pages(zone, page)); } else { - set_pageblock_migratetype(page, migratetype); - __putback_isolated_page(page, order, migratetype); + clear_pageblock_isolate(page); + __putback_isolated_page(page, order, get_pageblock_migratetype(page)); } zone->nr_isolate_pageblock--; out: @@ -383,7 +383,7 @@ static int isolate_single_pageblock(unsigned long boundary_pfn, int flags, if (PageBuddy(page)) { int order = buddy_order(page); - /* move_freepages_block_isolate() handled this */ + /* pageblock_isolate_and_move_free_pages() handled this */ VM_WARN_ON_ONCE(pfn + (1 << order) > boundary_pfn); pfn += 1UL << order; @@ -433,7 +433,7 @@ static int isolate_single_pageblock(unsigned long boundary_pfn, int flags, failed: /* restore the original migratetype */ if (!skip_isolation) - unset_migratetype_isolate(pfn_to_page(isolate_pageblock), migratetype); + unset_migratetype_isolate(pfn_to_page(isolate_pageblock)); return -EBUSY; } @@ -504,7 +504,7 @@ int start_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn, ret = isolate_single_pageblock(isolate_end, flags, true, skip_isolation, migratetype); if (ret) { - unset_migratetype_isolate(pfn_to_page(isolate_start), migratetype); + unset_migratetype_isolate(pfn_to_page(isolate_start)); return ret; } @@ -517,8 +517,7 @@ int start_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn, start_pfn, end_pfn)) { undo_isolate_page_range(isolate_start, pfn, migratetype); unset_migratetype_isolate( - pfn_to_page(isolate_end - pageblock_nr_pages), - migratetype); + pfn_to_page(isolate_end - pageblock_nr_pages)); return -EBUSY; } } @@ -548,7 +547,7 @@ void undo_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn, page = __first_valid_page(pfn, pageblock_nr_pages); if (!page || !is_migrate_isolate_page(page)) continue; - unset_migratetype_isolate(page, migratetype); + unset_migratetype_isolate(page); } } /*