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 1E96FD3CCBD for ; Thu, 15 Jan 2026 07:40:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 712146B0088; Thu, 15 Jan 2026 02:40:07 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 6B9AC6B0089; Thu, 15 Jan 2026 02:40:07 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 53CF16B008A; Thu, 15 Jan 2026 02:40:07 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 3B66C6B0088 for ; Thu, 15 Jan 2026 02:40:07 -0500 (EST) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id E1EFD89BC1 for ; Thu, 15 Jan 2026 07:40:06 +0000 (UTC) X-FDA: 84333399612.23.6D201F5 Received: from DM5PR21CU001.outbound.protection.outlook.com (mail-centralusazon11011045.outbound.protection.outlook.com [52.101.62.45]) by imf04.hostedemail.com (Postfix) with ESMTP id E344640012 for ; Thu, 15 Jan 2026 07:40:03 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=mZcVvQ0l; spf=pass (imf04.hostedemail.com: domain of balbirs@nvidia.com designates 52.101.62.45 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=1768462804; 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=Ztm6oGqeLLzq3wFvvT+1iYa1ZTLWcF+XYHxGR6XFrZ0=; b=HoEy0X1dkrB+dFYEDIqWFBxZI/oR45W93u8OYKGE9WpGV/VZxFuMezIN2jpRhwl5abznKm oJxqi1Pu5/g8GRNvS64l8Muv57/qQp99tzAFu7KCkKsBE7gC/dWaqnppzs7mGUG0KeRH6A IhVLhfy5SXgT+h3DBsp1kOsAyyJalao= ARC-Authentication-Results: i=2; imf04.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=mZcVvQ0l; spf=pass (imf04.hostedemail.com: domain of balbirs@nvidia.com designates 52.101.62.45 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=1768462804; a=rsa-sha256; cv=pass; b=olq9Tm0gw5YUhORtQulTSEjEPOHl9AOdZqNn9f/hL7Midz2fv9d/hUpffA5QTmCSpiVC+2 T+3HMMRRVVkw8OfpQUwEjZ5WaVoQowfatzAdyD33X2wFqtzFBQXzfi0QA4URv4lANLTKhO zS/eNY9mP2nLeNNTXG3jCCCP1Y7V1Bg= ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GT0BcSUyx5efkaieEPJfmE5JEYSfNuDNTyTDyVs76F+Oi3UhRRNAkcdDCFp+4ofwkH16JbK4YxUe0OU7i1g4xL9m/ccY1kRUw1jmwRxy4uGk70waSlGrYqZsEDScyO2Q31hRUmsNZ33OxxIDPG+mXU7spOuzmEkfeOMIxG7wzkTH4XYqAy+iIUkORByfPqP5xcqyl0NN0GW2MMd5c7i8fbvH4RSgiTVccBwnK7IDUD7utIVqUzkKXoAKXDzONfrBDQKh1Z7WuCJavwKbUIHTvyE/op0tAz8FOWKVYk+pmeAc9smlMS/s/zk52y4c1UfU+qZxyqxwAcFreGL2eHlP/A== 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=Ztm6oGqeLLzq3wFvvT+1iYa1ZTLWcF+XYHxGR6XFrZ0=; b=S1dGxam5jt3M95TutK/Ce6gibbt4sV711NAalMpHJEfufH3dS4QZwOtmD/Ycgxnq6IJlVr6WEJvqtVFxuxrNAqVqciWix2MfyXBJNhBxuRsWXJ15btdBBN3aS/DSsdACtvESDJchEvSLmsZw/xmXrZ/kaEK5u6S2TbEj8YH+82Ju0uzHgBJI2fMuFr6vupOxo6mWvrwGKEWQXvN+Y7Yh2AcnJnvkNr4fmkpOSssn252/Bdq1zWs5mvucOmRlhhHMP0MQwm0wvYUR+hHPxjPgBnYLmu6vuJFUJ+Fb0YmCX+NofPtTfzLFopl1O36OdD2Ok83yjZCUB/m38NxpsbqFFQ== 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=Ztm6oGqeLLzq3wFvvT+1iYa1ZTLWcF+XYHxGR6XFrZ0=; b=mZcVvQ0lv/bZzdUKw+xEJO0LdB7xISgK0tVpyPT8M3/RDtRwLC6cYw+U/EWCnlv6Bb9JeTkaMwIGs6ETBLdDb+zk1fJB9Ar3Jv5TnvSPVZl68UJZ2oesp46QgmbkRgej3ry3YNAEzd74IINw57qWJR/Fd7Y42p91sI9/gjz1aWZBPbIW4LF/pfRKeSvuBxcMJoFJ1ioGX8fza/JJqyMxuzYvxqMXiUGMRGkUvNy84poLU5qq9wTTQUoFn3Fpg79BFGteVy3dA/bbdXoqIAZdbm13oNgWBVQbs6W3/XC4yEV6kM1nP4mHH/ofwcG4crC5u2OAbQ1nPnS28jQHbiRjPA== Received: from PH8PR12MB7277.namprd12.prod.outlook.com (2603:10b6:510:223::13) by SJ2PR12MB8928.namprd12.prod.outlook.com (2603:10b6:a03:53e::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9520.5; Thu, 15 Jan 2026 07:39:59 +0000 Received: from PH8PR12MB7277.namprd12.prod.outlook.com ([fe80::2920:e6d9:4461:e2b4]) by PH8PR12MB7277.namprd12.prod.outlook.com ([fe80::2920:e6d9:4461:e2b4%5]) with mapi id 15.20.9499.005; Thu, 15 Jan 2026 07:39:58 +0000 Message-ID: <58830b3f-3626-4d6e-9f00-9dc3034202ad@nvidia.com> Date: Thu, 15 Jan 2026 18:39:48 +1100 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v5 1/5] mm/zone_device: Reinitialize large zone device private folios To: Alistair Popple , Matthew Brost Cc: Francois Dugast , intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Zi Yan , adhavan Srinivasan , Nicholas Piggin , Michael Ellerman , "Christophe Leroy (CS GROUP)" , Felix Kuehling , Alex Deucher , =?UTF-8?Q?Christian_K=C3=B6nig?= , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Lyude Paul , Danilo Krummrich , David Hildenbrand , Oscar Salvador , Andrew Morton , Jason Gunthorpe , Leon Romanovsky , Lorenzo Stoakes , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, nouveau@lists.freedesktop.org, linux-mm@kvack.org, linux-cxl@vger.kernel.org References: <20260114192111.1267147-1-francois.dugast@intel.com> <20260114192111.1267147-2-francois.dugast@intel.com> <6spceodgfobizdaziju4yvvfydwvvik2wjyoyfuglozq533rgl@vmkotau3m3kw> Content-Language: en-US From: Balbir Singh In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: BY3PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:39a::27) To PH8PR12MB7277.namprd12.prod.outlook.com (2603:10b6:510:223::13) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH8PR12MB7277:EE_|SJ2PR12MB8928:EE_ X-MS-Office365-Filtering-Correlation-Id: 381b4c31-9d46-47f4-5f82-08de540948e1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|10070799003|376014|7416014|1800799024|7053199007; X-Microsoft-Antispam-Message-Info: =?utf-8?B?QjlkOTRSMnRXa1UzNXhqWmpHVWtlOElsa0tLRlhBRDlnYTlySXdCd1NiTGRT?= =?utf-8?B?TFp2MkVuYW5BbURJbWkzZjlvMVl0ZEt1MUgwSUZpSmdtS3cvb0lHTTVxVzZt?= =?utf-8?B?RTRxZUJmTHBJU1hoWTJLTHI1OWRObDJOYmZsM25oKzhYbkVlS0xvVUVzc0Fv?= =?utf-8?B?eFVXa2dIVHJYMHQyNHhrMDI1dmViL3FoVTBITG1tZkJodjN2dFlIWlhTTWty?= =?utf-8?B?YTlIckROME5FYm1NTmNxNHVieU0xdWd5ZFZhREU0cTlkbjZ2K2FSRVB6dUh0?= =?utf-8?B?UHErMmk4NStRMzlocHdOY05RckZmVXNyVHNoS1lReDRtTGc3bnpJaDNPcnhi?= =?utf-8?B?c1plWGJHaWlmc05OdExUazFKbmFqc1NDRTRwVzIrajdOeEZxajh4dWtoTnFj?= =?utf-8?B?QzBwRXFqZXpWdTBBUWFGR0wweEF6UWRxdStyeEZ3TEQrNmt4NlM3VFpQVzNG?= =?utf-8?B?SFpCSHZINVU1a1JtRjNTWi9IODBjL29zMExIRHdCUXB4eGJ0c2RQdWpLQ3Zw?= =?utf-8?B?T0RUbVZWNG02VlhZSExaTEZGa3ZKelRabUM3M2QxZUdJQmdqeW9tNTluSERR?= =?utf-8?B?MVNVMThTd042SzN6empGZzU3ZFpXYVp2R1U3YVVaWDhaVHVKb3FWbkNrUVJS?= =?utf-8?B?eHNBNmd6dFZ2bHJrS0JuRXFyV1FObjh6c1JXSnh2elhLZmV6VDl5MUsrZC9M?= =?utf-8?B?VGFmNWRYU1FXNGVRTks2SXRqaGVacHRoSHBuOU5MVzVNbmIrVElwWGxJcHJV?= =?utf-8?B?cE92VDU5SVJGalFrWWt4Z1Q3U2o1a0FjaXIvN0N4c0JXa3pRcGNtcjNRMGN2?= =?utf-8?B?TVBpZjRhcEQrNzBESkhaVklRNkZnS1JzRHJuR3U0ZUppZHBqZGJsSVhjdWNs?= =?utf-8?B?bXgyenZtU0JveHZEKytXdUdjSlBUN2RWemoxdGhzbzFsRFduL2NrRXIyNDRq?= =?utf-8?B?bC9XYW1uN1ptcDdqek53NjZMVHUvUDEwT09MSlg4YXNVZWlmU1NtdUdVaGl2?= =?utf-8?B?TU50K0dpcUt4NXkrLzNJY0psVUpNV2kvbXNmSWdteHVWdlFCV0puVnlUZjZj?= =?utf-8?B?QzcwOW1TRUtNZGRkMHlZRjhKVzlKNVd4OE16SWg3OHNvY1JyQjVtV0FxWHpy?= =?utf-8?B?ZzFLdVVWSy8yRWIzZWx1bEdjYmVZUzZzVWxOKzVINEZqTm1mOHg3M2JRRGRo?= =?utf-8?B?bitINE93aDZSU1JxUnkzQm5WYlhmUDlsWi9qaXE0a3kzRTNwN0hOM21NU3Av?= =?utf-8?B?b3NMaWFEUjNkNzhhU2s2YSs1M1FkVDYyaTZubGRPUHRBanZtOUYrV3FKQlNH?= =?utf-8?B?eXpWWG1ic05IYURCZFNTK1RLNnpMQzlWMUNET0ZJTk0rRlM0b2pkZG40YUk0?= =?utf-8?B?MHY0S0QrUXN5WHlzZEV0S1JERFJxZ3BKWTlCSCtpcFptMDVtM1NKbDFTNkpQ?= =?utf-8?B?bmZ3ak5LeWdSSFBnV1p0Rjh2YnFFbGIraUJYSldKUjFqS1JlYzdpWlZpT1kv?= =?utf-8?B?YzdBcHFtbG14aW9EUUNpNmdxREJrOEVXbGw5RDRoT1k5d2Y2cEN5aTh1TnY4?= =?utf-8?B?ZkE1TXBtalNlRG5EZFZGK2puK3ByS0gxdUxUYzkvVUFnV1J0SlNubzVDRkN6?= =?utf-8?B?TDlqWmlJaXk1NHQ1Wkd0bXhZZy9ZampoWjBJdXkvZmUwa1RjcFFySkI1a25F?= =?utf-8?B?bGxzS2cxUXM1bEJoZVhUSnhVRitrNkM5R1A3U1p2YzR1Q09Fb0Vxa0lOR3Rp?= =?utf-8?B?MDdsUWtGbHVYT1RLWU8zUXpXNWZGRW1NRHVGcHhZTCtZd2pRYUhTYjhqV2g0?= =?utf-8?B?MXlWWEFiRExrakRJSzVyUGY3S3RPR2xHNXc0eUpUVFFmZG5RYjIrdW4zRzAx?= =?utf-8?B?YVRTRXNIQXFsWGVWWFM5dFNwdDRlLy9nSVRsUVdHdnZhaHFXUzBCV2dEWWJl?= =?utf-8?B?d2xWZVBHMTg0ZE02S2laMm1XVGcvcnpmQUVjRnJxSVR1RkovVVUyMW1UOEpE?= =?utf-8?B?VURTYTFFTHRxSnBBRVRTL2ZIRHVUQ2UyU25COXlqdEZPb256bGdOMTh6bnZU?= =?utf-8?B?NHFkZjZlWHpxQUx5d0RJMjg0ZHFVaVNrbmpza2NydFFVejlCdTNPNTBWcVds?= =?utf-8?Q?YJjg=3D?= 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)(366016)(10070799003)(376014)(7416014)(1800799024)(7053199007);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dXZ4TTlZUGlqNHp1QmFWYXhhbXZUNVlwYlp1MHhSQXdYdjZ3N2htQk91emYx?= =?utf-8?B?RjV2bFVPcWd2STlTa3JheWpiNFBKUlZjQ2Y2N01iMnovdi9mZzl6RXl6TTZm?= =?utf-8?B?SWd6YVNocGQxeEY5Ni8zSVF0TGlvNVJjY2t4T2JjRTZFL2s3QVNEZDBqU0dC?= =?utf-8?B?b3FZWHU2dmRoM28xNC9pNlRTdi9wcG9iSHVVQWtmUnRGOFdWSGQvenpMTU5m?= =?utf-8?B?VjhTa0l5VlMwdGkyRGNNM0ZnVUtra2V4cG0zdnZURENiTzFBRHBqbHViSlNZ?= =?utf-8?B?TlNhQWEyTjJ1anFsam9RNVRnRnA0cG9IVnhLclRMOENlbDIvWUlScjRDUFNn?= =?utf-8?B?ZUlKYXVBZXVWVmR1dFR1QUptN1JIY0xQTEJVV0twTG1sbWpzWFo2ZG81RVJT?= =?utf-8?B?NEpkTUsxNkVEcHp6ZEhZemdlVGk3T1V3VjZuZjJIcHdmbFhXcXMxbUxubFhU?= =?utf-8?B?ZXNHbSs4WXI1bWppYWRnV0RoQS9lckZtcm5yQ3gvTlNrSFY0d3BBWndmRUR5?= =?utf-8?B?eHFJaldCMWJyRmpHYUViVnBjN05LR3ZmVk1kMjdXUDA3NnpSODJ1VHBXNWEw?= =?utf-8?B?T0VpNm5aamxTK1hWdEVid21uRlcwMWtXc1oyVURjcVU3WXZoa2ZMaURYQXN6?= =?utf-8?B?Si93Q05BK3ZyV2w0Uy96T0dFU25FS1IydFJBbWFwNGgwVHFGcUpsZ0lmKzZv?= =?utf-8?B?WENKM01aNjh3TjBLU3NVNll2bGw0ZFBrVkkySmdDdldrR09FK0tQTXovYmhr?= =?utf-8?B?L29LRkFKQ1dYMW44enlocHl1QUZ3N2xZR01LQ2tsNFptV1R3QmpITUl1OEhz?= =?utf-8?B?VkUrSlFIOGsrZENDVUZoVnlnMjhlOFE5Y25uWVJWRWRNZkNjcXBNd3Q0aTJD?= =?utf-8?B?RGpNZmxmcHZVNlg3ZzdaR1RKRmQ3cTVQcVEzeHl4TnNvdXROQ1RpKzJMelBp?= =?utf-8?B?blJUL0lWbDhSOVVWVUU3N1JhL3QrVER0UlhxNHRrVHhjWlpkWEJZbjdab2N4?= =?utf-8?B?QzJSWE1MWDAvOEs0SmFpcW5xWHlUaWd0emF1T2dabHJoTVFETnQ4WkIyUU8v?= =?utf-8?B?K1hJWGdRTDErM1h6QmRhMEpyUFpTTlpuVmlPbEdOZTFZK24ycUlNTExxY0tD?= =?utf-8?B?NVlHZ2NpN1lhUlh4TkR6MEVPRlVFVE1UczNtMXlHVXEzRndjZ0dDcDJYNWM0?= =?utf-8?B?VVhtdEVuWnpUTy9RN0VUaUt3ZG9Ia2hXeHBMc3JxdWtrZmVQWG5ES3RBNmtM?= =?utf-8?B?R28ycmVkU01nT2ZuL3lwdUxldVhxWUlYZDFhaDMwakdSU0N1UUs0SEZycVZV?= =?utf-8?B?S0locm5jd1lDOFQ1blhYMmJDeGR3ZVJIVVFoTzJIU1hHUUFxVlFJREVycHBV?= =?utf-8?B?WTdzVDJjdUtSTlpCUEhyOWFVZjU2Mklkc0ZZdnNLTGlMeGdwWGRESUlmcXRW?= =?utf-8?B?RHF0REEzK0xhcHVlek1oMDN4WllDT0ZjR2taaExLdTVOaFZXdlBYaGZRSklF?= =?utf-8?B?Y1J3Tm4wNUlTWG8yS01tS2hGd2dLV3p6Y0E4L1FuT3hJeHVDWXlZWDBvNG5D?= =?utf-8?B?TEVJZWIyS3d1ajhMczJ3WEhUZjVEcXdwd0dvazlRcHhXNGwzZ0VZUVQrK0dN?= =?utf-8?B?VXlzWHNUZThLd2RYTUVQMGYrVCs0Y253UFM0dkoyalBzUGMwTHRjYXdiWmVw?= =?utf-8?B?eDdMRWc2WTZFcmZSWlZKRHhRVDhsQ3FBTVpSVzNCY1ZMRzZZR0QrSkpvbGFF?= =?utf-8?B?dGNPME9xM0pCMFdHV2R5VnI0S2czRk1NNHZxMm9xSVpyY1REUkdUQm1Uelpt?= =?utf-8?B?K0pnKzJ1YU56QzNndEp5aDJMM0dzYnNxdzFtNmFJYWkzWHJXS2YvNXFtZUpn?= =?utf-8?B?K3MyL2FrUTVWa0E0bjBBZFlKaGcrRUVJcEZYODR4enBGckVQbFJpdlhmeDVG?= =?utf-8?B?Y1psR0VWdEt5LzJJd0VZdW9zN3YxRVo5N3lQN1RZWkpSeE1EL2xlb2FPemhZ?= =?utf-8?B?a2EwWlY3UENuM2RBWlZpU1ptMlNJRXV6bzZ6OFZMU2VoZkRiNy9kV0JLaUkz?= =?utf-8?B?YkdKL1AzQTllK1RaWUR6bEVZcmpPclk0c0lXU3lYeCtZTWpSOS8wWjhEbmU5?= =?utf-8?B?TW9KbHJwYXJCNEZLdko0NU9yRGlyNkF4UlFkMnYwemw4M2JLUXovZGRWMFZB?= =?utf-8?B?QXRaZjZvQWFLOXhldDQzUURHVTV5SGxSN3AvSnIzdFE2MHhuL0F1ZjNRS2hn?= =?utf-8?B?VDFBcm9VeVkxd2kzaTJ0WDdEcWlKSjBEYVY2ZVVvT2VIMmVpK3RrUC85ZWZ2?= =?utf-8?B?ek90VHV1bkNhMU50c0F2OG5tSkNOSExGaUFtMnltM2JXQXE4b1Zmb0c3eGdq?= =?utf-8?Q?dbOLWoRQIZEtsD5gwPrLZLF8qFYFtHVVEseX7Tw6bQ0ZR?= X-MS-Exchange-AntiSpam-MessageData-1: L+AaEehBLuYyyQ== X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 381b4c31-9d46-47f4-5f82-08de540948e1 X-MS-Exchange-CrossTenant-AuthSource: PH8PR12MB7277.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jan 2026 07:39:58.8829 (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: c+sjHTo0pSmlT3Uacqsyrnt4yW5Wa090vGGLyPTgWHH3ljJwLtSrpGr8jnHY2L5WV5IF5IftOLagzLLf8ezzRA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB8928 X-Rspamd-Queue-Id: E344640012 X-Stat-Signature: fixhrqh74njwgak3nu6hxi5f9wxknhge X-Rspam-User: X-Rspamd-Server: rspam05 X-HE-Tag: 1768462803-927855 X-HE-Meta: U2FsdGVkX19yRuBEaO9ZiKqqLGMaeCvWxq+UqD6uJjBwjl6KDK3zpmFQyQZ9o/xxvhcU1acWPmBwK7oVCa4ksl+08Auh1SLCRSbfrX4s6qwfejTQKLkLJUzE7+s9y+z/zaq5+G8Ndv26w1YdVlQA4lKPi1M7lpncE38lM2uWQvhNmMp5nmqpMR+gCnllNN+xQ7heBeuDSWIRPlKnbBvQHai9jiSRUQu06eRP8dCCWDcZUOUV2Qh1IhvTTc4eui649iQsGDt/2hOtdhmkMg8XGZlzLExN4UlXbGOIL5EU79O/J90BfbBEY85+xORuMLy0M12NG9Eu3s7B7E4e0LBwQKql9CbAf2B5uYFUQ6iSFOLzMLrq8OyF8/g92nbBOAYw69iWF0U8RtmS1ozAxeA7A2lexfozOq8TqYL5cbuHbioYHln35mH8/Yw7+VxSORqFYWjTj9FeKL996KG2AlOukSzUTuKL+HB0pBL9hQNFZ6NAv/3l1CC6Hpmlz3otvR09w/J2SS2Ej9gqPFOkuIuP3QUe+OltAuT/tfdf6q8MzgjK2Qj72SdV6mBZusW4SGr0BULnS5gVTtWEojMwjScitjD2FuEvQBzDfCrQokppIsDvBZTuiRQgOZb6nNYluL8ZbrFOR5TuRm3cfzRYgZuX5cPPtkxghz7BTT8TOXelfDMZqiiaF/1lT6z9HaoFmAkMw6y2mvscaWv2NXudwO4ZCaWvp8eH6JiM/IZJAiJ2WDsJ6gGqU9Hz5sHF78F95XYJE5ck01G2pj4bCFvcxcI73dR6xGSDKqEkZpqA+ApEOiwZzqNl1hVT3nhHTk0Mw3+mD1QBQo0ArdB90VIi+Zz6T+Z5aBqMpyKeo+/9IYezRS3igU6NMz+3dpABvpxFT6qr4DeYjJ/shZ5L/J9SdTLm5Z1eKxynuY9M0Ix/3ZJ3TdRSgdUo0Mhgfy7ZYm1hTJ+o1o+ZgYviBw9ZQAQ1pk2 1scfHmYG t7H/MJt9zNjE2b0wdBbu3dgFfW+WyJMsOrdZnyRi63Ojn/iImpIajxUrSWiagryCI8oEzv2KYH9zvdM/+B8GnULiuk4xU0x3Fqd5/PxqdqZ+RCTknWd2KEuVHWryGduenuwtKypH7tF2ksYVcN3FhNhMvjxc+na8sEaPNTKIGrKboI/NLbVgbIR66ngB6M/XAFyiocySerkIs42rwD6nRxaRkHnbIJmyaHktRG5zv4SwiP6IsgDK4Av/YYZPBBQZxxhyNuuFh436Y/SxDyatfiSl3KJNXPyZKw/ZlldC8urwBVriiqk1radolSRT6UBW3RhTPmzSyWpkgIETNMY1d5I34OpRdaL28oEsOg9f//5KWumRvpO1gRe7pLKN0yBYPn7H+zHGncs8cZ/I3JTCdxrn+GPtbxMUFN/QT3xa99wmvXia40j3LaJ2Fk/LziCiA7eK+IbKo/NITGgkUXv1eg4fc1VTHIuPgX+Q489EnrrTTkPfna+w/JMwpakIOsN3mL1b585SyPV5/bUDFLmlCU4hvl8B8EaoMaebO4NujCvLG+hqb8BAGw/r2YkVu65lXQXeeNXQ7KfTcAeqnaKmqGSbNP/Uwe4xTlXwurMPOwNU2d62u6+ZLLEN5tZHINtBWylZhB0aF4GCbojuzPSHM2vMf5P5slohbV8YKiJIlpwcYjzE5Jc/WWwg6R5DsX0FoXdIvmdDGZ6ieq0ud6yTM/lkTerjFPPXvI5ZM43EMWLKjzuPUK61hM1IboVuTNtgd4iSpVX+/hHWjW19cmNlwwzANx/LsxJy9OIrYHPGNCtS3RpQcANyroZ+7DxqhsqhaxX/GVmRydqqMXJF0QvhnA/9jrcRON/OPlnUbIeMa/oY8NYO2bagKp0s2wN/0xsL4aZ+5tCtaIzmN145lSQTdAdMVe53mEIDtMU3d3gs0CBjlpVeyovrSqJOYk4Hl8sKsza2VOsmnto5eYU/odTO9j/Jk7xQw TYE6mcqb 2gPzpuWS++r6+/YE0a5ZR+T3M9Z1t4a8avX09ZWZ6wabNF8CmupS+LgReKIo0He5TJusthUtNm5ydUy3+SQ31A1E+EoroI2fGFMTsOML1lskVlunzBVstdRELnAWJZVc 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/15/26 18:07, Alistair Popple wrote: > On 2026-01-15 at 17:18 +1100, Matthew Brost wrote... >> On Wed, Jan 14, 2026 at 09:57:31PM -0800, Matthew Brost wrote: >>> On Thu, Jan 15, 2026 at 04:27:26PM +1100, Alistair Popple wrote: >>>> On 2026-01-15 at 06:19 +1100, Francois Dugast wrote... >>>>> From: Matthew Brost >>>>> >>>>> Reinitialize metadata for large zone device private folios in >>>>> zone_device_page_init prior to creating a higher-order zone device >>>>> private folio. This step is necessary when the folio’s order changes >>>>> dynamically between zone_device_page_init calls to avoid building a >>>>> corrupt folio. As part of the metadata reinitialization, the dev_pagemap >>>>> must be passed in from the caller because the pgmap stored in the folio >>>>> page may have been overwritten with a compound head. >>>> >>>> Thanks for fixing, a couple of minor comments below. >>>> >>>>> Cc: Zi Yan >>>>> Cc: Alistair Popple >>>>> Cc: adhavan Srinivasan >>>>> Cc: Nicholas Piggin >>>>> Cc: Michael Ellerman >>>>> Cc: "Christophe Leroy (CS GROUP)" >>>>> Cc: Felix Kuehling >>>>> Cc: Alex Deucher >>>>> Cc: "Christian König" >>>>> Cc: David Airlie >>>>> Cc: Simona Vetter >>>>> Cc: Maarten Lankhorst >>>>> Cc: Maxime Ripard >>>>> Cc: Thomas Zimmermann >>>>> Cc: Lyude Paul >>>>> Cc: Danilo Krummrich >>>>> Cc: David Hildenbrand >>>>> Cc: Oscar Salvador >>>>> Cc: Andrew Morton >>>>> Cc: Jason Gunthorpe >>>>> Cc: Leon Romanovsky >>>>> Cc: Lorenzo Stoakes >>>>> Cc: Liam R. Howlett >>>>> Cc: Vlastimil Babka >>>>> Cc: Mike Rapoport >>>>> Cc: Suren Baghdasaryan >>>>> Cc: Michal Hocko >>>>> Cc: Balbir Singh >>>>> Cc: linuxppc-dev@lists.ozlabs.org >>>>> Cc: kvm@vger.kernel.org >>>>> Cc: linux-kernel@vger.kernel.org >>>>> Cc: amd-gfx@lists.freedesktop.org >>>>> Cc: dri-devel@lists.freedesktop.org >>>>> Cc: nouveau@lists.freedesktop.org >>>>> Cc: linux-mm@kvack.org >>>>> Cc: linux-cxl@vger.kernel.org >>>>> Fixes: d245f9b4ab80 ("mm/zone_device: support large zone device private folios") >>>>> Signed-off-by: Matthew Brost >>>>> Signed-off-by: Francois Dugast >>>>> --- >>>>> arch/powerpc/kvm/book3s_hv_uvmem.c | 2 +- >>>>> drivers/gpu/drm/amd/amdkfd/kfd_migrate.c | 2 +- >>>>> drivers/gpu/drm/drm_pagemap.c | 2 +- >>>>> drivers/gpu/drm/nouveau/nouveau_dmem.c | 2 +- >>>>> include/linux/memremap.h | 9 ++++++--- >>>>> lib/test_hmm.c | 4 +++- >>>>> mm/memremap.c | 20 +++++++++++++++++++- >>>>> 7 files changed, 32 insertions(+), 9 deletions(-) >>>>> >>>>> diff --git a/arch/powerpc/kvm/book3s_hv_uvmem.c b/arch/powerpc/kvm/book3s_hv_uvmem.c >>>>> index e5000bef90f2..7cf9310de0ec 100644 >>>>> --- a/arch/powerpc/kvm/book3s_hv_uvmem.c >>>>> +++ b/arch/powerpc/kvm/book3s_hv_uvmem.c >>>>> @@ -723,7 +723,7 @@ static struct page *kvmppc_uvmem_get_page(unsigned long gpa, struct kvm *kvm) >>>>> >>>>> dpage = pfn_to_page(uvmem_pfn); >>>>> dpage->zone_device_data = pvt; >>>>> - zone_device_page_init(dpage, 0); >>>>> + zone_device_page_init(dpage, &kvmppc_uvmem_pgmap, 0); >>>>> return dpage; >>>>> out_clear: >>>>> spin_lock(&kvmppc_uvmem_bitmap_lock); >>>>> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c b/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c >>>>> index af53e796ea1b..6ada7b4af7c6 100644 >>>>> --- a/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c >>>>> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c >>>>> @@ -217,7 +217,7 @@ svm_migrate_get_vram_page(struct svm_range *prange, unsigned long pfn) >>>>> page = pfn_to_page(pfn); >>>>> svm_range_bo_ref(prange->svm_bo); >>>>> page->zone_device_data = prange->svm_bo; >>>>> - zone_device_page_init(page, 0); >>>>> + zone_device_page_init(page, page_pgmap(page), 0); >>>>> } >>>>> >>>>> static void >>>>> diff --git a/drivers/gpu/drm/drm_pagemap.c b/drivers/gpu/drm/drm_pagemap.c >>>>> index 03ee39a761a4..c497726b0147 100644 >>>>> --- a/drivers/gpu/drm/drm_pagemap.c >>>>> +++ b/drivers/gpu/drm/drm_pagemap.c >>>>> @@ -201,7 +201,7 @@ static void drm_pagemap_get_devmem_page(struct page *page, >>>>> struct drm_pagemap_zdd *zdd) >>>>> { >>>>> page->zone_device_data = drm_pagemap_zdd_get(zdd); >>>>> - zone_device_page_init(page, 0); >>>>> + zone_device_page_init(page, zdd->dpagemap->pagemap, 0); >>>>> } >>>>> >>>>> /** >>>>> diff --git a/drivers/gpu/drm/nouveau/nouveau_dmem.c b/drivers/gpu/drm/nouveau/nouveau_dmem.c >>>>> index 58071652679d..3d8031296eed 100644 >>>>> --- a/drivers/gpu/drm/nouveau/nouveau_dmem.c >>>>> +++ b/drivers/gpu/drm/nouveau/nouveau_dmem.c >>>>> @@ -425,7 +425,7 @@ nouveau_dmem_page_alloc_locked(struct nouveau_drm *drm, bool is_large) >>>>> order = ilog2(DMEM_CHUNK_NPAGES); >>>>> } >>>>> >>>>> - zone_device_folio_init(folio, order); >>>>> + zone_device_folio_init(folio, page_pgmap(folio_page(folio, 0)), order); >>>>> return page; >>>>> } >>>>> >>>>> diff --git a/include/linux/memremap.h b/include/linux/memremap.h >>>>> index 713ec0435b48..e3c2ccf872a8 100644 >>>>> --- a/include/linux/memremap.h >>>>> +++ b/include/linux/memremap.h >>>>> @@ -224,7 +224,8 @@ static inline bool is_fsdax_page(const struct page *page) >>>>> } >>>>> >>>>> #ifdef CONFIG_ZONE_DEVICE >>>>> -void zone_device_page_init(struct page *page, unsigned int order); >>>>> +void zone_device_page_init(struct page *page, struct dev_pagemap *pgmap, >>>>> + unsigned int order); >>>>> void *memremap_pages(struct dev_pagemap *pgmap, int nid); >>>>> void memunmap_pages(struct dev_pagemap *pgmap); >>>>> void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap); >>>>> @@ -234,9 +235,11 @@ bool pgmap_pfn_valid(struct dev_pagemap *pgmap, unsigned long pfn); >>>>> >>>>> unsigned long memremap_compat_align(void); >>>>> >>>>> -static inline void zone_device_folio_init(struct folio *folio, unsigned int order) >>>>> +static inline void zone_device_folio_init(struct folio *folio, >>>>> + struct dev_pagemap *pgmap, >>>>> + unsigned int order) >>>>> { >>>>> - zone_device_page_init(&folio->page, order); >>>>> + zone_device_page_init(&folio->page, pgmap, order); >>>>> if (order) >>>>> folio_set_large_rmappable(folio); >>>>> } >>>>> diff --git a/lib/test_hmm.c b/lib/test_hmm.c >>>>> index 8af169d3873a..455a6862ae50 100644 >>>>> --- a/lib/test_hmm.c >>>>> +++ b/lib/test_hmm.c >>>>> @@ -662,7 +662,9 @@ static struct page *dmirror_devmem_alloc_page(struct dmirror *dmirror, >>>>> goto error; >>>>> } >>>>> >>>>> - zone_device_folio_init(page_folio(dpage), order); >>>>> + zone_device_folio_init(page_folio(dpage), >>>>> + page_pgmap(folio_page(page_folio(dpage), 0)), >>>>> + order); >>>>> dpage->zone_device_data = rpage; >>>>> return dpage; >>>>> >>>>> diff --git a/mm/memremap.c b/mm/memremap.c >>>>> index 63c6ab4fdf08..6f46ab14662b 100644 >>>>> --- a/mm/memremap.c >>>>> +++ b/mm/memremap.c >>>>> @@ -477,10 +477,28 @@ void free_zone_device_folio(struct folio *folio) >>>>> } >>>>> } >>>>> >>>>> -void zone_device_page_init(struct page *page, unsigned int order) >>>>> +void zone_device_page_init(struct page *page, struct dev_pagemap *pgmap, >>>>> + unsigned int order) >>>>> { >>>>> + struct page *new_page = page; >>>>> + unsigned int i; >>>>> + >>>>> VM_WARN_ON_ONCE(order > MAX_ORDER_NR_PAGES); >>>>> >>>>> + for (i = 0; i < (1UL << order); ++i, ++new_page) { >>>>> + struct folio *new_folio = (struct folio *)new_page; >>>>> + >>>>> + new_page->flags.f &= ~0xffUL; /* Clear possible order, page head */ >>>> >>>> This seems odd to me, mainly due to the "magic" number. Why not just clear >>>> the flags entirely? Or at least explicitly just clear the flags you care about >>>> which would remove the need for the comment and should let you use the proper >>>> PageFlag functions. >>>> >>> >>> I'm copying this from folio_reset_order [1]. My paranoia about touching >>> anything related to struct page is high, so I did the same thing >>> folio_reset_order does here. > > So why not just use folio_reset_order() below? > >>> >>> [1] https://elixir.bootlin.com/linux/v6.18.5/source/include/linux/mm.h#L1075 >>> >> >> This immediately hangs my first SVM test... >> >> diff --git a/mm/memremap.c b/mm/memremap.c >> index 6f46ab14662b..ef8c56876cf5 100644 >> --- a/mm/memremap.c >> +++ b/mm/memremap.c >> @@ -488,7 +488,7 @@ void zone_device_page_init(struct page *page, struct dev_pagemap *pgmap, >> for (i = 0; i < (1UL << order); ++i, ++new_page) { >> struct folio *new_folio = (struct folio *)new_page; >> >> - new_page->flags.f &= ~0xffUL; /* Clear possible order, page head */ >> + new_page->flags.f = 0; >> #ifdef NR_PAGES_IN_LARGE_FOLIO >> ((struct folio *)(new_page - 1))->_nr_pages = 0; > > This seems wrong to me - I saw your reply to Balbir but for an order-0 page > isn't this going to access a completely different, possibly already allocated, > page? > >> #endif >> >> I can walk through exactly which flags need to be cleared, but my >> feeling is that likely any flag that the order field overloads and can >> possibly encode should be cleared—so bits 0–7 based on the existing >> code. >> >> How about in a follow-up we normalize setting / clearing the order flag >> field with a #define and an inline helper? > > Ie: Would something like the following work: > > ClearPageHead(new_page); > clear_compound_head(new_page); > folio_reset_order(new_folio); > > Which would also deal with setting _nr_pages. > I thought about this, but folio_reset_order works only for larger folios otherwise there is a VM_WARN_ON. >> Matt >> >>>>> +#ifdef NR_PAGES_IN_LARGE_FOLIO >>>>> + ((struct folio *)(new_page - 1))->_nr_pages = 0; >>>>> +#endif >>>>> + new_folio->mapping = NULL; >>>>> + new_folio->pgmap = pgmap; /* Also clear compound head */ >>>>> + new_folio->share = 0; /* fsdax only, unused for device private */ >>>> >>>> It would be nice if the FS DAX code actually used this as well. Is there a >>>> reason that change was dropped from the series? >>>> >>> >>> I don't have a test platform for FS DAX. In prior revisions, I was just >>> moving existing FS DAX code to a helper, which I felt confident about. >>> >>> This revision is slightly different, and I don't feel comfortable >>> modifying FS DAX code without a test platform. I agree we should update >>> FS DAX, but that should be done in a follow-up with coordinated testing. > > Fair enough, I figured something like this might be your answer :-) You > could update it and ask people with access to such a system to test it though > (unfortunately my setup has bit-rotted beyond repair). > > But I'm ok leaving to for a future change. > >>> >>> Matt >>> >>>>> + VM_WARN_ON_FOLIO(folio_ref_count(new_folio), new_folio); >>>>> + VM_WARN_ON_FOLIO(!folio_is_zone_device(new_folio), new_folio); >>>>> + } >>>>> + >>>>> /* >>>>> * Drivers shouldn't be allocating pages after calling >>>>> * memunmap_pages(). >>>>> -- >>>>> 2.43.0 >>>>>