From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from PH7PR06CU001.outbound.protection.outlook.com (mail-westus3azon11010052.outbound.protection.outlook.com [52.101.201.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 69A9B3E638D for ; Mon, 8 Jun 2026 19:33:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.201.52 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780947196; cv=fail; b=o1e/pkZ4Ieg8bYH/uTYjJJCuF+S3at/zf6eknvG8y2UascTKnt+RTObknehCNSBlPlIdk7ZnpEtBw5LDcnOy4KBg8v4f48/reFytFD+zyL3wTRZvQOKT+3A/GY1Ck2vDCyg+NqNuMVFG+WSmNxHXzEB4nMcqJraR0D6Xm8GWJ98= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780947196; c=relaxed/simple; bh=GLpmhdc5iY4f0EMgfjL02ob5nso8UlfZ3o1JtJrkEME=; h=Message-ID:Date:Subject:To:Cc:References:From:In-Reply-To: Content-Type:MIME-Version; b=sc0u2QYlsdGNYsMMMEdBzZey5FDeeQHr66IFi693fSt4N+tA3gpYXE77+ehjmx1i77iEvB26Rx7B/gfYO6Qc4Rp+36MOPl1deDp3fte9HVqjkFzLcSN9w7xtNhS5xMiRLDqtvhtl+TT/Z9Noc7584Z+KKNVMq+JRLVzZKJNiufs= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=5sWMvpL8; arc=fail smtp.client-ip=52.101.201.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="5sWMvpL8" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nnAnPwBK8UtfH4hE8pc5ytmZ/oS9BStwo60eZol3HW11TC97FhnFdk4fP7aE096R+ks1WlGkHzIprWEhSJKt20Y4BrFZq9mgv9bnb6VvvtxKX9mI2frwGKDr1EbH+O8ddaK/gdKCMje0/kZmw8jZXUHuW1ZFKc100wChfNAVQSV643UP+70+1HTnK2yMe9VClQfLnwX9moakaX9iUhDk/7mowdo2EAiOvhdrSSUwxVRV3o5oCJK/tOVpb44wsg2DOfrGTe86sbqJDBTabkXuopYKuizMBG9a8jY6/jsizl+Lg5uGyzvT8uxOHY4Y+f9XVMA4VfPyTgeGKYrpFjdvuw== 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=4UiPm+l2DShL7lJx3UlBmx53UZ+ZgQUHbki0urBNjho=; b=cJR4Qiz5CCd51pj9CEkLNFTN4+qMQZGHIFa6OORomcQP8gJr7v/aCGk4Kr1xVBYn5QAwbPxyEsCtJV1edeVCxNJ4/ziGECr18J1Orxtvak4/OGupfzJYCQmOIzFXtq/HYt1HrpTwdNodex9gXc9eQNQzQJHq27+mvp7k/yFKR7O9ZFrFNQorB4kg+YlYbFBKdxOVSbWLPH5pCklhQdtlIRKiLwXTlVrDeBM2YCfeKPTiiZOtYD634tdlqPwQEdh7l+CVXvDUoKLH8JPWRdrKkcOpCiJIaK10ajpEmLNBiwKz6tSWCZC3z/i+CCq+iT3GOEecabuqOsrpjef1Su4IWQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none 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=4UiPm+l2DShL7lJx3UlBmx53UZ+ZgQUHbki0urBNjho=; b=5sWMvpL8ltMTptFopMdzzInva+cAuHTsixIe7klqYhngUPKWn21fnVVkkZxkS2z48nq3CEN9oKMcGD/1u5v9UMjISZSmALu+TYM7P/+eyOdLuHFIuTwBAIVBnE7qMlpealn8y1SJ2rkuiHGSfl9oD5yP/bjF5+2zkugfzCHb4EI= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; Received: from BN9PR12MB5259.namprd12.prod.outlook.com (2603:10b6:408:100::17) by CH3PR12MB9100.namprd12.prod.outlook.com (2603:10b6:610:1a8::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.12; Mon, 8 Jun 2026 19:33:08 +0000 Received: from BN9PR12MB5259.namprd12.prod.outlook.com ([fe80::122c:cca7:c2b3:90ed]) by BN9PR12MB5259.namprd12.prod.outlook.com ([fe80::122c:cca7:c2b3:90ed%4]) with mapi id 15.21.0092.011; Mon, 8 Jun 2026 19:33:08 +0000 Message-ID: Date: Tue, 9 Jun 2026 01:02:54 +0530 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 3/7] mm/migrate: skip data copy for already-copied folios To: "David Hildenbrand (Arm)" , Zi Yan Cc: akpm@linux-foundation.org, kinseyho@google.com, weixugc@google.com, ljs@kernel.org, Liam.Howlett@oracle.com, vbabka@kernel.org, willy@infradead.org, rppt@kernel.org, surenb@google.com, mhocko@suse.com, matthew.brost@intel.com, joshua.hahnjy@gmail.com, rakie.kim@sk.com, byungchul@sk.com, gourry@gourry.net, ying.huang@linux.alibaba.com, apopple@nvidia.com, dave@stgolabs.net, rkodsara@amd.com, vkoul@kernel.org, bharata@amd.com, sj@kernel.org, rientjes@google.com, xuezhengchu@huawei.com, yiannis@zptcorp.com, dave.hansen@intel.com, hannes@cmpxchg.org, jhubbard@nvidia.com, peterx@redhat.com, riel@surriel.com, shakeel.butt@linux.dev, stalexan@redhat.com, tj@kernel.org, nifan.cxl@gmail.com, jic23@kernel.org, aneesh.kumar@kernel.org, nathan.lynch@amd.com, Frank.li@nxp.com, djbw@kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org References: <20260428155043.39251-2-shivankg@amd.com> <20260428155043.39251-8-shivankg@amd.com> <810e9a58-9c08-4f5e-af5f-866685ca09b2@kernel.org> <7e6a7626-5a1b-4672-91bd-85b0f4ee2ecb@amd.com> <7430d69a-616b-40cf-a2e8-6ef4e57b6857@kernel.org> Content-Language: en-US From: "Garg, Shivank" In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: PN4P287CA0054.INDP287.PROD.OUTLOOK.COM (2603:1096:c01:270::9) To BN9PR12MB5259.namprd12.prod.outlook.com (2603:10b6:408:100::17) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN9PR12MB5259:EE_|CH3PR12MB9100:EE_ X-MS-Office365-Filtering-Correlation-Id: b515a901-4e62-4411-6de7-08dec594c4e0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024|11063799006|4143699003|56012099006|6133799003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: ompxh71fuxEqVlXmIA2dpMyB3N/0bolMeIkeMSOyEsovjVodldyNqVJQ7cKb2T5AXI3ZNxmPsPBI0sXJ0yQBQsAY95aympj+9bYMqJFuNrlZbGqxFftq4DsGNl27nKE6nG5F6ehoniLrvVDQFJWVy3KtzN6IgIWQKFO5aFYHjUP3Iz/UBJmAtbYO0ShnnKIZktUOPQ3Hq1A4GEj8oGUnmkk6lPAOr2izKXDYvGxXhB9OzQ/Hvd0bs2uLK3eHhMRGGY5cXOdTWhSSwIkpZ1ey8D6YTIwomiIfqZk9a3NVdTjTmJG6T+muP1bVzigsUXlI3n3tG6qMB03OjUaLZreMIySgOXEpFxQDYiagwnUtieSGUOuEvJ79xBH3Wha4lmSgPKmAoP/ZtswvLAoox5jhH72+VhXczg+Jqg5v3aG+pXMlE6/XgJXOarHrMWbXupFiL1wKetG/JXyT4QtJwyne1+qWzcJ+Yj98XT1U4inb/gwBwY4fFWSPLTS5FNTYxmxNRiRvDgf3Mv8nDPWKAaCay17jYCh8pS2xw1v/hlWSgO9Vjkc2j4qi5nEk83skU4NqYqsndTq14r7pbNAKPsErkL7JLCl7UDiXg/vJa5QbhJxI0gKo3fEUoNc1CtSZhmGs44VdF3sDDyvfWJ1AdvQzuhiALy+lQ5pkI5gNgcAR71kFHEKoTydAz785Y8+XuZfKOvMgRhH3dmzwl16b0WvjXg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN9PR12MB5259.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(366016)(1800799024)(11063799006)(4143699003)(56012099006)(6133799003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?R2pKeEJBS1BCdEZGRzY5b0ZWaUE0aWJGZHlyRkhsSjE1SlFjbW5rUkJmazF6?= =?utf-8?B?NVZMSGw3WDVOVnRvTVlqK1JuMHJtTWgzRzNOWlMvTkhwOTNGdzNiOE50UE5s?= =?utf-8?B?NFNYejlncVpUTWlCRGUvanZyenQ5UTJ5V1I1VTJJQlF3d2lOUWN4SWNObS83?= =?utf-8?B?dWw0N29QTFYwU2QwV1BCbjYyYWVPd1hSd3dCTnhCQ0t2MUhjNFBPcWFmeHRn?= =?utf-8?B?MkRLdWVVMDU1Rm1QYlYwUWhyVFB0dU1iRTQzcXpaSzd6MHIzOTk3U3NlT3JK?= =?utf-8?B?TkIvZW5ERHpjb2J1MC9ZcExTY1ovK0pxY0hacmp1dlJuYVJ1VWFLOC9USnNE?= =?utf-8?B?MG5hMHVDa3BHbzJCUHRYSlpBNlAzaUVsdGJOSTRuN3d2WmEwRWxDby81MGs4?= =?utf-8?B?Y2t5ZnNBMUR2UlpYb1NRQVg0S2ZaNjFXZ3RhMlBVUFVBTlZUVHF2MEoxVXZD?= =?utf-8?B?M240TWE2NHUybjRsWGFFQUtNVGk3aG5DWVJoUEQ0SFlpL0NqUyt0YkEveHBC?= =?utf-8?B?M2E4a2g3bkhZS0JyTnNjSDh3M1Rhb0M0dDNwdXZySFVxU0E2WUpUNDBjNDhD?= =?utf-8?B?TCtzTFB1cXJSRCtnVlBzWjRpRWVuWDJQQ1BNd3NwS2Q5S2p0eWFKYVBzOCtL?= =?utf-8?B?ZnJ2bm1PQTBQTFovQ3F0amFJWjlaaCticjFEQ3BHVkZ2cFJqakRIcWlOZlln?= =?utf-8?B?bktNN1lVT1l2UUplVmhIWjBtSlp5NkUzdE5FcnB4WVNyMlVzeEttTVNVR2Jo?= =?utf-8?B?R1Y5YTJjM1lCQVlmVk1tcDZzK09IVjZDWElpL0YrV25CMHdJcHFpemc5QjIv?= =?utf-8?B?MlI0NFZUVGEwVW9pQU0ycmFCQ1RvRi9STjRDQ1czUmxRaUNVMmkxeENTS1RJ?= =?utf-8?B?MlBXVlczU2Z1Wk5adFZGbFVLN0FLSnpZdVJKN3lxSWU5dWNVYll6RUhsM3Ri?= =?utf-8?B?d1lBeGhqZStXK3grNjZ3RUpxKzRvbjRGd0hjb1hYbzBzTTVsK0ZwZHAzOEdr?= =?utf-8?B?U3Vod3A4ZktQZnRPdCtkMk8xbGs4dHhCOWlzRzRSeVdYMm45MXNVNUNvb3I2?= =?utf-8?B?SGJ6UFpzQnFQQnhrbGlvTFFid1lGUUIxWjg3TWFEK3NnWXM4SnlGN2daUTcx?= =?utf-8?B?YXZ4MHdPeFJkVmU2SjVCRWJTekFPQytoRmpSeVdKOGQ3TmFzTGNvQStCdzVF?= =?utf-8?B?OEJUc2dLeDhMVzgwUVhRaUdVbDRYbUtNM1ZBWjdaZVh1OW8yaHkvTGpyV08v?= =?utf-8?B?TnJ6RlRoZFB6QXZqMURYcSt0cWR3QjB6T1UrVm1aTURJMlJIM0gwRVdKeG5S?= =?utf-8?B?bWRURzg5QzZsUDVCd2xlNndWQnFpcUpSSHBmdlV6M0xtaTRNWDhBa00ydElh?= =?utf-8?B?ZXR2bzFpbHEyb1dXV1lqTFI4bDZ6Yytpd2hiL0xBRnV0Umh4Z1pRbmovWEx1?= =?utf-8?B?VUZCUDhOb0w1MEpmR1pXUFMyU04wU0xBR25DS3RHU2hYWmNSSUNZcmxLTGZN?= =?utf-8?B?Zy82MmYxY1dpbkUvU0R5ZTBVL2ZVelUzb3B6enh3Y1E3Slhzcks0Q1gwd0FD?= =?utf-8?B?aGd0K1VuMkp0RHZ6U3Qwakl2SEYrMU94WlZ5Tm5JWXdPQlFGQlpoemJDcUpO?= =?utf-8?B?UEV1Si9KdmJmcGpVSzhrUHdGUGJmeGJPNkhmYXZ1RmY5dzVzV3VFZU00ZnNx?= =?utf-8?B?NzNrTTVNNkxMZmpWVGJFTy8vN0RocmtxZWZxVGpaVWc2cStvLzBBSFlMUmU0?= =?utf-8?B?ZEFIM1Z5ajZUQkhDdzRLeHdzczNod1ZJQVVWbXdSaWZDWkZwV2dzc1RFTnND?= =?utf-8?B?eTlDQ0pIMDRLUVpRekZ6SXdIQVZqMHArQk5uSVNiQVBjb3E4T2ZhSFRwWHgw?= =?utf-8?B?aWtJRDdiQ2FHM29kWVZSUThqcjIwNFdiaTR6aXRyTVoxOTNVR1JxTWZKNTZm?= =?utf-8?B?V1dET0tTZndKTzF3U09FWENxYTdYME5USmJVRTZSY2pMZDg4U2RoSThNbklj?= =?utf-8?B?cndCVzUvOExRcGhZVFVad0ZGejZxRDJhVUFaTzJEOEtpQ3hjVittNEgyQ0xV?= =?utf-8?B?dnNoSlRPZWFDL3lzNEd1dzBJc1FuY3ZucUQxMUlRSmt1TmxIVGNZMlZhb1ZP?= =?utf-8?B?NC95aEV2NUdKMlZ1Z3ZwSGNHL3grWXpwS2p4emloaXZoMllEL3l3Z1hIempl?= =?utf-8?B?NDUvcUJkaWNoN00zVTJybWR0T0QxWmlTbTl1SXA4ZXI2ZVBPZFdBZFZvTVBL?= =?utf-8?B?YWYzdDhKZDJKekxVRHRyQ1hNclFMYnlrdDEveWVTWXlZNlA5UGhKcTJ3RjN0?= =?utf-8?B?enpDbXpXSGZsNVNrSGZWbTJwTUNJUSt6cFNXUVBTNnVDeTVaV0UwZz09?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: b515a901-4e62-4411-6de7-08dec594c4e0 X-MS-Exchange-CrossTenant-AuthSource: BN9PR12MB5259.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jun 2026 19:33:08.5054 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: C8XXLT4/1MGsqj7iGzclrZMKq/zv7FBTD1yyTBWF3jG2IPp+CQeObQrvp5TH3pWaYgEqDTvpBJsPSqsMizGsuQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9100 On 6/8/2026 9:13 PM, David Hildenbrand (Arm) wrote: > On 6/8/26 17:41, Zi Yan wrote: >> On 8 Jun 2026, at 11:18, David Hildenbrand (Arm) wrote: >> >>>> Sashiko Comment: >>>> Does expanding FOLIO_OLD_STATES to include BIT(2) silently corrupt anon_vma >>>> pointers on 32-bit architectures? >>>> The anon_vma pointer is packed with FOLIO_OLD_STATES inside dst->migrate_info. >>>> To separate them, __migrate_folio_extract() uses info & ~FOLIO_OLD_STATES. >>>> Since anon_vma objects are allocated from a kmem_cache with align=0, >>>> ARCH_SLAB_MINALIGN defaults to 4 bytes on many 32-bit architectures. This >>>> means a valid anon_vma pointer can legitimately end in 0x4 or 0xC (meaning >>>> bit 2 is set). >>>> When __migrate_folio_extract() masks the pointer with ~7, it will silently >>>> clear bit 2 from the anon_vma pointer. Any subsequent call to put_anon_vma() >>>> with this corrupted pointer could cause a use-after-free or a kernel panic. >>>> -- >>>> >>>> #define ARCH_SLAB_MINALIGN __alignof__(unsigned long long) >>>> >>>> I initially assumed this to be always 8, confusing it to be same as size of >>>> unsigned long long. >>>> But the GCC docs note that alignment can be smaller in size: >>>> >>>> https://gcc.gnu.org/onlinedocs/gcc/Alignment.html >>>> "For example, if the target machine requires a double value to be aligned on >>>> an 8-byte boundary, then __alignof__ (double) is 8. This is true on many RISC >>>> machines. On more traditional machine designs, __alignof__ (double) is 4 or >>>> even 2." >>>> >>>> If my understanding is right, Sashiko concern is valid, and I can't safely >>>> use BIT(2). >>> >>> 32bit makes this tricky indeed. And that's also the reason why >>> FOLIO_MAPPING_FLAGS is currently limited to 2 bits. >>> >>>> I see few option from here. Either I can gate batch copy for CONFIG_64BIT, >>> >>> That's a bit nasty as we'll have to special case 32bit vs 64bit. >> >> IIRC, multithreaded copy is already gated by CONFIG_HIGHMEM, otherwise >> it needs to perform kmap_local() at each copying CPU, which complicates >> the process. Then, this code will only used for 32bit without highmem, >> I assume there will no page copy DMA on 32bit platform. Maybe it is not >> too bad to limit this to 64bit. I agree. > > I'm more concerned of CONFIG_64BIT handling in the code, but if that can be > avoided easily, fine with me. MIGRATION_COPY_OFFLOAD will not be enabled for !64BIT at config. config MIGRATION_COPY_OFFLOAD bool "Page migration copy offload" depends on MIGRATION && 64BIT I think only place in code we need #ifdef is: enum { FOLIO_WAS_MAPPED = BIT(0), FOLIO_WAS_MLOCKED = BIT(1), FOLIO_OLD_STATES = FOLIO_WAS_MAPPED | FOLIO_WAS_MLOCKED, #ifdef CONFIG_MIGRATION_COPY_OFFLOAD FOLIO_CONTENT_COPIED = BIT(2), #else FOLIO_CONTENT_COPIED = 0, #endif }; With FOLIO_CONTENT_COPIED=0, this will be no operation for its bit operation. eg: const bool already_copied = dst->migrate_info & FOLIO_CONTENT_COPIED; evaluates 0 for !64BIT. Git tree (Work-in-progress): https://github.com/AMDESE/linux-mm/commits/shivank/batch-migrate-offload-v6-wip: 4cd9324a On 6/8/2026 8:48 PM, David Hildenbrand (Arm) wrote: >> align arg. Or I can change the migrate_folio() callback to pass already_copied >> info to change to dst->migrate_info enum. > > Can you elaborate how that would look like? migrate_folios_move(.., already_copied) -> migrate_folio_move(.., already_copied) -> -> move_to_new_folio(dst, src, mode, already_copied) -> a_ops->migrate_folio(mapping, dst, src, mode, already_copied) = migrate_folio / filemap_migrate_folio / buffer_migrate_folio (many other sites in fs to change) Thanks, Shivank