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 4F5FDC83F03 for ; Wed, 9 Jul 2025 05:25:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C75B66B00B2; Wed, 9 Jul 2025 01:25:45 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C25496B00B3; Wed, 9 Jul 2025 01:25:45 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AC6786B00B4; Wed, 9 Jul 2025 01:25:45 -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 95FE36B00B2 for ; Wed, 9 Jul 2025 01:25:45 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 384C180365 for ; Wed, 9 Jul 2025 05:25:45 +0000 (UTC) X-FDA: 83643589050.09.89D96E5 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2047.outbound.protection.outlook.com [40.107.220.47]) by imf03.hostedemail.com (Postfix) with ESMTP id 398352000A for ; Wed, 9 Jul 2025 05:25:41 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=YG3MOPHn; dmarc=pass (policy=reject) header.from=nvidia.com; spf=pass (imf03.hostedemail.com: domain of balbirs@nvidia.com designates 40.107.220.47 as permitted sender) smtp.mailfrom=balbirs@nvidia.com; arc=pass ("microsoft.com:s=arcselector10001:i=1") ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1752038742; a=rsa-sha256; cv=pass; b=kSxeJeMn+e+m/BtA+xU0gUlm0Ilzgj2mkakGDv7X1mUayi0io2sbDXRvtf2WMN9Lh7J/AB vuchlcWJQrnYvI/s8TfLBzHIbk6hxM+QBZ6aD04PvKawiLKvwt3NDzUYWoo6KWwMfGOkCI x9nvTf06NV4qi5OVRjByBextE+rEXQQ= ARC-Authentication-Results: i=2; imf03.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=YG3MOPHn; dmarc=pass (policy=reject) header.from=nvidia.com; spf=pass (imf03.hostedemail.com: domain of balbirs@nvidia.com designates 40.107.220.47 as permitted sender) smtp.mailfrom=balbirs@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=1752038742; 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=6oDHhwhxaztJDNvA4rY0cSSPQkkVg2a9gYLcak855bM=; b=WqDSjbA7CrEKxRgsGsfLcgSuo5Qq2ath2XXHXiMzdOcLhP3/zaARccMbqCUkh02Rw6/79/ aw9fr789Fu6LzbFJh8Iv7lOd3Zdu/4gW3aXqn9AgdYcy2lGG+AFRhRPIn5GNQoSgq4bZOc BxoVVDiArCwA7YjA7MkiJwW6yUp+iQM= ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Fz7/8FiFbO3KO2o3GXQOdu9nCS9NKn6/WXK5fJ3F+OFOPMM0+ieKC6bHaijGsGFC7H/aHH+XFbFT30Yqc922ZsRHn+jp9cXM+cYvuU9XjcUgslZRO+FgqLt1QgUu1+XJPMFS7jKrx3oE+Gsd8vPiwu/MgbBBUbu60CjkcS2Sln90YOIa9yafCwBTrtUKq/e6HeuDfT3VC7pf2BLSNAG7kcAGnziM5UnoaWsQB2hbWAZYQcqWF7ORo50flbKse45vzZo42EOFmph9MtAffFGxGZVuLCHKHI5KSIRXXv6+cdEyQJ/27PpJdIVFP1TXvyruyl5HrDIOhRUJRQM9r+D1qA== 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=6oDHhwhxaztJDNvA4rY0cSSPQkkVg2a9gYLcak855bM=; b=VJCBtGYHjK6s/mVBYlTdo9jpAk9jjPw4jQXNhBNad0C2ReorzNFszzqXA7HFthWRnlVQFWelSMtYQ9lvBRHz5nLdsY2+Mk1pWf1KBah4KYQZfXFGLleX7Z1pUVWjxVllD+Hm3JA/dEXuWy4/q2yrhoKDKcdOtBvD6Vgu9vCgkpUnDphKw3Qe6Byqnr+VicLbhfTEZ1NNd0hYTrdXEUEOy7nxzg081exduT/cQ3Bu0V/bw+zDihN6dcr4Zxrut/RMzTH71RjTUnjTVu9t9/uuSEoNHii9HwzMNsK+EiVMWfKtbw3yhLNGEO0kboAQsJl8WtHYvu1iJXo39JUKsXq+OQ== 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=6oDHhwhxaztJDNvA4rY0cSSPQkkVg2a9gYLcak855bM=; b=YG3MOPHncCgCW5S2yoVlPye7uSzRTNbjB/S1nwkq8E5wWhlWw0rMxR2sEvjlt0OgnWWdfRr8u3xpkH5UM1x+kctN1yOs/hCQWfUq97zci4t+VDbo77wtsWUtutCZ1ITz+gIP8D9+gHnuI66a1Trf7y9VwFPnjkRFrQ2qjEIq+hu2ydZ+O7wy5AOxc54hijb0ewx5NWTnhiiCzIcA/8JmwornwrUO2G1O4EF+ihpjGxgL00EwuOAMYtcwT/HXBBHSQ9aS3iuH8lqM6NEfEB00gR/pWHFTuZneQw2Ddb0J6fT9OMZ0me7Ys5qygRxCFnSjiMl73PU1gviE5ZBUGkZUpQ== Received: from SA1PR12MB7272.namprd12.prod.outlook.com (2603:10b6:806:2b6::7) by PH0PR12MB7079.namprd12.prod.outlook.com (2603:10b6:510:21d::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.26; Wed, 9 Jul 2025 05:25:38 +0000 Received: from SA1PR12MB7272.namprd12.prod.outlook.com ([fe80::a970:b87e:819a:1868]) by SA1PR12MB7272.namprd12.prod.outlook.com ([fe80::a970:b87e:819a:1868%4]) with mapi id 15.20.8901.023; Wed, 9 Jul 2025 05:25:38 +0000 Message-ID: Date: Wed, 9 Jul 2025 15:25:26 +1000 User-Agent: Mozilla Thunderbird Subject: Re: [RFC 01/11] mm/zone_device: support large zone device private folios To: David Hildenbrand , linux-mm@kvack.org, akpm@linux-foundation.org Cc: dri-devel@lists.freedesktop.org, nouveau@lists.freedesktop.org, Karol Herbst , Lyude Paul , Danilo Krummrich , David Airlie , Simona Vetter , =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= , Shuah Khan , Barry Song , Baolin Wang , Ryan Roberts , Matthew Wilcox , Peter Xu , Zi Yan , Kefeng Wang , Jane Chu , Alistair Popple , Donet Tom References: <20250306044239.3874247-1-balbirs@nvidia.com> <20250306044239.3874247-2-balbirs@nvidia.com> <564babd9-fe33-4ca7-b63f-73f007fbfb51@redhat.com> Content-Language: en-US From: Balbir Singh In-Reply-To: <564babd9-fe33-4ca7-b63f-73f007fbfb51@redhat.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: SJ0PR03CA0061.namprd03.prod.outlook.com (2603:10b6:a03:331::6) To SA1PR12MB7272.namprd12.prod.outlook.com (2603:10b6:806:2b6::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA1PR12MB7272:EE_|PH0PR12MB7079:EE_ X-MS-Office365-Filtering-Correlation-Id: 6cb063f0-f13d-4fe4-8889-08ddbea909a0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?dXRGalgvajFoVkFlcVFaQ3YyZFJNMEZNQUdJa0JSMjRPTjR1aUtrNXJzWVZ6?= =?utf-8?B?QTU2V1k2aWhqZThSWGxhcVFLOGJ2SHFMNFNRSUNsOXRjQm85amw3YXBEVUV3?= =?utf-8?B?SkhNSExyQXc4NGV1cmpjYTRTUlBEWXBHYXM4bkRyTjRPZWQyQ21sN2E5V3RY?= =?utf-8?B?eUlwSk4rUHl5Z0NwOE04VFhhUzVBREFzWjFOdmNOWWJnSkZqTVdVaXJ6U1ox?= =?utf-8?B?Y0kvdGd4QklKODV0Z2NaT3dYaXpZamUwa3pvbTJ2ZXk4bEFIVjFqUGlwbGp2?= =?utf-8?B?bE04M0xEMHMyUGtxaWhKeXpGcmFKZUUrY0Z0MkxYSUVJQklmVFJkTHRaWFZy?= =?utf-8?B?WUtuTDE3cjNDQVN1RkxFN3U0aVlQczNDNTZWS1RVcVpkRk8rSm9wT0UvWW5I?= =?utf-8?B?OFRBa0tCbjRDVXpIUzRqcUg3YlY5aEhVbTBjdUtSdWlNMTBOQytIc2JQWG9V?= =?utf-8?B?OVh1bFR6NHhtWWROZ2UycnZvcmJqQ2dnV1Z5ekZEYWhDOG4rWWtxK1Z5VU1M?= =?utf-8?B?WFJUMC8zbDNRd3BBZlBEdk4ya1g0OUlCOC94VGhoOTlLbGpZVEUzZEJFMCsx?= =?utf-8?B?VnJzaGVUVDRFWVZGK1hRdjJ1VDZ4MnQrdjdXNDd4eUFUWE9QbWFkak9tUGN1?= =?utf-8?B?MjUzekt4OXQ4Z1FxUzljT0FzbTlvektjTktrRzQ2VjNQTUtsN3duSksvblRS?= =?utf-8?B?dURxcXdEalJ4VlNhNjR2KzN0VXJUR3NWa2VwNk1HRityM2s4QmhEcHRmVEpu?= =?utf-8?B?N040ckZheTAxZGJGK3pYME5BYkpTakhTcndtZzAvbjJEU0VLVnlJaDdhVkRv?= =?utf-8?B?M1hEYlhnKzRwT2ZWUm1VWDhvZm4wYkFTajFPRElZcm5yblhrWDQ0elpBc1dl?= =?utf-8?B?VHVmNU02a3ArbWt4VHdGL2VCbHp5YURiM0JlWVlYNE50LytZVXc3cmFFb0Z0?= =?utf-8?B?RUlobmdNcXZkYnhoZTl6NU4wOVNsTXFPcW5IZTQwbjRGOHIxdmlyNnhhbE5U?= =?utf-8?B?REZla1M3MFI1QVZXU3BJSXozUGtoa1duckpBQ1ZOZk1tUXlWNS91am1vWDNO?= =?utf-8?B?ak9DdEtjZzk3MHk2WU5ob255WFlLZWlVVytaeStmRjRZeU56OCs0UUxEckZ6?= =?utf-8?B?aDYrM2FJOEk4ZWR5d3ZHR1BFNE9KU1IxWmVYMWJ2UGtMT25RdmJRNGg3U1RZ?= =?utf-8?B?M0RtMkFET3hjNllRSFVyaHlwSDBPTTR1K1BJKzZUTWp6WEw4OTVDOXIzanA3?= =?utf-8?B?RUd6OTMxbWhtV2QxemQ4R2ozRmVxUWk0cHJxSndGNjlaVWZTT2Nwd25sZG1i?= =?utf-8?B?ajNwZHF6REZvQjNkT3M4OU1XT05rVWRZaklKMlNZVnZMaTIxRDNEcVlvQmhX?= =?utf-8?B?QW9GRWN0N0lURXY2anY2ekl5bFJhN055aUw4bmJHN3l0N29ld2RqeGxtcWVt?= =?utf-8?B?eWJwZEFDNG9YNDYwWTN2TWJJL0pOQVlJMDN5S2RlV0tvcENDMENjdkwyeEl2?= =?utf-8?B?TDloV1pOdzNrTFEvR3BuLzBQTzdRWElVb1RnenI4czdobmJlbWkrUHUxclRG?= =?utf-8?B?YWNDcXo1OGNCYUtOSU5pZFBiYk5BOXpLdThlRW1OMFc4UTFPL2JIeS9mVWlQ?= =?utf-8?B?Nndna0VnUlNhTlN1MDVoNGpZbERScC90YzRNWFZtR1ArMlFrck53djZ4cTgx?= =?utf-8?B?NmU1djlDQlpkc3lwUFlwZERqUWZKckl2cVpTVG1JU3c4SmcyeGQ3ckcvVjFW?= =?utf-8?B?N0hsUVFjNm1aOW04T09paTJNWmhDL1BIK2FMMXhTdnM1d04xQ3VCSEVJeEdY?= =?utf-8?B?N2RyUThXUnJONEJrSHoxam1RWWpzelVIK2E1QW5JM0p1Vkh4L3lJYkNoTmxv?= =?utf-8?B?dlFIWE8vZG44d1ZWRk9aaFliUmZVektzSzZtR1pPNDV6SDd4RDNuY2NZeFdJ?= =?utf-8?Q?zhgpje2gsYo=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA1PR12MB7272.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?VGdJZCtpWlh3TFNOMUlBaU1rbWRXaTQ3K0FXcUxWMHM1WlFWWDFpVm0yeGd3?= =?utf-8?B?OTFDTXJBeDFGd2dxT0ZnL212NGlTWDM0K21jZ2tuYnFzaFFoUS9tTDFKTWtX?= =?utf-8?B?V1FkMUtEZVRTYWJwNFgwanR5dFJ4aSt0SmJEOFJRbWVKUkc0VGlHa0Rxb1BV?= =?utf-8?B?c2ZEOHFQYzRaZVdWYnFDRkd4RWRwSHV5WU9Xc0V0NDY1cmhFK2d5WlA5d3ov?= =?utf-8?B?VzM3VmhZdFo5M283OFAvUmFmM3crQnhRQXFadS9nTTlnQWJTbjlSeTFFTm9p?= =?utf-8?B?a3VscmZVdnFrbDVHV1pDZXQ0c2hUdFFzWlZLZHhNdzJmOVhoSzg1MGdVd3Zz?= =?utf-8?B?NlVBRzJocmk0UVl4ZlU4dDM4SzZHUHFoc1JjRmt5Rk1ZTk9YWjY0VEZlcVlu?= =?utf-8?B?TlE0V1FiSkhHdGl6RnhYcERJRXFRWVorenphZEo3Qm9jWWoyb3RBdVMzaGor?= =?utf-8?B?cldNR2kzRjZxUUwwcHlsTWlDT2Y5SGVHcTByOFRvVjB4Y3A0bmU0OXJZUm5G?= =?utf-8?B?bEtCOTYzQm14ZGwxbHBRdGFQSGFXRWdBVzQvajhZbXJlYnpiN3JHcndqb1FI?= =?utf-8?B?Rk4zdFRLNVN2ZXhTRnVzWHJXQnBsZVlyR090UXplMHczK0RyOU14Z09sRDZh?= =?utf-8?B?WElDRCtLcXVDbFM3eTJZcWQwRFFEMUtYdGZqQTM0S2NWWnhCdWh2WnJNa09u?= =?utf-8?B?SzRnbVRXTTZXV0JtSVhFSlIzd3RvZTRrcjBiRnhHV3J4ZjZYbGtEZVFadTlO?= =?utf-8?B?ZjdER2xyMm1aOHNKYi8rQXhMTDFRRm83QmQzeEdxbzBVdUxYK1A0NXd2MUJT?= =?utf-8?B?czVvTFg1ZmdWTVZYaFprUmlHR0N3di90dEhZY2xSdTdMUlNOMzNhbHI0QnNP?= =?utf-8?B?NU9wWlpyTk5FOUlFOGR6WmhPUVRVcG5VSmhzb1k3aExrNXo3MmtQQWJkVHR6?= =?utf-8?B?N3ZUWWNUL25nOFZBd0MwVUtjdUMrSGNlVEV2cTBQMHlkSy9ZL2dTMWxzV0lM?= =?utf-8?B?Y05tZmNsR2ZocVFDKzdxNUlUSjJBdmxYNlFSanNsOERNUW12aytRdXRSMGFx?= =?utf-8?B?S0d4T1UwdHd3b1ZFVWFnUVU0Yi8xM1hJendqZnRSYmtpMmJPdGdVS05Id1ha?= =?utf-8?B?eXVUSWNoZWlrbmJVVW9GNjVqdnBmSVJ5aHl5TEtiUmg3RGhNWU5JKzkvZERn?= =?utf-8?B?MHBrVDBwdzJPWVhTaUJiU042YUkwWUlvaFZVUVVnUWw1clJHSDJ3Y0Vnemlr?= =?utf-8?B?T3poamxXcjQyZTYrRVcwajUvNHdqUXl3Z2VTeHExbWI4TzQ1VWFKL1lXbDV4?= =?utf-8?B?K2ZINzQwVVhwcE94dVZzQ1EwL2ZETFlUUHFhdmcxOFgxZFozVGhrazlTQ0hE?= =?utf-8?B?ekRXK2UzSGNtQ1BnSXdKRjgxK0M0QTU4U1k0UmNHYzNzeTZ3NFJzT3huRmhs?= =?utf-8?B?ai9OWFhycWc5cXhoU1JMM21LVVlUUnNpM3Zwayt4anduR0pXZE44TUJxYWgv?= =?utf-8?B?TDUycFNWTnVtS2lNOCtCVFRWbmRDY2NGK1d3ZFVEclUwZkhHUDFRMTVVUEN2?= =?utf-8?B?OWRxZ3Z4QVk1QXB4OHFUWkMwR1NwSGh4UzRmZFNseWNzS2NQOFI4TzZLMFdx?= =?utf-8?B?cVVsUWlKdDl2dHRsM0c5Qng3QnRzMm00ZTM4dEd4bE9ycm9mOWh0RWhGa0xY?= =?utf-8?B?V1JXbnFBVVRXc3BuUXdnbzJBQlRIWU1PL0pmVzNJcFRUOUVDeTR5VUVCNVQ0?= =?utf-8?B?RzhIcFFsSTN1d0h2ZDIzWXg2c1hBbGFkY2JGcGJIQ3N0SmhLRmZLVkhEVFZM?= =?utf-8?B?TlNEKzlwcFl2eXBHQS9idk9uQnNFeWprNU43R2w2SzRYNlhML3BWL1lkT1lJ?= =?utf-8?B?ZUk4QXJ4MHN3U3laK0J3MUxsZTQ3Q2k2dmVmUTFmdklBd3pmaEpyUVhwUFRo?= =?utf-8?B?VXN3SjhZdkhBVHJsd3c4cm01M0VMS0Y4bTdnbnZpMldrUXpzWmUxc1VFK0JP?= =?utf-8?B?MTd1UzVlSkNHTG9yNVhZdis1Z0taM2Y4VGRjU01DdmVtbzFHby9POGc3Szl1?= =?utf-8?B?SnpuQVJpTlgzcTA1MUtkN2NxVmg5eXByVHdWZ0Y5dlBOdUlwcmxpaXB4bWFC?= =?utf-8?Q?YcJZ1a4ol+g7u+eQsFBDCeuEu?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6cb063f0-f13d-4fe4-8889-08ddbea909a0 X-MS-Exchange-CrossTenant-AuthSource: SA1PR12MB7272.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jul 2025 05:25:37.9101 (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: c023WE/N71KH9qHfIYpfC0tKErDdsDPfIe++FKJ969TKzLGtz9r1sj05ZarNoFWsvhGLLa1Ai6Pfe6qEjlLtcQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB7079 X-Rspam-User: X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 398352000A X-Stat-Signature: shgnfzpon8hehbdr9p7y6yf6e4jgnos7 X-HE-Tag: 1752038741-593728 X-HE-Meta: U2FsdGVkX18GwyDFF2U0UFMRs1uZOlQ7zbR/RkNroMh2+eBKdVfu7HXVqS/EnsvnAi5FquLfhctcP2bE6+9jnd2dDLTv+3naCtb0xwuhLYg5BGnyK37+Rvy/RkfgTSF9rhZnDPy+7P+CloQSEG8Gq4zXmHAIVrBYyJu5qsqDOMR8rPfOJbGhKu+5/pbMffMu1VUf5B+AU/hxBA1w8gQf8ri0VpiTkW+IrDSvGSzN9BHdxl/7/J5gl6+HNciZ488xXWcTSw9p8Dx+lN0Qz3Xpz5xTWBUacGIjTTonRLc3MaGMN4gbivJzSAAjrmSnUdGW0RAaSiEbY9iH2Xu62UsJKxcsZUPIBtHWE7p+CbGvPdtfE+JsOY39XZsu1WZPslh8Qv0nUfAiivwyH3Q5t/DeUJiXBCb1/9j3jYaMiAWvroKV4+IZSujuOhmlYGN8n3EFmfywu8b5emC87JD+VBvehysi7+Mlim3PwqXD43d1oZCYLqOeutXvNwElM0qwoMr42T8VrkeiYRUTJvYGIgskQq6uAE/26LmHJeI642vOs0PEJVQ/ZDBmTF2MfX6laVO/V/+wjD5mBwWwOI5eBp5UmtWLSU3NQjBRbnL6FOIQ0jZNpcB8pvKS1ySfQZ+QKcPwup52U3tPafoaFtTyPORTLUXf2tFvS/yxmNTTqbF8GuwPfGjihd+Lls1ivJaMjnY5yqCwD49Lf115RbwuFzu0k5SS69IvKs0SiXaNNkYLr+1t/CctG7cyhzyBn0nDYt2ADCBcD6ZkZNfx6FYnVGhGBjb/zJnN5yQCKBgytVTeEv/L052kuglKfXhtxUnduR1n464M4E8lx9Wkh90V6DOM+t4k0abwH+FC13T8xnWcuELixc8YMDfVHj2PBrw+qqakYQUjbTsFnqGYU4C1lViT8+jvV+lXy1KHvSDoHBWH9uQdKXwiWAoNPqhYTAJv/ZriKWGDDk8UXf5To2BXjDW N7cZkPko kE1Gm5+OJn/E0Ol4btDFxkaeQvjgYtsTiZ0MSU+aqpEILahS9c7P0JltvEUUdzFfbU/KB3T1c4DhlaQlmNLN2hEnUMrgLJRcG5L0UTUvnknu4tuxSzkWv6rGnVsCH6I+df6a9kXYOfGe3PW7x6zwK7kAb70fOGDsaCaeb7QJpZh3k3AFUb1NLqdWkqsosXD6aoHICFwBTnRPDxu/yweQh6bAYhuZrTMtmYohqJ4zHP0cIjNH1XUHU2z6/WftRjdil3hJ5RR4HNIaitrBpJnLoAzl/8GV7eiNSxFae/fBAILSX1sYl8/TGcR8TvZWOJL7zbAWcQ3VazWyHLO5TS6DzeC350KBkpCtBL25DTNrJQAUfTUi0hnYpxLxFhPQxC8X1gRuhnh4pBE5AcidLF4PS35JNhGAL36m5B2dpMeK1VMxnVXWFVQMr4eUcZYOYr5Me44S537kw/T2KsApywlk77KF0UDcd+OVic/FiFl+05ot7CkbVPwtWaIUFQ/iIbYWG7JKpP3qqX009rc6T0tIO0iw5bOv5T0hIT0CBn0qovy1gLna1Yi/7mqDUfVy8yrr9p3OBy/xVrrcvNBw= 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 7/8/25 23:37, David Hildenbrand wrote: > On 06.03.25 05:42, Balbir Singh wrote: >> Add routines to support allocation of large order zone device folios >> and helper functions for zone device folios, to check if a folio is >> device private and helpers for setting zone device data. >> >> When large folios are used, the existing page_free() callback in >> pgmap is called when the folio is freed, this is true for both >> PAGE_SIZE and higher order pages. >> >> Signed-off-by: Balbir Singh >> --- >>   include/linux/memremap.h | 22 +++++++++++++++++- >>   mm/memremap.c            | 50 +++++++++++++++++++++++++++++----------- >>   2 files changed, 58 insertions(+), 14 deletions(-) >> >> diff --git a/include/linux/memremap.h b/include/linux/memremap.h >> index 4aa151914eab..11d586dd8ef1 100644 >> --- a/include/linux/memremap.h >> +++ b/include/linux/memremap.h >> @@ -169,6 +169,18 @@ static inline bool folio_is_device_private(const struct folio *folio) >>       return is_device_private_page(&folio->page); >>   } >>   +static inline void *folio_zone_device_data(const struct folio *folio) >> +{ >> +    VM_BUG_ON_FOLIO(!folio_is_device_private(folio), folio); >> +    return folio->page.zone_device_data; >> +} > > Not used. > >> + >> +static inline void folio_set_zone_device_data(struct folio *folio, void *data) >> +{ >> +    VM_BUG_ON_FOLIO(!folio_is_device_private(folio), folio); >> +    folio->page.zone_device_data = data; >> +} >> + > > Not used. > > Move both into the patch where they are actually used. > Ack >>   static inline bool is_pci_p2pdma_page(const struct page *page) >>   { >>       return IS_ENABLED(CONFIG_PCI_P2PDMA) && >> @@ -199,7 +211,7 @@ static inline bool folio_is_fsdax(const struct folio *folio) >>   } >>     #ifdef CONFIG_ZONE_DEVICE >> -void zone_device_page_init(struct page *page); >> +void init_zone_device_folio(struct folio *folio, 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); >> @@ -209,6 +221,14 @@ struct dev_pagemap *get_dev_pagemap(unsigned long pfn, >>   bool pgmap_pfn_valid(struct dev_pagemap *pgmap, unsigned long pfn); >>     unsigned long memremap_compat_align(void); >> + >> +static inline void zone_device_page_init(struct page *page) >> +{ >> +    struct folio *folio = page_folio(page); >> + >> +    init_zone_device_folio(folio, 0); >> +} >> + >>   #else >>   static inline void *devm_memremap_pages(struct device *dev, >>           struct dev_pagemap *pgmap) >> diff --git a/mm/memremap.c b/mm/memremap.c >> index 2aebc1b192da..7d98d0a4c0cd 100644 >> --- a/mm/memremap.c >> +++ b/mm/memremap.c >> @@ -459,20 +459,21 @@ EXPORT_SYMBOL_GPL(get_dev_pagemap); >>   void free_zone_device_folio(struct folio *folio) >>   { >>       struct dev_pagemap *pgmap = folio->pgmap; >> +    unsigned int nr = folio_nr_pages(folio); >> +    int i; >> +    bool anon = folio_test_anon(folio); > > You can easily get rid of this (see below). > >> +    struct page *page = folio_page(folio, 0); > > Please inline folio_page(folio, 0) below instead. Sure, is that preferred to taking a struct page ref? > >>         if (WARN_ON_ONCE(!pgmap)) >>           return; >>         mem_cgroup_uncharge(folio); >>   -    /* >> -     * Note: we don't expect anonymous compound pages yet. Once supported >> -     * and we could PTE-map them similar to THP, we'd have to clear >> -     * PG_anon_exclusive on all tail pages. >> -     */ >> -    if (folio_test_anon(folio)) { >> -        VM_BUG_ON_FOLIO(folio_test_large(folio), folio); >> -        __ClearPageAnonExclusive(folio_page(folio, 0)); >> +    WARN_ON_ONCE(folio_test_large(folio) && !anon); >> + >> +    for (i = 0; i < nr; i++) { >> +        if (anon) >> +            __ClearPageAnonExclusive(folio_page(folio, i)); >>       } > > if (folio_test_anon(folio)) { >     for (i = 0; i < nr; i++) >         __ClearPageAnonExclusive(folio_page(folio, i)); > } else { >     VM_WARN_ON_ONCE(folio_test_large(folio)); > } > Ack >>         /* >> @@ -496,10 +497,19 @@ void free_zone_device_folio(struct folio *folio) >>         switch (pgmap->type) { >>       case MEMORY_DEVICE_PRIVATE: >> +        if (folio_test_large(folio)) { >> +            folio_unqueue_deferred_split(folio); > > Is deferred splitting even a thing for device-private? > > Should we ever queue them for deferred splitting? > Not really, but wanted to do the right thing in the tear down path, I can remove these bits >> + >> +            percpu_ref_put_many(&folio->pgmap->ref, nr - 1); > > Looks like we instead want a helper put_dev_pagemap_refs(pgmap, nr) below instead > >> +        } >> +        pgmap->ops->page_free(page); >> +        put_dev_pagemap(pgmap); >> +        page->mapping = NULL; >> +        break; >>       case MEMORY_DEVICE_COHERENT: >>           if (WARN_ON_ONCE(!pgmap->ops || !pgmap->ops->page_free)) >>               break; >> -        pgmap->ops->page_free(folio_page(folio, 0)); >> +        pgmap->ops->page_free(page); >>           put_dev_pagemap(pgmap); >>           break; >>   @@ -523,14 +533,28 @@ void free_zone_device_folio(struct folio *folio) >>       } >>   } >>   -void zone_device_page_init(struct page *page) >> +void init_zone_device_folio(struct folio *folio, unsigned int order) >>   { >> +    struct page *page = folio_page(folio, 0); >> + >> +    VM_BUG_ON(order > MAX_ORDER_NR_PAGES); > > VM_WARN_ON_ONCE() or anything else that is not *BUG, please. > Ack >> + >> +    WARN_ON_ONCE(order && order != HPAGE_PMD_ORDER); > > Why do we need that limitation? > mTHP is not yet supported in the series. We could keep this routine more generic and not need the checks, but I added them to prevent unsupported order usage >> + >>       /* >>        * Drivers shouldn't be allocating pages after calling >>        * memunmap_pages(). >>        */ >> -    WARN_ON_ONCE(!percpu_ref_tryget_live(&page_pgmap(page)->ref)); >> -    set_page_count(page, 1); >> +    WARN_ON_ONCE(!percpu_ref_tryget_many(&page_pgmap(page)->ref, 1 << order)); >> +    folio_set_count(folio, 1); >>       lock_page(page); >> + >> +    /* >> +     * Only PMD level migration is supported for THP migration >> +     */ > > I don't understand how that comment interacts with the code below. This is basic large folio initialization. > > Drop the comment, or move it above the HPAGE_PMD_ORDER check with a clear reason why that limitation excists. > Ack >> +    if (order > 1) { >> +        prep_compound_page(page, order); >> +        folio_set_large_rmappable(folio); >> +    } >>   } >> -EXPORT_SYMBOL_GPL(zone_device_page_init); >> +EXPORT_SYMBOL_GPL(init_zone_device_folio); > > Thanks for the review Balbir