From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6C273C4332F for ; Tue, 7 Nov 2023 12:46:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8DBFD8D0026; Tue, 7 Nov 2023 07:46:49 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 889D68D0001; Tue, 7 Nov 2023 07:46:49 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6DCE48D0026; Tue, 7 Nov 2023 07:46:49 -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 5C8378D0001 for ; Tue, 7 Nov 2023 07:46:49 -0500 (EST) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 28E19809C0 for ; Tue, 7 Nov 2023 12:46:49 +0000 (UTC) X-FDA: 81431132538.04.1C0F0B0 Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2076.outbound.protection.outlook.com [40.107.20.76]) by imf07.hostedemail.com (Postfix) with ESMTP id B5CD84001E for ; Tue, 7 Nov 2023 12:46:44 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=z23LixgI; dkim=pass header.d=armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=z23LixgI; arc=pass ("microsoft.com:s=arcselector9901:i=2"); spf=pass (imf07.hostedemail.com: domain of Ryan.Roberts@arm.com designates 40.107.20.76 as permitted sender) smtp.mailfrom=Ryan.Roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Message-Signature: i=3; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1699361205; 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=OBaHF5Wp/V4glSii5PuWPUYWZZfsEUbep4BOvclJ46c=; b=Ni3shul6TkmIoVFoWPG0XQclXbnw3ZyPQzoM0imAnDMP5RbbVh1QGdWVDTmZnMX9SBIHCs qYDVwt2P2vz4rAGLdJbBx1HJ+KDkBB0X2353CK4Q5xagAWRiYkuJk1w8TtiLJgOywzcaRp IQtP5Pehf4FPo7vR6jex9QyCMYlWFxI= ARC-Seal: i=3; s=arc-20220608; d=hostedemail.com; t=1699361205; a=rsa-sha256; cv=pass; b=X0COo1XcZ2CfTABzxYA02hfEcHvDnr91GTkVwvDF5UZRg2/yGixNc0MTk0fCm2yl0Cg8J/ ZVTao/M8bXNUJTM3zzymPjItUnr1SxYl7aZywFoGRxyPj/JdEfVvLU+Y7rmQcVuytLJtHy eA9bEx+fV52UoVQe1XEUSNQlk4Ct6Fk= ARC-Authentication-Results: i=3; imf07.hostedemail.com; dkim=pass header.d=armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=z23LixgI; dkim=pass header.d=armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=z23LixgI; arc=pass ("microsoft.com:s=arcselector9901:i=2"); spf=pass (imf07.hostedemail.com: domain of Ryan.Roberts@arm.com designates 40.107.20.76 as permitted sender) smtp.mailfrom=Ryan.Roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=Mkw8dHQEheBxFudX0pdsXXbeg4KSQxEwO6xsd5GJCRb8g9N0FDlwrodnCYg6+8PHB80Tqe9Xt4qYSvFsVLDwxWtvKa+CvzK+R5qNv1LO3dbhW4alY+l/hpmUxY3lTsOb5Hoh3cuHiVvAJKXYzYQ/oCXdB8HQI28yinrZ83V8OlN8nA4McSMrIwEpeN5Kxkj2XSHyMyzdPZsv+gfqrrTMakfxBsPFAh3cuqo7Nfiw/Ux5YOZ/3iOd3951mz9nDPySRc/saKSYjZebC9ZyVvWhD4uxSWDEeMn8Iaxh+uOljhyIsi8o1zTYabIp32x6meyZ2zwoHLUwbmtb1QVZ3WoM2A== ARC-Message-Signature: i=2; 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=OBaHF5Wp/V4glSii5PuWPUYWZZfsEUbep4BOvclJ46c=; b=gdpDKg9faJnp/AUfyrHkO1XMu3nzVpFyjvyY4DV5lNDT7nNyZdlm/Utjv/3ozWHiicqmk1N9qdE1LdvVu6R/oKVs2YLP/LfUrbmVZC1nBDqhmx0mPd4HNZfLv3eioSzCE+tmaTQHQ8gsLYFG6P5vYFeYWkatZXiJOGeZqMWgo6BcBdU7xVQKQ1Zr1yckjYtDNHqj7SK1B4Recdez4G/KfAkwOAnDEj323JD4G2fnSiiPuNKkteuI8+jo5CktqQMOCgdI7mL86+Wv6o1M6lgoaruWUWoQlUTNUWLwjJ9Jr/kYn11If2IwaovATXSam7WGSW9VJ/X2N1+35bxTDk4qXw== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=kvack.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OBaHF5Wp/V4glSii5PuWPUYWZZfsEUbep4BOvclJ46c=; b=z23LixgIHYoUzSCcLMbDpe4I0Sx+AGSupPVmBwFLo/ot59iivRwIYQXJWQB+yinkGLuOgAOvusV+PoqubrvFNFgOoi6ImkyKKGNYthlt8gqq2LSfoZy0Murqlb+nZV/kJlTeYH16nndu0mGnHjECj+MHXSU92eJbCtySj8tdeDE= Received: from AS9PR06CA0303.eurprd06.prod.outlook.com (2603:10a6:20b:45b::10) by DB4PR08MB9406.eurprd08.prod.outlook.com (2603:10a6:10:3f2::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.27; Tue, 7 Nov 2023 12:46:37 +0000 Received: from AM2PEPF0001C70C.eurprd05.prod.outlook.com (2603:10a6:20b:45b:cafe::ad) by AS9PR06CA0303.outlook.office365.com (2603:10a6:20b:45b::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.29 via Frontend Transport; Tue, 7 Nov 2023 12:46:37 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM2PEPF0001C70C.mail.protection.outlook.com (10.167.16.200) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.16 via Frontend Transport; Tue, 7 Nov 2023 12:46:36 +0000 Received: ("Tessian outbound 20615a7e7970:v228"); Tue, 07 Nov 2023 12:46:35 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: f7a9258d4d987266 X-CR-MTA-TID: 64aa7808 Received: from 0df5043970c4.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 22A92DA8-307B-4053-9259-70FF32034614.1; Tue, 07 Nov 2023 12:46:25 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 0df5043970c4.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 07 Nov 2023 12:46:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FuV4b03ztq2ZqKQ+oEsFD+mK4EHJTyMwq7VQGd8plIz2kWSrkc9UtEBNC9eKKoYk4yKIdpInuOIS6sgBst4cByB3GsP/JtHi+OW3ff5l7LTpdoHnUxFMGbC9g+zD6u4Oezp4wzF97mXgtNe5s9h1GPUCcCefmWxToYr1KxAAr9l7Rn9zpWLX3NJuoe7htfBCeZsB+0CZl6ERBvZbKYWe+NZje3DgI60eFRxlX8c+8zt1U8Emx8kHaV+jHw8Dg0c0lUU+VsWoKH1zaJ7EG8N8aGV+HjszJwTKfB6wJkPDQ+/2AEf1A36uledMaH8UBujTUr/vGA5DFohCi/3nbNbq3A== 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=OBaHF5Wp/V4glSii5PuWPUYWZZfsEUbep4BOvclJ46c=; b=QSWxCz/3/MHnJBTT8PNk90mUNMmSzwpTNmO59i80iauE6W4+u16AwjbGgNikZvAEU3gRSsydJPB6e/SeRMuBPGmqbcfNU1dtKZ3Y7pfrahi5iP+uCF6dpROHVoYSATZdgFM0LmUIru1SscQnvAnIVaEiYxRnhVZXE8QdUrwYblJp/qJdzUegYegCKwAOWfIoM1YbhF1zio0ynLkiOASgI5zAVef2kc4WVgpSExuUxDvzYrdTRnmGURtRtIMdAC9z7IpxlJ3BSCN3ROY1qkQ2s76yBGOUOgU3y77cD0V+qWVHZHgQG8WcceseOKyLp0BB9+jUC39S/E4IBL8fpaF7dg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OBaHF5Wp/V4glSii5PuWPUYWZZfsEUbep4BOvclJ46c=; b=z23LixgIHYoUzSCcLMbDpe4I0Sx+AGSupPVmBwFLo/ot59iivRwIYQXJWQB+yinkGLuOgAOvusV+PoqubrvFNFgOoi6ImkyKKGNYthlt8gqq2LSfoZy0Murqlb+nZV/kJlTeYH16nndu0mGnHjECj+MHXSU92eJbCtySj8tdeDE= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from AM9PR08MB6997.eurprd08.prod.outlook.com (2603:10a6:20b:418::17) by PR3PR08MB5770.eurprd08.prod.outlook.com (2603:10a6:102:87::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.29; Tue, 7 Nov 2023 12:46:21 +0000 Received: from AM9PR08MB6997.eurprd08.prod.outlook.com ([fe80::b848:3bd3:8806:8a69]) by AM9PR08MB6997.eurprd08.prod.outlook.com ([fe80::b848:3bd3:8806:8a69%3]) with mapi id 15.20.6954.029; Tue, 7 Nov 2023 12:46:21 +0000 Message-ID: Date: Tue, 7 Nov 2023 12:46:19 +0000 User-Agent: Mozilla Thunderbird From: Ryan Roberts Subject: Re: [PATCH v3 4/4] mm: swap: Swap-out small-sized THP without splitting To: Barry Song <21cnbao@gmail.com>, steven.price@arm.com Cc: akpm@linux-foundation.org, david@redhat.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, mhocko@suse.com, shy828301@gmail.com, wangkefeng.wang@huawei.com, willy@infradead.org, xiang@kernel.org, ying.huang@intel.com, yuzhao@google.com, Barry Song , nd@arm.com References: <2fe5ce7e-9c5c-4df4-b4fc-9fd3d9b2dccb@arm.com> <20231104093423.170054-1-v-songbaohua@oppo.com> Content-Language: en-GB In-Reply-To: <20231104093423.170054-1-v-songbaohua@oppo.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: LO6P265CA0012.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:339::16) To AM9PR08MB6997.eurprd08.prod.outlook.com (2603:10a6:20b:418::17) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: AM9PR08MB6997:EE_|PR3PR08MB5770:EE_|AM2PEPF0001C70C:EE_|DB4PR08MB9406:EE_ X-MS-Office365-Filtering-Correlation-Id: ebdcd68f-066f-4772-57ca-08dbdf8f9433 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: QTXCUHhXOMHrgu2puQF3D4zGFLOZ81c+a53h1gRAUCoGP2Ib9Z2w2+82WHBdqJ+M2pP0mzfQeGuo37ohycjsiR8UpnyRW/EzgnI/HxQNOc4e+ifNM1diU+l48w3xVn1nL/bHAc9ck+2f07rEUHNExObWm7y5DHyTH3TUfjhALiHOhYt8k+oZcStfHW1GS4Hjh/YhI4pDmaRCqMCkbE+mudOYI55IuAz9+veq45Erk0dHVzw3fjH4IuY1iM9aWS18Bw9gpPkNDiO8saBqEm5jZKazVML0UE3VYhwcxzH/rm4FyC0+Lb2YeKqorwq9r+ubB86v2r29Rbt/foFXRz+dMEsrwopb5ijs1tqv67bfBNh/ZNk8jP026xw4DTkgEJKe11abvhAI28XIjZlpzuumemGE/KlFZq4t35URHohcXKQz73/wCeLgm2x+YktAVs4HYUBnrx7E1wca/mZbxVZun3+AncFsrbzehf76ZbSMgY2I8IxfgNkuBs9X3b1L+ITmVi1TH/ngH3qwncpY2+Hn1zEqprmsqfKMt1Y1nNG3DXsaZsEShk9Bell42XPAAaQjbGYcRUP8DWTGewXmetdBAWrVPrrl8AcxyN8BGDhunzywXzsf1UQAvBcWWt/OKXbapQ4hA/EP0HGMQxQ3Z4tYZw== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR08MB6997.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(39860400002)(346002)(366004)(396003)(136003)(230922051799003)(1800799009)(186009)(451199024)(64100799003)(5660300002)(31696002)(44832011)(4326008)(8676002)(8936002)(6486002)(6506007)(53546011)(316002)(83380400001)(6636002)(66556008)(66476007)(36756003)(31686004)(41300700001)(38100700002)(2906002)(7416002)(86362001)(26005)(66946007)(2616005)(6512007)(478600001)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR08MB5770 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM2PEPF0001C70C.eurprd05.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: f5b0207f-7853-4c10-422d-08dbdf8f8b0d X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: olNVwAULKaGq1E1hJXNmk2XB8wIBxPNJajPL3qJ6DUb1H0oJfzOQGL8n6MSWwLW8oap8k4GKSKe/PDRO12RyXDGGFeRIRnOw5+B603O8KX2Jdykkk/STAR7fKyOeCM8Wj1/c28GS2/O5hGwcueFfWOJUEZhm0w9q4OwzsopW1cPKFvPPxi2iYbDYesbxqVxiaQYb+ic7oO+AlISQLkKH1NKt69MeJGPWOAcLasjicdIhGNFHIfOJl0rM6YQlHkbh5UN5sWLwr4mJOc68vTpm3HZ3uuOB/KoLLFoGXBbm8j6smMZ/wn2WuvX2M/NU4rrRxUtpvX7NnKevwhcgETqIF/85x1Hjrr9KSR9+JsaniEe8koG5EvNkrCI0QurhslhrGSJH65ycpBT9j8r/j6h4vdub8htlXW02cmbQntzPIXrGp0Fn2v4n6RfNfhm9npbH6naOWUmF2yu/Cb6kvJXg9fh36EOh6wadMxVVlQHMMv6X11hdCURcSU2w+P+G9E239Kb6DmpuZ5mx5VrmzLRrxnLyQI8u1yLQvrlGJTovppfTz+ijvL1xhlCYR69atFaJ6VWYVOXiVL7TAJLwtiKgkdbMnm5iqej5xogwjdipuN6qSdQTFYq5GgC+l5/SxCvR+20RNptbTUuzewbctrqwOgdVtMAv9Dyu24g+tqY4zRlp/kMQNDptKP8CP4SSkDmONCDvDoO2GQC67FL0yUUVCCr2Aa/cHdNqwbERbbvMGBI63uvW67c4yDCdXZ0KpHMq X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230031)(4636009)(346002)(376002)(136003)(396003)(39850400004)(230922051799003)(451199024)(64100799003)(1800799009)(186009)(82310400011)(36840700001)(46966006)(40480700001)(31686004)(6512007)(6506007)(6486002)(2616005)(478600001)(53546011)(2906002)(41300700001)(36860700001)(36756003)(81166007)(82740400003)(86362001)(356005)(31696002)(5660300002)(83380400001)(336012)(26005)(8676002)(47076005)(6636002)(8936002)(44832011)(70206006)(70586007)(316002)(4326008)(43740500002);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Nov 2023 12:46:36.2142 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ebdcd68f-066f-4772-57ca-08dbdf8f9433 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM2PEPF0001C70C.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR08MB9406 X-Stat-Signature: tz8fnxkcwc41ha8inn7f4jqjj19qzt18 X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: B5CD84001E X-Rspam-User: X-HE-Tag: 1699361204-256089 X-HE-Meta: U2FsdGVkX1+bSiz1sO1YTc1qGrTd95tMYACPAbGXcLpRAFZSqdZg+SX3Sn3EmZ8KBG45MJSvfnyB4MpXHXvIQmSkfj9BjzHMQKyoT8UOeLqevgzvk7kopXWqfZUnye2wLbTPeUMQX4vhT5EbTa/mMbKQoj8HQDCThwfYn9/cPApQyHIrSsB94wVnHoH6O7a+JDJxQMPh1ux6r6v1Q9hb6SbevmodPI3ETFj9VRHR7qAuINPjw8M6fV5x5yDLRGcYoPxfPjSgSRRQPNahTXS1pAV3axGKcehT20oISxrGgu8A1bAmAnkQnKd0EhMMdpPKgv/Memlgr8Kp6TzcOTG5YuKSV7f5KWKh2iEakbmgJySX2zW8CjouWLu741gqdo/fxMQL3eGPjBYKPFhjQ+xoBujZyRGaJ+Cqtm7nkDcM0CA/NfXPhT/9VOG4fZi380InEuXV97Df0gKxO8tt1H2vbet4o6zhjDcZxzz+mDPfsw5ZcrggRYAYZpmwgry8eUdD+kdIVrmAmF34NgG9QyrBj9OLDuW31q68BvgP1w6vv1ZRr2CS/ZknLad2VVcNiHc2d0yYqm5EWoUDqgRZqIK+dhwW7eY0zLlplo413CPkwOeeqcbOlRoIxwIxpB0mICHwv1pVHql/cDphZAhGSZGUl4xHW6MjsVbpBDGAr4ukEevmUbB1EWt/LcfOzwH/AdzDUONBzRwPqftg0bS8E0A38XVgU6en9SkUqxIk3sDYF/QEQByU9AS5NOS4XTznMSg8Me+Tz6qVnEhOIxSnuOEz3USlLaHIug7O2MfH8n5w9vIPQRLhILbDPkIx/bMAnqlHXoBDDiOp6ONI/+2R4Acp1LRwnL2SVqb6w7dKJPZzdiVDibX8rkXOIGfgcZtMTpfk4UBtu5jv9tSs0ZLX3LSCc9IaXHKDQwbXI5wUk3km5bGbuC3eo8WMFyRNgkwDWkopAn3piHxhv1QT+YkVHAU GDwOMZoe pO6dqOyR9eMH8JFmtG6kYP0l5Cl9Lv74YRL3hnWm3MyNBAZfsZ2R5LTuU0xcQGGi6NsnR76Q2++uiEfPayE80EvKpR2SKs4YMy4bpchjw6PnRCC9E3/bxlodw4BCuQXxkUSyVMFri1Ms8RhvuumFouzgcpe/ueO2EUjelkmdfkbInT7lPIqlzx7Gxp5AFv7kj1e47dyNmYpJBRVQhqZ3aPc1UlIbzYtSXUMACLLwvuExV4szFHkra0Q/l1io1/G0EVb1PHUo2H8o9yTeyjwyXTpFQFWF90fiEAWJdGCXyGryd3vKlnVT4JfmcAirNfVlvZUdLQKLDZOhb1iofJrY/eOIQAD+QGkjpf/YQGu+JBnyHENR2l1kqnvsAksAqasHYm6xKSiu63QFQYbpkTt+T459m6WWtOcl7RC5BlXNFOMUmziT0KeIFOIGEm2N1t8dJ83alg8GgDhoYALLrCBDiMU8ylIPO6Zlmx9GHQcdrs8jeDCXZLoU3IA9CQSAZL98t4vojkYiBTgSLpEp4QquN0Q5KNCUDxZrtOXzaA7uP0mzTbZhG+AqJQIVAbA== 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: On 04/11/2023 09:34, Barry Song wrote: >> Yes that's right. mte_save_tags() needs to allocate memory so can fail >> and if failing then arch_prepare_to_swap() would need to put things back >> how they were with calls to mte_invalidate_tags() (although I think >> you'd actually want to refactor to create a function which takes a >> struct page *). >> >> Steve > > Thanks, Steve. combining all comments from You and Ryan, I made a v2. > One tricky thing is that we are restoring one page rather than folio > in arch_restore_swap() as we are only swapping in one page at this > stage. > > [RFC v2 PATCH] arm64: mm: swap: save and restore mte tags for large folios > > This patch makes MTE tags saving and restoring support large folios, > then we don't need to split them into base pages for swapping on > ARM64 SoCs with MTE. > > This patch moves arch_prepare_to_swap() to take folio rather than > page, as we support THP swap-out as a whole. And this patch also > drops arch_thp_swp_supported() as ARM64 MTE is the only one who > needs it. > > Signed-off-by: Barry Song > --- > arch/arm64/include/asm/pgtable.h | 21 +++------------ > arch/arm64/mm/mteswap.c | 44 ++++++++++++++++++++++++++++++++ > include/linux/huge_mm.h | 12 --------- > include/linux/pgtable.h | 2 +- > mm/page_io.c | 2 +- > mm/swap_slots.c | 2 +- > 6 files changed, 51 insertions(+), 32 deletions(-) > > diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h > index b19a8aee684c..d8f523dc41e7 100644 > --- a/arch/arm64/include/asm/pgtable.h > +++ b/arch/arm64/include/asm/pgtable.h > @@ -45,12 +45,6 @@ > __flush_tlb_range(vma, addr, end, PUD_SIZE, false, 1) > #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ > > -static inline bool arch_thp_swp_supported(void) > -{ > - return !system_supports_mte(); > -} > -#define arch_thp_swp_supported arch_thp_swp_supported > - > /* > * Outside of a few very special situations (e.g. hibernation), we always > * use broadcast TLB invalidation instructions, therefore a spurious page > @@ -1036,12 +1030,8 @@ static inline pmd_t pmdp_establish(struct vm_area_struct *vma, > #ifdef CONFIG_ARM64_MTE > > #define __HAVE_ARCH_PREPARE_TO_SWAP > -static inline int arch_prepare_to_swap(struct page *page) > -{ > - if (system_supports_mte()) > - return mte_save_tags(page); > - return 0; > -} > +#define arch_prepare_to_swap arch_prepare_to_swap > +extern int arch_prepare_to_swap(struct folio *folio); > > #define __HAVE_ARCH_SWAP_INVALIDATE > static inline void arch_swap_invalidate_page(int type, pgoff_t offset) > @@ -1057,11 +1047,8 @@ static inline void arch_swap_invalidate_area(int type) > } > > #define __HAVE_ARCH_SWAP_RESTORE > -static inline void arch_swap_restore(swp_entry_t entry, struct folio *folio) > -{ > - if (system_supports_mte()) > - mte_restore_tags(entry, &folio->page); > -} > +#define arch_swap_restore arch_swap_restore > +extern void arch_swap_restore(swp_entry_t entry, struct folio *folio); > > #endif /* CONFIG_ARM64_MTE */ > > diff --git a/arch/arm64/mm/mteswap.c b/arch/arm64/mm/mteswap.c > index a31833e3ddc5..14a479e4ea8e 100644 > --- a/arch/arm64/mm/mteswap.c > +++ b/arch/arm64/mm/mteswap.c > @@ -68,6 +68,12 @@ void mte_invalidate_tags(int type, pgoff_t offset) > mte_free_tag_storage(tags); > } > > +static inline void __mte_invalidate_tags(struct page *page) > +{ > + swp_entry_t entry = page_swap_entry(page); > + mte_invalidate_tags(swp_type(entry), swp_offset(entry)); > +} > + > void mte_invalidate_tags_area(int type) > { > swp_entry_t entry = swp_entry(type, 0); > @@ -83,3 +89,41 @@ void mte_invalidate_tags_area(int type) > } > xa_unlock(&mte_pages); > } > + > +int arch_prepare_to_swap(struct folio *folio) > +{ > + int err; > + long i; > + > + if (system_supports_mte()) { > + long nr = folio_nr_pages(folio); nit: there should be a clear line between variable declarations and logic. > + for (i = 0; i < nr; i++) { > + err = mte_save_tags(folio_page(folio, i)); > + if (err) > + goto out; > + } > + } > + return 0; > + > +out: > + while (--i) If i is initially > 0, this will fail to invalidate page 0. If i is initially 0 then it will wrap and run ~forever. I think you meant `while (i--)`? > + __mte_invalidate_tags(folio_page(folio, i)); > + return err; > +} > + > +void arch_swap_restore(swp_entry_t entry, struct folio *folio) > +{ > + if (system_supports_mte()) { > + /* > + * We don't support large folios swap in as whole yet, but > + * we can hit a large folio which is still in swapcache > + * after those related processes' PTEs have been unmapped > + * but before the swapcache folio is dropped, in this case, > + * we need to find the exact page which "entry" is mapping > + * to. If we are not hitting swapcache, this folio won't be > + * large > + */ So the currently defined API allows a large folio to be passed but the caller is supposed to find the single correct page using the swap entry? That feels quite nasty to me. And that's not what the old version of the function was doing; it always assumed that the folio was small and passed the first page (which also doesn't feel 'nice'). If the old version was wrong, I suggest a separate commit to fix that. If the old version is correct, then I guess this version is wrong. Thanks, Ryan > + struct page *page = folio_file_page(folio, swp_offset(entry)); > + mte_restore_tags(entry, page); > + } > +} > diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h > index fa0350b0812a..f83fb8d5241e 100644 > --- a/include/linux/huge_mm.h > +++ b/include/linux/huge_mm.h > @@ -400,16 +400,4 @@ static inline int split_folio(struct folio *folio) > return split_folio_to_list(folio, NULL); > } > > -/* > - * archs that select ARCH_WANTS_THP_SWAP but don't support THP_SWP due to > - * limitations in the implementation like arm64 MTE can override this to > - * false > - */ > -#ifndef arch_thp_swp_supported > -static inline bool arch_thp_swp_supported(void) > -{ > - return true; > -} > -#endif > - > #endif /* _LINUX_HUGE_MM_H */ > diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h > index af7639c3b0a3..33ab4ddd91dd 100644 > --- a/include/linux/pgtable.h > +++ b/include/linux/pgtable.h > @@ -897,7 +897,7 @@ static inline int arch_unmap_one(struct mm_struct *mm, > * prototypes must be defined in the arch-specific asm/pgtable.h file. > */ > #ifndef __HAVE_ARCH_PREPARE_TO_SWAP > -static inline int arch_prepare_to_swap(struct page *page) > +static inline int arch_prepare_to_swap(struct folio *folio) > { > return 0; > } > diff --git a/mm/page_io.c b/mm/page_io.c > index cb559ae324c6..0fd832474c1d 100644 > --- a/mm/page_io.c > +++ b/mm/page_io.c > @@ -189,7 +189,7 @@ int swap_writepage(struct page *page, struct writeback_control *wbc) > * Arch code may have to preserve more data than just the page > * contents, e.g. memory tags. > */ > - ret = arch_prepare_to_swap(&folio->page); > + ret = arch_prepare_to_swap(folio); > if (ret) { > folio_mark_dirty(folio); > folio_unlock(folio); > diff --git a/mm/swap_slots.c b/mm/swap_slots.c > index 0bec1f705f8e..2325adbb1f19 100644 > --- a/mm/swap_slots.c > +++ b/mm/swap_slots.c > @@ -307,7 +307,7 @@ swp_entry_t folio_alloc_swap(struct folio *folio) > entry.val = 0; > > if (folio_test_large(folio)) { > - if (IS_ENABLED(CONFIG_THP_SWAP) && arch_thp_swp_supported()) > + if (IS_ENABLED(CONFIG_THP_SWAP)) > get_swap_pages(1, &entry, folio_nr_pages(folio)); > goto out; > }