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]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 932B2D277C0 for ; Fri, 9 Jan 2026 22:11:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B03336B0005; Fri, 9 Jan 2026 17:11:45 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id AA38D6B0089; Fri, 9 Jan 2026 17:11:45 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 93D816B008A; Fri, 9 Jan 2026 17:11:45 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 81EAC6B0005 for ; Fri, 9 Jan 2026 17:11:45 -0500 (EST) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 281648CBC8 for ; Fri, 9 Jan 2026 22:11:45 +0000 (UTC) X-FDA: 84313823370.06.CB19409 Received: from MW6PR02CU001.outbound.protection.outlook.com (mail-westus2azon11012034.outbound.protection.outlook.com [52.101.48.34]) by imf27.hostedemail.com (Postfix) with ESMTP id 476A940013 for ; Fri, 9 Jan 2026 22:11:42 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b="FAPuOo/R"; spf=pass (imf27.hostedemail.com: domain of balbirs@nvidia.com designates 52.101.48.34 as permitted sender) smtp.mailfrom=balbirs@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1767996702; 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=VoDg5vb8nhYPfc7Hyg5Pm7TWZg8oXgf6lUGmqVXvXsQ=; b=MTzeyp1HpIn923nJY9ahvmnBZfd5LkjtuB1VWgIrUbFmEQ0d/dEemC/jKRQzkR9VkjrVb2 czSNxnCuL8rIHD0sIIb6+hMLcQAPUJ7kuxESpFEt5fFFm/6ulXPuIRN8qcQSnEx1Ax0Hu1 Tz7ZK+vkXtolCDjw+Kjwvfwu4lGPw4c= ARC-Authentication-Results: i=2; imf27.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b="FAPuOo/R"; spf=pass (imf27.hostedemail.com: domain of balbirs@nvidia.com designates 52.101.48.34 as permitted sender) smtp.mailfrom=balbirs@nvidia.com; dmarc=pass (policy=reject) header.from=nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1767996702; a=rsa-sha256; cv=pass; b=lCPzY7mEjqNFr+tus5WpE91p5+cPXo4H6cR916qic7gXJv3/jDc4jOASI7QNc9EAjby7hR 9skrkxnRHtSwgtr4vJ1zWKwZsDx2g4a1oOr531b6A+6D1RcXFADWVDfsZ+0uDFVTAfk3u/ v9MIHTITZ5NeOzndXLC+c9phLJeOiak= ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YGLfLUEDTia+tXLmJynhs8ioKd9nWlJ9Z/HBMe4XdSa8id7sswlm0+cEi/mtALOiZg2+KGDtyBg8qWJ8ksjEGAAmP9eS9dcKQ6PIA3qYNpYJem3pUXhkfQU8+gQqzsPkrBG1+cVW9b5edOrWyfuXQN/WIsdYKrmflbXtQRYJA6Yw2QZAg/gwUOfWQipkwjpG33RYi23iakVJWwZpBl7EOTz9FNQ8ovm34ga3xzVhOXN8gM8Rcur2pftJRf/DstaCdKeG6XnJEIUmYThcEhoOE4GwyIZFaBn0y/LsgASzTrwO7oxjeTwmhVPZEpTDN7z0BQnhoydLVYUXnky3xjREMg== 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=VoDg5vb8nhYPfc7Hyg5Pm7TWZg8oXgf6lUGmqVXvXsQ=; b=zB/btfOcMr+4zLCtDVqZ3HbajBLV6lk5RN46IlHK++h4qgeWfYoV0KXNDqbUjQ6jdgB/q9RBUBwNIuElvn1eJ+g7HaWHCy9wBkUnm8rMa8o9RAZ2B8IQPZMYhJ30NHNkACkBpK8wVdV5WyP/euk3VXKGmz/ujo/k3M+VxRNy/zVjV0n8XMYnqBvRQySRMLsluFSFZspdUJU2eO2LM+g7K1Yq0bHGCXkSZlJeQfgIAdcruJvhNSy2oJJbAY3HutqvPCpZy03dORTY6M104tA1h4tprGhRxf2T/kSzgISfHPYihQNnx85iGwLRXs2CUk8/RDS5lr6G87JBuPXyfOt5pQ== 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=VoDg5vb8nhYPfc7Hyg5Pm7TWZg8oXgf6lUGmqVXvXsQ=; b=FAPuOo/R9tdH6nw3rwljeXBwkNCu2NGIxfixVZaNMZ1zQGkjrkSauKQzNuclN9C+/z384HrfyZE4EevZGDIF0V72N5+HYFzYrNDfFAHiAFxQneMPM+7QMDfgCqQxKHMM7MwMegzVbozstc7O25DGP+yb7uAr3tiKtudPvkvks9n5+XkCQlan1CDEkOZnxZzfqTa635cnD3w7yxGBueB7sfXsgyYBkPeVj1ahshBUS3EvGFcW0TpdDm4trLxqLhZfPh7GUhiq3KA76w91xPeVITV4O2Yox8wb9lL3OF5I54uzKCVu7EAmRlXU2chIIIZZQSApRErImXeuqvNNsUv1vA== Received: from PH8PR12MB7277.namprd12.prod.outlook.com (2603:10b6:510:223::13) by BL3PR12MB6474.namprd12.prod.outlook.com (2603:10b6:208:3ba::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9499.2; Fri, 9 Jan 2026 22:11:38 +0000 Received: from PH8PR12MB7277.namprd12.prod.outlook.com ([fe80::3a4:70ea:ff05:1251]) by PH8PR12MB7277.namprd12.prod.outlook.com ([fe80::3a4:70ea:ff05:1251%7]) with mapi id 15.20.9478.004; Fri, 9 Jan 2026 22:11:37 +0000 Message-ID: <5c9f17ce-7174-4e74-92d7-8249f309f756@nvidia.com> Date: Sat, 10 Jan 2026 09:11:32 +1100 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 3/7] mm: Split device-private and coherent folios before freeing To: Zi Yan Cc: Matthew Brost , =?UTF-8?Q?Mika_Penttil=C3=A4?= , Francois Dugast , intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Alistair Popple , David Hildenbrand , Oscar Salvador , Andrew Morton , linux-mm@kvack.org, linux-cxl@vger.kernel.org, linux-kernel@vger.kernel.org References: <20260109085605.443316-1-francois.dugast@intel.com> <20260109085605.443316-4-francois.dugast@intel.com> <12A9DCBB-0B59-4D63-9BA8-9F99570AFA80@nvidia.com> <4485ba83-a8c7-478f-953f-78d66e84d730@nvidia.com> <18E78790-4996-4151-821B-8A1D784A3F7D@nvidia.com> Content-Language: en-US From: Balbir Singh In-Reply-To: <18E78790-4996-4151-821B-8A1D784A3F7D@nvidia.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: SJ0PR03CA0028.namprd03.prod.outlook.com (2603:10b6:a03:33a::33) To PH8PR12MB7277.namprd12.prod.outlook.com (2603:10b6:510:223::13) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH8PR12MB7277:EE_|BL3PR12MB6474:EE_ X-MS-Office365-Filtering-Correlation-Id: ffbbb180-d461-49a7-ef9c-08de4fcc0f14 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|366016|7416014|376014|7053199007; X-Microsoft-Antispam-Message-Info: =?utf-8?B?SUNvVTMza0EvQjB3Q2k0dFNQKzdTcmkxdlE1TkNpbzE1MWtXOXcycXI1Y3JB?= =?utf-8?B?YzJvK3MreEIwaWxQSzlSQ1lOb0V1MGtHWU9VTmlCeno5djk2WVY0c2YvVTBy?= =?utf-8?B?ZXVaREVTTW1LTjczUDBydWxVcVBnK1RqUFdjaGkvL2F2T1Vla0VPY01nM01u?= =?utf-8?B?WnVhUUcrTzE1NGxla3c2MXpPdUxTSTNvczRDNmhJbGorZGNGTzVoOU9nNlpB?= =?utf-8?B?NjVRQTFzeEtpd2xqUWo4akRpbU94SVhjd092ZDN4aVJta3FQRGRyejRGNzdj?= =?utf-8?B?TEtvSlhXQlRaZmFiejJuQWE0dUZVRmxiSVl3amI3VUloZnV3VjhEMW8zT2Rr?= =?utf-8?B?U2hLSHVPT2dRdFZMczE5bVZjWjVpVEJqQUdBZkthKzY3Skp1dFlrcWZnTld4?= =?utf-8?B?YmllL29MVk1MUVZzcmgxdDB1VFBPWHl4LzBlNC8zVllHdmhiK1ZvdGU5VnZH?= =?utf-8?B?RVk0NHV6RHJXQitPUTdDZ2pidWRzUU4xRW5BSmJOOGN6QkJDdTd5bll2eFU0?= =?utf-8?B?LzVYQWtwL0c2bWdsa3hQSjlqQUl4WXNrd2Q5bmdUS1FlNGl3cU9VNUkxNDRE?= =?utf-8?B?aWVBbVR0a1pmTXNBcGR3aHgzMi9qNWFYcDh6TkYzejFUeXFRZ0hhQzRzdS9j?= =?utf-8?B?Qjg2Q2F5NXlDRnE1SEp3RXRGZmdFUUJKUlJxK0EwcmdzcGJBdXhmdFEvckcy?= =?utf-8?B?UG1BNVNGR1BFNUFtQmZjYS9xRmRoeGVkRjgxaHd3eno0VXJMSjkzemhYSkxZ?= =?utf-8?B?UFpYV0JzY2ZrVC90NjZGRmpGNVQ4ZnczUUpQOStHY0FYZjh2NDRybEdvNWRm?= =?utf-8?B?MTVWLzE4emRpWHBUdUlSbU9DNnJuMGRZZmh2OExhdUFENkRCc1BhV05YaVds?= =?utf-8?B?MmlrYWRJQlZpQzJCaDdNbG9Mekc2em0vQnQyUUI3aXBvSFo5NUxyZENWb0w2?= =?utf-8?B?NkVPY3pValh0ZnJWa1NLN0RxdHZwOFR5L0t3S2JXZWpoNHluekQ0NmxZME0y?= =?utf-8?B?MnZEMnBtWlE4K1BUWExmWExFZW43WVc0SG5KaThVTk5RckMvS05qamZXQk5W?= =?utf-8?B?MzgyOUwwcXBTT21KaUpUNUlTYUVtUXQ4VkZkaENPR0dxeUtobnp6a0ZrT1J1?= =?utf-8?B?REZHd0dwZ2FhZHRoV0Z0NE9sanZwTDd4cWM2cDQ3S0tCditNVWg3UGtobG5V?= =?utf-8?B?S0Vpb0l4Sm4zdmRiYlhwbkx4TzlkajB2WXliSkpYMlNQcG9jWThwSlgxR3lK?= =?utf-8?B?WUtDWkhqd21MN0dERGhyYjRKclhQSTRSOHIvQ2xhTHhYWlh5TzR0REZKdzlo?= =?utf-8?B?Um1rS21QQ1RIZ2kvTkFyS1liek9jMk42SEVPakZBUXAzZXlsZnR5Ynh6M2pU?= =?utf-8?B?aEM5eHNRK2NPM2dXOEtxRUE4UGVDUDZkVDhDWTJzWlhGblhnMkszdWRVOWtp?= =?utf-8?B?QlRnR1FvMGI0aURBKzBjRTViUi9KVkYzdW03cUZBdzBmVThkYVRMMWJjQTBY?= =?utf-8?B?WGFZeVE5a3BKbjhLYzhpZW1ZbmM4akVFa3JwQ2NxeWlYN1RTdG5ySXRGZXYz?= =?utf-8?B?STNEd2lJb21FTEtsOTAxem4yMXVzSlFQdTcrMTYrUVZqd0lxdXZZNVdEU0lJ?= =?utf-8?B?NkJKa1I3Vk5FTDRhRzc4a3AvOXU5OWUvRkdLazQ5OTBOTXR4c0NlS3NlZEM5?= =?utf-8?B?eVN0aGJoZGh2b3pDM09JYlRIQm5xME5YVW01Rk1NMWdYaU00NmNBTjJZZlJO?= =?utf-8?B?MDZ3K3I0akdqSU1qNGVROXUvd0k3YnFsaCt3OHNKblBFMU9UTXVUTFFza1Zv?= =?utf-8?B?OEZoSU9vOEJOTnBoM1ZnbU9UQmgyNU5HN3FyKzlRdkZsbWZQVldTQVZWQm90?= =?utf-8?B?NHFuRjlsUVRqODVYTkpObkFGVHJYQ3VEdGhoNkc4eXUvcEptWUl2MXRJNTYy?= =?utf-8?Q?ufr6LCZR7z6+XUZkgK1QN9M97vF210Dy?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR12MB7277.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(366016)(7416014)(376014)(7053199007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QUtkaXhyWTJSY3J3K0plOEdhUm5kTXY0R1JXWmY2bjlaOERIVXNWR2tEaGJK?= =?utf-8?B?blhJQlBzeFhzeUxpQ2dQakxickZQcTZuTDRWUit2TlpNSXlPdlJqdHRjbzNS?= =?utf-8?B?b2V0NXNRTlZQT1BjQzVzZGVpZEVIUGhiTm9odHU2cnJnRERQRFV6aDdVZ3hD?= =?utf-8?B?MkZCcmQ2N1Z3R1R0My9LeFhUQnNkVkw3OG0xM0VPczMzRG5RS0ZObFUvMmZ2?= =?utf-8?B?WjVKY21nSmF1d0IwSDVnK2JsT3h6b29Eb3VDNXdOR3p6RmNvLzZMSjFaa0FF?= =?utf-8?B?SWRRdmVRQ1hvZHNiL0x6eEd4Tm5tUUdIQ2ZkM2E5amZvTXpnb2N2NkhoYmdV?= =?utf-8?B?TDNZVGF4c0ZRQnJQalBHVzFZaTVIN3BENVAxdTNOcE9MT2FjdFl0RWlSRlBv?= =?utf-8?B?SmN1aG9BU1I3NU8vanZyM1liejlxelpDTUsrNjlNMWFycldxSDlzUFZybGNQ?= =?utf-8?B?dlcveExRNXNaa2J0bGdXUFB0QytaWnJRTnZuOFlUYTByd1ZFQjZwWC9JSHQ5?= =?utf-8?B?cFVPQjNYeTVoVGRFTXpXYnpkMlRHYjZlMnlTczRDd3BWLzU2eVBEc01QckVr?= =?utf-8?B?akJicHc5SnhoaEZnSnBRWlAvZXpqS1BxZGZKOExNUzBCZTBIN2p2NENsMWVK?= =?utf-8?B?alN6cERyUzdxSHh5VHZEYTRkTHhVa3pyN1NUVGs2Q1Zmd1IyYzdLczEwTjVI?= =?utf-8?B?SW9sb2owSE5MR3RhYkFYeHRFVXg4aXVwN2dtbzJENGZha0tsYVlIamRiVVF4?= =?utf-8?B?VXNnS1FQdzdYR0RJa3dQZGRsT1REZ0YwZ3Z4b2RVcERKZGpjbHpZU094UFVI?= =?utf-8?B?VHp0MDdJOTlrc1A4RkxUQmhaejVjM3dGVFNmT3NKSWJqYnZrRjR2VWRob3pt?= =?utf-8?B?T2NhbGcrVHc0WFdITHJjeEVVNGl3aDZMUmZDMkpIcElSWUVSWDFqZ1BVREYz?= =?utf-8?B?b1lQV2lLWnpWb2M1N0xROFB6N1o2NGVCSU8xR0NuQ05Xc2lsNWJGcWR3QnJz?= =?utf-8?B?VzJsUThNcVlSZ1l2YTRGZkhCNjkyTElvUnhjSjR5VCtGQW05aWxucEp4RW1J?= =?utf-8?B?UFV6ZC9EVXVHNlg5TVJveTBZRDd6RXlwbS9SYXVVZzJpMHpSMzByMUVuMnJx?= =?utf-8?B?SkhxelhjN055WGVXVjQ2SXdiS1Q2Ym1Wd2ZDZzIxUWZEWml2Wms1Qkx0dW90?= =?utf-8?B?VHJNeWtOM3JOZjRLeURFVnBUT0NaVUF6WWhjQTFhWFo0OG9lK3MwQjRZRFhv?= =?utf-8?B?blhCeVRYakZSQ0tWMklZSE5KbWJRM21aeldJUEJxWUJSTGVhbUtmb0FTdHRn?= =?utf-8?B?MU9pcHhJWE1XWUI4TCszUDdzam9STjlnQ0hyQXI4bWJsalArZ0pMNUJMNnFo?= =?utf-8?B?NWJxcW02dkpUSkFyYUdqU3ZReVprdFVtSHVvQWlZVjN2SjlsWlFjTk5MSk81?= =?utf-8?B?aXM2NGptMGRqN3ZFRzEreWl2b1Q0eEQ2bGJuRnVoakQyY2hDWWFkbk5OTWhU?= =?utf-8?B?TTlwSXkzL1podGNibUd1d1FCekFuWTRxWjYyOUFJSmQ5MWVTK1drYXl4WVpC?= =?utf-8?B?Ykw1QjQyVEM3U3gxU2VRVTlsR3NRd2RCd0tUTEVlRGV0OW8rUk9GdEVWL00w?= =?utf-8?B?TklBY0grVmhrYVhNWTRJci9BOWZBcTFrMm1DbHhOTVhYbC9kNTNVK0xkNkdt?= =?utf-8?B?c0o1SnYrQ3BlSW42UTh0ek5lUEVtUVZkcXFvcDJoamE5dmE5MFJlNlJaVE5M?= =?utf-8?B?TmJzbUVCV29wN1poVXJJMFJtSDVKOEVzcnlRV2xHMU10a0FlVDVYUWxkV1hK?= =?utf-8?B?NUMvSjUrZm9LSmQvUjNlZE9vajFWMjFQcSs0ODlnenQvekVPcWhRdnd3U1Ew?= =?utf-8?B?L2MrR1ZvZEtnb0ZIeTNURWtLUHNweVcrdjZTdmtiQkJnY2VQM1B1bEl0dW5X?= =?utf-8?B?TU5GSHpTOFVDcHhCZTV6NlhBdi9YV1hHMnMrbllUMkpQUXZYaG9PNFYzcHFo?= =?utf-8?B?WUNHa0k3VlV0WDBNRThCNUc2UitmOTRWbFNUZ29NbUJaUHkva01tVU1oWEtG?= =?utf-8?B?S2Z1a016RXVkTk5ZYjFQOHp6Mk1qSHBsNWVIUmd6eXFWSFRJWDJac3dhRGp1?= =?utf-8?B?cEtXQkQyWEFaRlRiOHJ6c293K2NvUE9OY2ROd0RVbFJoVTZqRDB2c0lZQ2tw?= =?utf-8?B?M1pSS1pKY3Vya0JMTjAwM01oampMU0cwRjNjUmJxYWNSNHlRTlExRThsYURi?= =?utf-8?B?enFxTWNRS1d1eU5VSWtxc2VuR3lxZ0dZMXN3MzZSZXp3MjhaakJ4R2wrL1Q3?= =?utf-8?B?T0JmR3g5ejE4bi9qa3VuUjNoY2lzVyt5anlkVGVNbXBhTUx2ZDAyVVNaeXRX?= =?utf-8?Q?opIS5SmvuVjsjj3WH8tT2e1s1BEqc7hS8KtGOwpOETLlq?= X-MS-Exchange-AntiSpam-MessageData-1: pg9iwkBxuBLv7g== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: ffbbb180-d461-49a7-ef9c-08de4fcc0f14 X-MS-Exchange-CrossTenant-AuthSource: PH8PR12MB7277.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2026 22:11:37.8970 (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: AL5EhAxtdwdxsFdruGABHPcaFrDNFj1QviuWa0ArghUbStD014TkEBngI0E1pWgeXaWRztRVl24DHuuy0sZ2sw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR12MB6474 X-Rspamd-Queue-Id: 476A940013 X-Stat-Signature: gebayee8hju41g5mkyfnc3adomsw6g8h X-Rspam-User: X-Rspamd-Server: rspam05 X-HE-Tag: 1767996702-997774 X-HE-Meta: U2FsdGVkX19v/HgtxRA4I0TV2MBxQs6uXJkhWNge1eb+aN3gmULixtoxY1Ea20ZfV19Z9p7KwbM5B/g3dziHlXg0zbI/tLd3a/sSn8+9wrP5VyR+C8XudGB5ziTMEl482GA/MmQ9QcVN4wVEgTCz0a/WEJhno+zAxvaGd4DYDwKVP7bQyHOOWHIRdnj+EVkH6+ADH+WPCXEQYq4DEPuKn+rrlOxBkh4XVh/YaZtSKmTbuIMxR1wmHY6kQH1J9UDslj8oyHDuhkbrGIAHOxMcIVW46o/okT6zmOA+1IQOpqpyUmBJmS7YrHBu6UO83miuZF/3c5ivhsieBWOHHnDzzEPjC6P4o6xJolLSlZXoCOq1V19wYMKIi7+SqeL6W/xDzkirCM+fRZgxlVyf2l+A1WKsRTQs9vZgh73QsS4Fru/6ffvuNkehRBpg80crpeSV3tJIKvuxbgIWJlyy1QXHAW8/uIkRJqo1QFpVN4Ugz/VQ/5MYAvlqiFukg4soE4UP7eagvZNuH4U03xjALiEjPqH9Rcw29WsaZWpsFM+8fXvLD3r7VaEpEayVBw/GjU18fup1IOVmFyirz2BoYDE228w1qka5/uIj2v76/hglupKKdJjSkvTKztcwQF6G9se6UmMYZctpn1emBGrvIwuZCFMlE6+Z2sTT+BjFfv/u0ihtluE5nsaK9GklYXb9BmyFFT2+tTwfc61Yx8euBLrFdVvZ/wxImoKkaVqgSwKATH6arvuWp/lgBweGD1gWukUUM5kD5EMexV/5HGNbyJ0HMDNad8f3wFLhOOZdno6sSwUWTesvDONJHsYzl7FjqxKAZ4+zWlFbO964DjuTDVY8EWnCGrjRl2Mjroo0FN/QHhAToFvdXZ+riuOm1rzcsT3J6eqL1mIMejoWsBN6y4PtO4k3KgH4ODi4i2PBlQUw2S0UaoMFDXgc+kDPcqzMA3K8 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 1/10/26 07:43, Zi Yan wrote: > On 9 Jan 2026, at 16:34, Balbir Singh wrote: > >> On 1/10/26 06:15, Zi Yan wrote: >>> On 9 Jan 2026, at 15:03, Matthew Brost wrote: >>> >>>> On Fri, Jan 09, 2026 at 02:23:49PM -0500, Zi Yan wrote: >>>>> On 9 Jan 2026, at 14:08, Matthew Brost wrote: >>>>> >>>>>> On Fri, Jan 09, 2026 at 01:53:33PM -0500, Zi Yan wrote: >>>>>>> On 9 Jan 2026, at 13:26, Matthew Brost wrote: >>>>>>> >>>>>>>> On Fri, Jan 09, 2026 at 12:28:22PM -0500, Zi Yan wrote: >>>>>>>>> On 9 Jan 2026, at 6:09, Mika Penttilä wrote: >>>>>>>>> >>>>>>>>>> Hi, >>>>>>>>>> >>>>>>>>>> On 1/9/26 10:54, Francois Dugast wrote: >>>>>>>>>> >>>>>>>>>>> From: Matthew Brost >>>>>>>>>>> >>>>>>>>>>> Split device-private and coherent folios into individual pages before >>>>>>>>>>> freeing so that any order folio can be formed upon the next use of the >>>>>>>>>>> pages. >>>>>>>>>>> >>>>>>>>>>> Cc: Balbir Singh >>>>>>>>>>> Cc: Alistair Popple >>>>>>>>>>> Cc: Zi Yan >>>>>>>>>>> Cc: David Hildenbrand >>>>>>>>>>> Cc: Oscar Salvador >>>>>>>>>>> Cc: Andrew Morton >>>>>>>>>>> Cc: linux-mm@kvack.org >>>>>>>>>>> Cc: linux-cxl@vger.kernel.org >>>>>>>>>>> Cc: linux-kernel@vger.kernel.org >>>>>>>>>>> Signed-off-by: Matthew Brost >>>>>>>>>>> Signed-off-by: Francois Dugast >>>>>>>>>>> --- >>>>>>>>>>> mm/memremap.c | 2 ++ >>>>>>>>>>> 1 file changed, 2 insertions(+) >>>>>>>>>>> >>>>>>>>>>> diff --git a/mm/memremap.c b/mm/memremap.c >>>>>>>>>>> index 63c6ab4fdf08..7289cdd6862f 100644 >>>>>>>>>>> --- a/mm/memremap.c >>>>>>>>>>> +++ b/mm/memremap.c >>>>>>>>>>> @@ -453,6 +453,8 @@ void free_zone_device_folio(struct folio *folio) >>>>>>>>>>> case MEMORY_DEVICE_COHERENT: >>>>>>>>>>> if (WARN_ON_ONCE(!pgmap->ops || !pgmap->ops->folio_free)) >>>>>>>>>>> break; >>>>>>>>>>> + >>>>>>>>>>> + folio_split_unref(folio); >>>>>>>>>>> pgmap->ops->folio_free(folio); >>>>>>>>>>> percpu_ref_put_many(&folio->pgmap->ref, nr); >>>>>>>>>>> break; >>>>>>>>>> >>>>>>>>>> This breaks folio_free implementations like nouveau_dmem_folio_free >>>>>>>>>> which checks the folio order and act upon that. >>>>>>>>>> Maybe add an order parameter to folio_free or let the driver handle the split? >>>>>>>> >>>>>>>> 'let the driver handle the split?' - I had consisder this as an option. >>>>>>>> >>>>>>>>> >>>>>>>>> Passing an order parameter might be better to avoid exposing core MM internals >>>>>>>>> by asking drivers to undo compound pages. >>>>>>>>> >>>>>>>> >>>>>>>> It looks like Nouveau tracks free folios and free pages—something Xe’s >>>>>>>> device memory allocator (DRM Buddy) cannot do. I guess this answers my >>>>>>>> earlier question of how Nouveau avoids hitting the same bug as Xe / GPU >>>>>>>> SVM with respect to reusing folios. It appears Nouveau prefers not to >>>>>>>> split the folio, so I’m leaning toward moving this call into the >>>>>>>> driver’s folio_free function. >>>>>>> >>>>>>> No, that creates asymmetric page handling and is error prone. >>>>>>> >>>>>> >>>>>> I agree it is asymmetric and symmetric is likely better. >>>>>> >>>>>>> In addition, looking at nouveau’s implementation in >>>>>>> nouveau_dmem_page_alloc_locked(), it gets a folio from drm->dmem->free_folios, >>>>>>> which is never split, and passes it to zone_device_folio_init(). This >>>>>>> is wrong, since if the folio is large, it will go through prep_compound_page() >>>>>>> again. The bug has not manifested because there is only order-9 large folios. >>>>>>> Once mTHP support is added, how is nouveau going to allocate a order-4 folio >>>>>>> from a free order-9 folio? Maintain a per-order free folio list and >>>>>>> reimplement a buddy allocator? Nevertheless, nouveau’s implementation >>>>>> >>>>>> The way Nouveau handles memory allocations here looks wrong to me—it >>>>>> should probably use DRM Buddy and convert a block buddy to pages rather >>>>>> than tracking a free folio list and free page list. But this is not my >>>>>> driver. >>>>>> >>>>>>> is wrong by calling prep_compound_page() on a folio (already compound page). >>>>>>> >>>>>> >>>>>> I don’t disagree that this implementation is questionable. >>>>>> >>>>>> So what’s the suggestion here—add folio order to folio_free just to >>>>>> accommodate Nouveau’s rather odd memory allocation algorithm? That >>>>>> doesn’t seem right to me either. >>>>> >>>>> Splitting the folio in free_zone_device_folio() and passing folio order >>>>> to folio_free() make sense to me, since after the split, the folio passed >>>> >>>> If this is concensous / direction - I can do this but a tree wide >>>> change. >>>> >>>> I do have another question for everyone here - do we think this spliting >>>> implementation should be considered a Fixes so this can go into 6.19? >>> >>> IMHO, this should be a fix, since it is wrong to call prep_compound_page() >>> on a large folio. IIUC this seems to only affect nouveau now, I will let >>> them to decide. >>> >> >> Agreed, free_zone_device_folio() needs to split the folio on put. >> >> >>>> >>>>> to folio_free() contains no order information, but just the used-to-be >>>>> head page and the remaining 511 pages are free. How does Intel Xe driver >>>>> handle it without knowing folio order? >>>>> >>>> >>>> It’s a bit convoluted, but folio/page->zone_device_data points to a >>>> reference-counted object in GPU SVM. When the object’s reference count >>>> drops to zero, we callback into the driver layer to release the memory. >>>> In Xe, this is a TTM BO that resolves to a DRM Buddy allocation, which >>>> is then released. If it’s not clear, our original allocation size >>>> determines the granularity at which we free the backing store. >>>> >>>>> Do we really need the order info in ->folio_free() if the folio is split >>>>> in free_zone_device_folio()? free_zone_device_folio() should just call >>>>> ->folio_free() 2^order times to free individual page. >>>>> >>>> >>>> No. If it’s a higher-order folio—let’s say a 2MB folio—we have one >>>> reference to our GPU SVM object, so we can free the backing in a single >>>> ->folio_free call. >>>> >>>> Now, if that folio gets split at some point into 4KB pages, then we’d >>>> have 512 references to this object set up in the ->folio_split calls. >>>> We’d then expect 512 ->folio_free() calls. Same case here: if, for >>>> whatever reason, we can’t create a 2MB device page during a 2MB >>>> migration and need to create 512 4KB pages so we'd have 512 references >>>> to our GPU SVM object. >>> >> >> I still don't follow why the folio_order does not capture the order of the folio. >> If the folio is split, we should now have 512 split folios for THP > > folio_order() should return 0 after the folio is split. > > In terms of the number of after-split folios, it is 512 for current code base > since THP is only 2MB in zone devices, but not future proof if mTHP support > is added. It also causes confusion in core MM, where folio can have > all kinds of orders. > > I see that folio_split_unref() to see that there is no driver callback during the split. Patch 3 controls the order of + folio_split_unref(folio); pgmap->ops->folio_free(folio); @Matthew, is there a reason to do the split prior to free? pgmap->ops->folio_free(folio) shouldn't impact the folio itself, the backing memory can be freed and then the folio split? Balbir