From patchwork Wed Mar 19 19:22:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shivank Garg X-Patchwork-Id: 14023037 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 EA82AC35FFA for ; Wed, 19 Mar 2025 19:23:44 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 06C8A280008; Wed, 19 Mar 2025 15:23:44 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 01BC0280001; Wed, 19 Mar 2025 15:23:43 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DD9E3280008; Wed, 19 Mar 2025 15:23:43 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id BBC6D280001 for ; Wed, 19 Mar 2025 15:23:43 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id B8A6016074D for ; Wed, 19 Mar 2025 19:23:43 +0000 (UTC) X-FDA: 83239275126.04.573C71A Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2041.outbound.protection.outlook.com [40.107.93.41]) by imf26.hostedemail.com (Postfix) with ESMTP id 7AEFA14000D for ; Wed, 19 Mar 2025 19:23:39 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=amd.com header.s=selector1 header.b=WlhflszX; dmarc=pass (policy=quarantine) header.from=amd.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf26.hostedemail.com: domain of shivankg@amd.com designates 40.107.93.41 as permitted sender) smtp.mailfrom=shivankg@amd.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1742412220; a=rsa-sha256; cv=pass; b=upevnQhldKvhJmncxDjh+NOYHSl5qFQHPhT10b6/L1wyEOmhCCZSK6AzED7/gXMT9on9xj 6nutC1TiHqNXdHGys1F2dFD0NPj+sXur5rdOaezrBihXTWgtvwrhABeo+fKDnsbCmAL2qC d+NbXkOM35VwSuyWU06T2cLmar9hjKo= ARC-Authentication-Results: i=2; imf26.hostedemail.com; dkim=pass header.d=amd.com header.s=selector1 header.b=WlhflszX; dmarc=pass (policy=quarantine) header.from=amd.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf26.hostedemail.com: domain of shivankg@amd.com designates 40.107.93.41 as permitted sender) smtp.mailfrom=shivankg@amd.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1742412220; 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=R4pTY4qimGp+eX/PIhEn6Rb2JoweUqEplJQfgDoLjGM=; b=IT4YHdO6ny8ERNU0IqG4qdv0qER108BcyQbH0iLg/+pVXaqMtT7LaKRAvxk/Zf21BE+hUM hXE1enj3ncNG5UBznlrIk5oOiRNk8GkK6LjQzNt/Yn6CWHdx7mGk8yDBNKAG+gBIuQzA6u D92xE3tzf+fNohQxIvknUgsAv6TVcRI= ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=m4dUnyTuEVtWO5ixBvw1Mlx/mUrHEoRGfYswiiTDW5igzi0YAA7J+qhTKyW1jhapGg7+e6JhwpIf/ZAL6c59IUe7EzCvJeAMFg2yiU3Vlm6EnLyia9MyJSsMfPRi3uiUxhYApcfL7z+jEbufFBTXyiraQRMxsUobD+0XTcvbEApHMTHTAFXywexbOHnRQZAUd0uvAwnKjJvaqoUrsqyoeF/WbrYknGBSVn0olGsReOnmUWZvtppbXhMOuUJtJ+7KWhfmJ9IcnyEDLtcfTUR8iUrXA/dGWM6DoSbbohrItnu8t42sUWMMnzqd0D3StPD4M+xw5gtcnoRj2uNciyPbnw== 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=R4pTY4qimGp+eX/PIhEn6Rb2JoweUqEplJQfgDoLjGM=; b=kZQB2Dgm8XbVoZ0op+HJRnhpJALAg//kmIQrrn6AJijxM5d6iEFDzmrIzNn1WlFcBfJ3LKHl8svphY3/ZcBbdvjU6F6HPvhryJc2VK8BfywwabjBlxnOfqG8UNTkdtVIqTzODXPBzZ/09zOAY4IU00qQ/WpUdxxYM0jbXQAQ0VMFIg5JTig7mqzUBw/rzWmgwY/1/9AQvNsx8J51Nba3rlDGqclQkhgaiPGqkDRyMWbr3cfqSuL17z12KcuG3X79xk/8eHaNuqZx4AC82wziazCtTTTm6h92zFbA/z5FZwG4CSQD3hooxYVpnMB4sev3KbDeoV+fvNL1LZakKbZXlg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=linux-foundation.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=R4pTY4qimGp+eX/PIhEn6Rb2JoweUqEplJQfgDoLjGM=; b=WlhflszXByX/8Yyxr6+7//rUPB0Vwe1e31YteQOOvwUOGg2WE37BGVqiyHYpBtOmW7w4pcn3ppCd9SNP3Zz0Yvzp37V+vfOnWkjp8h8Zj+wfUrl6zdopUUS9fJNnL3/ELD+uFF//uvPyQG4/Z6oo6OsrQf72QQMGvLt35K76Wlc= Received: from DS7PR03CA0061.namprd03.prod.outlook.com (2603:10b6:5:3bb::6) by CY5PR12MB6480.namprd12.prod.outlook.com (2603:10b6:930:33::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.34; Wed, 19 Mar 2025 19:23:34 +0000 Received: from CY4PEPF0000EDD4.namprd03.prod.outlook.com (2603:10b6:5:3bb:cafe::b7) by DS7PR03CA0061.outlook.office365.com (2603:10b6:5:3bb::6) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8534.33 via Frontend Transport; Wed, 19 Mar 2025 19:23:34 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CY4PEPF0000EDD4.mail.protection.outlook.com (10.167.241.200) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8534.20 via Frontend Transport; Wed, 19 Mar 2025 19:23:34 +0000 Received: from kaveri.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 19 Mar 2025 14:23:25 -0500 From: Shivank Garg To: , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [PATCH RFC V2 3/9] mm: batch folio copying during migration Date: Wed, 19 Mar 2025 19:22:06 +0000 Message-ID: <20250319192211.10092-4-shivankg@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250319192211.10092-1-shivankg@amd.com> References: <20250319192211.10092-1-shivankg@amd.com> MIME-Version: 1.0 X-Originating-IP: [10.180.168.240] X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000EDD4:EE_|CY5PR12MB6480:EE_ X-MS-Office365-Filtering-Correlation-Id: 0eba36b8-6c5c-4688-3f01-08dd671b8a85 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|82310400026|36860700013; X-Microsoft-Antispam-Message-Info: 5K5op3W+FPxeOfUYOGxG0vXfoJ+uNKB5RMlWqQIu6QsHSFIfHWlmjyJKGEF8C5hQw3aos53j5x0zVfoLuM8nLbR0CcNnEHlj7VqXqKhrhfTuPby1mBAl3y5WVizIqWGcYuJdb9ij4utyC18JyH5gBYcnROFfNleg4wn97khtluO7m/nVKCpYHGi/gT+fZ1Xv4Lbn9wHuW/xwfklOz58zW0cssENnvPoFkCTiyhE1RuUXDO9wONvBCLVLns2jB6P9GrKbxV+IJLn+V9YtA3zJnD+8SqQZ5vGPLYN2GxNHPCiz2F+ZMADtcuSXh2tKzwXgA9eytdOVNODXlMLDshytuy3fJ26vem4AXdnAdbiL2iQ6U2Yotll/zH5iLM3+I5CAzqkOdycmND4GHO/1mL3/uhuXenZqLH2OBhJUg1PnkpTjH3sIlwJJOH1dY2l5f/BORbqUi9dN/fxOHJXzRWceoEC3qC7Pzxa5K4Z2qtkUaDAqBYhdpYHLUp2rpVrhHOY4kIcEcZWpwDOaWuMBFs05HcHbXy1+rZ837z+MFm2tIXowTKVSeScxFzRo3FxCEAeqhQM4CQJ5DNXvXjPSjPlFzNjjvHc7Xsxb2hoYnRaUkqsxGQbGeIsPeabfz4xE2lHj3JfG53PW30Q3kmghjUamVDKB7ARqfThSa+OnNN+pmAKwB3M+xerW8igwzAqHI8r2EBjBB3k/+/xZ0ZEUzKLxF8PJlOhL0aOI2IWRVWtUeEDUSjvjbuJJ0+qnkEjySvdTDuxXrq57xG5lgnz0JjjTiZxAzxwqe1nItN8FkRQVJnJSNAreOeMQtUR79OWTjEDy+N/BblSTqkQ4IhpwJdundh9xCIzM4e0JsBtX/0+emORifrZc6McCClbpl4TmgeLSysToFwMSr1j8tXpe2BiRQN9B5UcBMpw39g1jbht5APM0NsdtcWv3htsnDzACw8yHjoleOq4lEgnuPbL1RL4TbTUydqHx51ebDZaJmg0kGgznbs5BW0VnzVa2mA1avNcouFCRxgNyfNN7amv4QIB9xwU/IhFKxYj6B5QYLdm6RwDTrBlsISd0dMSHOYLAgHv/d8iD4VTStY5qvtqzaWA+eTC4e1u/FaxzzV/9/CvbscdZLeLZTpuoyd/tG4PK40y4nsZZz2Q16YtSo3r278MsSbrOsNXP8e2xbbSsNF/VwUPBA9Nnz9kjPZYgS/umjdTVKWCyNCeaeb/Lb+1C9b28HfuTDuuZLalaHMg3VK+/mvA2mmu3g5lFVGBjjCbc2Hp5sq2SF1o8HRZuNMNyZBwX6UR1azYbm5y76NPIcCd6pyjowq+L3vUmt6ckT4b8R+ZrjN0vPW1WbKe8kWjo6/R6Bbxgz6tcQ48iVaF0egbwLlXYc8CuqfnoK3fxWXm69SBsdbDpNoYLnyWT3tT46aPd6UIY1nd/NA+sW8J9Nk62NmUNG/Ja8Y65DwWLBMdd5K1KIkVzqiAcoIzXEJJUTGJbNA== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(376014)(82310400026)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Mar 2025 19:23:34.0682 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0eba36b8-6c5c-4688-3f01-08dd671b8a85 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CY4PEPF0000EDD4.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6480 X-Rspam-User: X-Rspamd-Queue-Id: 7AEFA14000D X-Stat-Signature: hufm4amxrjfnt9sa4ug9u6fzoof85c3h X-Rspamd-Server: rspam06 X-HE-Tag: 1742412219-115648 X-HE-Meta: U2FsdGVkX1+vH+cXxyq1aksQgNffsOh2E7ZeDB7Q0yQfQsiPbcem10iIYWsIGlmPi+b7ji1edVPUccWoujGYZw61fETEMxnpDiljsFcETGheJ/hjnTBY0fbNpDsD2o3Nmd1tJ83BRAPlFk7leoeUFt9esKVA9sjO/wxdBu2LyOL5kJmFgzYVOS3OMNyTxhnryblKidMh9NFOomC/SqXUpl6t1fVOp4eA+gXfcaOQA+omXIREXZl6aP3izkA2LMTUQNs6OcC5qENIW7I5kEpqVReCNq9+SSnfZav33XJX0YltiJsmCPUvhLzQHnaycadLaS8S7jGMIo2O+m7WfGEdo3VzNL3uFW9ZCoWWQQ1ryXsZ4bpoho/wSOwkwu0itkF98LxHlS2umOnclBbtSbl2Ra122PiBuvsf8vqMql7usssDi4vN5Vdjqu0uijQpBlgDr0FxJZnjkg3Wl26dMx5rpvacKfn4Ry8lAvGdv9V2nGGea1d8gNcY1uXXeUc8i8B4damCsl2+sViDOOnYYGhmGxYmuDIiibRK5nYq1iL6pf/ou6pXL8c3jIfUr9VnI06IDSg4Rf+k0nelKmwQIgTeLI+OM3GWjq3Gd0grk51FEGzEiFvykehCzXPG6kEapfiBL19ORBBc36SRxskj58lGWqTvW1VpIfJPTOX3K0YDXbSJozltLtPx85y+Uh2UqHn1Ord+TTLo81j6lGHKp3eX14F6T2qaVanFsLTWRK7UcWdsjo6d9qY8YSy3HaPrCGppr1oRhaBpb4p1TnyJBLV23wsXdPTSL/SlgTvDWvuu6oFXFIkTSuMqqrtcaC159xEX6N45kkc0YXF0m+kaLlkIlXbRYUWxIvrZjVecyALrK5qvbmElEWenDFHwBL7BZGfsIGVeq3CTZeMZJJUQWK+tLMP4kGM53LmS41wlaW8RErVDRzlBTT7a7rUTNpthR0td3WZFsc2nonrtv+7Vl/Y F+GY5qvC vsH3sK6W4wVbyxq3C9AbfkYf/+bE0pCPEjzKK7/kBp2c9n8/weVh3tix7snUJYU7c/ucuvqL7+o3j17Ud+gG0cIFDBjwzQ3AKPFxK33Mnv+aA9C+3npVtgs3TS4W00tOLaEd3HxKjIEbPs8jxF5fKMe+4L0H3++DjHL4nEl84EqOrMozVVzuwhU/MQa6BRvWXVQYL0Ggi0N0YR4U/iRkuOX5M425KHMEOoXcrExj0gPLYIFppZEmsoELOcYvlC+p1RKrVObdG4MZ8dupzc0VamEb/+iw6si2qQjhDOy8L48Lu1IpVnrCrj3CI7HSOwg7C301Z52sqolRxLEcd5405Pm/OmuU5Eos69z/dA7BPk72IjDPxScRYK4b/n7/wEoAqcpwsNUbZOORJdxFEhG3NRCxBdvigoGJFh6NxIItKV6k5tiQal0sSSjdSCILvkVtoRE3WQJJEmK1TKfwz0RAU+OFO6NylllwnXlkA9e4c1lLYuSl8bmpBCTIvNLF45Ek701gbT7PHc40uCumgvvuQSHAaYsbdySuxm280jNtrU8BWoodarrwehybLuvOhlwLn0hXB X-Bogosity: Ham, tests=bogofilter, spamicity=0.000047, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Introduce the folios_copy() and folios_mc_copy() to copy the folio content from the list of src folios to the list of dst folios. This is preparatory patch for batch page migration offloading. Signed-off-by: Shivank Garg --- include/linux/mm.h | 4 ++++ mm/util.c | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/include/linux/mm.h b/include/linux/mm.h index 8483e09aeb2c..612cba3d3dac 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -1301,7 +1301,11 @@ void __folio_put(struct folio *folio); void split_page(struct page *page, unsigned int order); void folio_copy(struct folio *dst, struct folio *src); +void folios_copy(struct list_head *dst_list, struct list_head *src_list, + int __maybe_unused folios_cnt); int folio_mc_copy(struct folio *dst, struct folio *src); +int folios_mc_copy(struct list_head *dst_list, struct list_head *src_list, + int __maybe_unused folios_cnt); unsigned long nr_free_buffer_pages(void); diff --git a/mm/util.c b/mm/util.c index 8c965474d329..5d00d4c5b2dd 100644 --- a/mm/util.c +++ b/mm/util.c @@ -908,6 +908,47 @@ int folio_mc_copy(struct folio *dst, struct folio *src) } EXPORT_SYMBOL(folio_mc_copy); +/** + * folios_copy - Copy the contents of list of folios. + * @dst_list: Folios to copy to. + * @src_list: Folios to copy from. + * + * The folio contents are copied from @src_list to @dst_list. + * Assume the caller has validated that lists are not empty and both lists + * have equal number of folios. This may sleep. + */ +void folios_copy(struct list_head *dst_list, struct list_head *src_list, + int __maybe_unused folios_cnt) +{ + struct folio *src, *dst; + + dst = list_first_entry(dst_list, struct folio, lru); + list_for_each_entry(src, src_list, lru) { + cond_resched(); + folio_copy(dst, src); + dst = list_next_entry(dst, lru); + } +} + +int folios_mc_copy(struct list_head *dst_list, struct list_head *src_list, + int __maybe_unused folios_cnt) +{ + struct folio *src, *dst; + int ret; + + dst = list_first_entry(dst_list, struct folio, lru); + list_for_each_entry(src, src_list, lru) { + cond_resched(); + ret = folio_mc_copy(dst, src); + if (ret) + return ret; + dst = list_next_entry(dst, lru); + } + + return 0; +} +EXPORT_SYMBOL(folios_mc_copy); + int sysctl_overcommit_memory __read_mostly = OVERCOMMIT_GUESS; int sysctl_overcommit_ratio __read_mostly = 50; unsigned long sysctl_overcommit_kbytes __read_mostly;