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 46A12C28B2F for ; Fri, 14 Mar 2025 09:52:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9FA34280002; Fri, 14 Mar 2025 05:52:08 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9AB28280001; Fri, 14 Mar 2025 05:52:08 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7FBE2280002; Fri, 14 Mar 2025 05:52:08 -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 62487280001 for ; Fri, 14 Mar 2025 05:52:08 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 6C3A21C97E7 for ; Fri, 14 Mar 2025 09:52:08 +0000 (UTC) X-FDA: 83219690736.12.77D6185 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.16]) by imf14.hostedemail.com (Postfix) with ESMTP id 3D99B100008 for ; Fri, 14 Mar 2025 09:52:04 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=H7oDLdRl; dmarc=pass (policy=none) header.from=intel.com; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}"); spf=pass (imf14.hostedemail.com: domain of yan.y.zhao@intel.com designates 198.175.65.16 as permitted sender) smtp.mailfrom=yan.y.zhao@intel.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1741945925; a=rsa-sha256; cv=fail; b=19UpJlUlgK0M4wXNkL42u4jInwPBhP72TKf2IpsBiWBLgY0Yyuo9hu5URbnWLuEESZ5Px/ 7F3UFiEWgII0mPvGu6gbzM6uLr0h6Tgk7ZEEns0XAUnJhNRjqXr5V7wVTgXQruVWX3IYq9 X6Ulhmdt4VdhexhhLVdr4cBcJ6MFegU= ARC-Authentication-Results: i=2; imf14.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=H7oDLdRl; dmarc=pass (policy=none) header.from=intel.com; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}"); spf=pass (imf14.hostedemail.com: domain of yan.y.zhao@intel.com designates 198.175.65.16 as permitted sender) smtp.mailfrom=yan.y.zhao@intel.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741945925; h=from:from:sender:reply-to: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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=onT957x0HHOF6wNCsejeJJ0Xt9t55HU0mfpnCnLSt90=; b=zygbITAYU8Ip2efuhVfV24rc3DshP2X0i98Vx0v0xMhqa0/UCCb3cPRyGqyJjwdBK+sKG1 fmSfI8SjaHrtZzlm8Q1A0wOY4mQAPJveDEitGZl/79HVscD8GD4T7meLu7C2dnQ3gg3s46 aQCPUMkbgWw4LPhdJIPUVwyZ0Hzfe5E= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741945924; x=1773481924; h=date:from:to:cc:subject:message-id:reply-to:references: in-reply-to:mime-version; bh=NtTaWgGXEdJMcTNxbDoOfahqcLuH3Cx7vl2elLox3v0=; b=H7oDLdRlAFPYUx8aQwdTQn37HsFdRrX88ByG2+g6970jepai83T3aCyf t454BnY9teg1Gj+D3nm5wy7oEZHuNUzipR7GsNo16hRWjjVSpZUJZsRLe OK/YfZaKysNbeFat5CpqfO5a6b/WAT1bNT2wbUFtCR2ocqedsONPkmeue VySCgyAbXaGBqicQEb8SwfRhCGVVA7uotQKfNp8qsdD5PN6Zx6NuNPZQh fzTRzRXcvMFjG8pqaMJNa/6g+CZSeUxu21fjklXF7/KtKZXwA+Ijau7r1 NmdwcyYn7AVKAOAFa/+ZcBMa5j3NtIlS1SWgiRB1qM6OM/IqT2E/fb/up A==; X-CSE-ConnectionGUID: DJRZY6zXTTyrmrP6AGDc3Q== X-CSE-MsgGUID: hcDAg3hISsOK6WP5cOminQ== X-IronPort-AV: E=McAfee;i="6700,10204,11372"; a="43196076" X-IronPort-AV: E=Sophos;i="6.14,246,1736841600"; d="scan'208";a="43196076" Received: from orviesa009.jf.intel.com ([10.64.159.149]) by orvoesa108.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Mar 2025 02:52:02 -0700 X-CSE-ConnectionGUID: Lyunp3ZPRTOYLUjuRkEbdA== X-CSE-MsgGUID: qDyEwWU0SDeQbKGspd+IKw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,246,1736841600"; d="scan'208";a="120941813" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orviesa009.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 14 Mar 2025 02:52:02 -0700 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.44; Fri, 14 Mar 2025 02:52:01 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14 via Frontend Transport; Fri, 14 Mar 2025 02:52:01 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.176) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.44; Fri, 14 Mar 2025 02:52:01 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=I9/4VxtFIF5NiZvCxL19edJ805yfV/nC61P1Z6uEw+eCKDOF3vivCw6eQorKLStzICDGeewSBRUssursMxClFi7Kz2R4YbSoPgLZ3N8CfxeV3kB3l+ozszhlAGN4fjYqrCSQgA73CXNEuCdM8XSafOBRMrK7G1tiXPMWIsCEa/AhiGxhdfsimNmuBjPTSolc5rQbPcXWipDMLf96tF/feZn3kuOAsw2AoiUJrypBGTxUxdmNK+hoJbNWXjW9SZo+7mGcu/yNEoF//CR5Q+QaCo64vfDaBah5h5bGVjrPZzMceNJFYlmwh/aUUgSOmdPLP1wKJdetM4XXPdgk0BETJA== 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=onT957x0HHOF6wNCsejeJJ0Xt9t55HU0mfpnCnLSt90=; b=iyGBniNtyw7sBpOfVKX3kmB25m3OnUrMP5sKauW3hI/b7Nt43ZbAMer1Aruh8tB049y2qR4qfqKWvdWx0Ozr+hTkKzOh0kcAdInRUduDMoZ0nXOqdcrzQtfyaGBZCAQwgYddsSZLU4PMgVC6jFr7fPmmygXkUBrmxPVJDpklDvGMF0iXKIl/s7pkKC2PX/kTUEUaIml+fSnKJbKkZXxjRxOoUeSQ/MiB6wN8wvDiO5mkxu68Dh4ZbE5jseyyb5ojf5Kqc7fmCZQs3ETeid6+nfpHDvWf+DMoKiyR8UsLA/EPXQoTDGmsf1XsJ05iFFZSnqb0IB9lnRAiOzc3dbczFg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from DS7PR11MB5966.namprd11.prod.outlook.com (2603:10b6:8:71::6) by PH0PR11MB5831.namprd11.prod.outlook.com (2603:10b6:510:14b::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.28; Fri, 14 Mar 2025 09:51:58 +0000 Received: from DS7PR11MB5966.namprd11.prod.outlook.com ([fe80::e971:d8f4:66c4:12ca]) by DS7PR11MB5966.namprd11.prod.outlook.com ([fe80::e971:d8f4:66c4:12ca%4]) with mapi id 15.20.8511.026; Fri, 14 Mar 2025 09:51:58 +0000 Date: Fri, 14 Mar 2025 17:50:26 +0800 From: Yan Zhao To: Michael Roth CC: , , , , , , , , , , , , , , , , Subject: Re: [PATCH 5/5] KVM: Add hugepage support for dedicated guest memory Message-ID: Reply-To: Yan Zhao References: <20241212063635.712877-1-michael.roth@amd.com> <20241212063635.712877-6-michael.roth@amd.com> Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <20241212063635.712877-6-michael.roth@amd.com> X-ClientProxiedBy: KL1PR01CA0158.apcprd01.prod.exchangelabs.com (2603:1096:820:149::14) To MN0PR11MB5964.namprd11.prod.outlook.com (2603:10b6:208:373::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR11MB5966:EE_|PH0PR11MB5831:EE_ X-MS-Office365-Filtering-Correlation-Id: b5078ec9-60b4-4306-5c97-08dd62dddc1b X-LD-Processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?JlCxJMzACrsAwt90RPliZKsa1fwak1cdmwvwLi8fmx8bAvfVfJ9bcLyqENJL?= =?us-ascii?Q?cucb49+9gYrzruVlNTw1IoASkBqAuDM63LpYB2cnAX/l4jGYZnZq+NpTc63D?= =?us-ascii?Q?bSGTPGdfp2ePKYPP78fgg9P7chzTuiy4A2VSywU0g2NkeHLgAG6oUgxt/ejv?= =?us-ascii?Q?u+qNYRtQQV0d0hlMw+6OCxB9YnRPjxic5eFAygCZ5b8uawOXCUI3fPcj0hIu?= =?us-ascii?Q?ZPsCsbo+IO02PhA/ybnwm3jU2Aiw6ODbb1V91lpGqU42Ra4aZukgeVuZAp7L?= =?us-ascii?Q?2dnmD2XMgsVPfcfYJzgpEhRBrewA4J+2XZbgLSF8GarwbMKJaEfoAiS2vZdW?= =?us-ascii?Q?ssLBBmlQRcOQPFHUH3irNI9jv0T0xv2NJ9Q4TIsp8lCXDgKd6u9OLpambZMz?= =?us-ascii?Q?D1DOMYLDRUun36AG+BIWW+rUl9nVVhpqdkGD9V3JdL3tqLJkFwKQoAyBXkp4?= =?us-ascii?Q?LPBmcyNgukmJKO9OcbO1+SX+cH2jE5AI/HbIF1Jiam2vmYN8+7oXxB58wllJ?= =?us-ascii?Q?1EzCbep3uhs25yEIOOt9b4PqpKZ0DKzbUhtlN9TbmT1bT+xMciKE2wjx0fSt?= =?us-ascii?Q?X16TJfeYL4EEuJqzQ2EBLAfFBls1xkxp5efu3Bg+R2mEHDjgWCaB2AEGDyzF?= =?us-ascii?Q?u//7Y9hwEYAqx2/GTuo2hXjqgZyKfsDtzWp7zyKiajHQQKxQXeWAi5Myrpol?= =?us-ascii?Q?LTmVT1757tTH7dLdXrF9+NOX0oiJxmM7T3zC1EFzgfaFcwCjwPsG0OSIYxAg?= =?us-ascii?Q?/JFkWkRm0j8Yohi7S1Pr8ukfKf3aKf6uVrZhvE/GJq8eQq++WA2Yeq7cJVOZ?= =?us-ascii?Q?oruItnKLyrcsKB0vlrQQ+rzCjswn102lTAPRuvsV6bfMUZdms3CPyXJqBqTc?= =?us-ascii?Q?1/UFsmPuJj0piezywmP/Ye7BMCGtkiKp3LDVMQeJTWBVN/sg7tMtAQc390Ks?= =?us-ascii?Q?6edOuS+nH69Au9K70FMRrR0w2y7/avTC0DSyX5BSBFzNSxxx2XQz9+zrPtpH?= =?us-ascii?Q?wRTOjZwbNnuj3JOTkaenmTmT8wFHp3RJokpPZNNCNlAVx+A+10A3SgkVUUvH?= =?us-ascii?Q?7q7ggtnEnVUkSFYri4zOQokr+2W8pGE3hOMAA6TTvnqjcYQoleXRMqKtE/Sp?= =?us-ascii?Q?t577/JGFIByYGPg70679oST8b3YnpM5TELJhkgAOqWeBcfypGttGzvzBJw7g?= =?us-ascii?Q?iKvH06Ms+Yafbnh98Hm+3atMVnyXQ0oK5eM3g43hWOyWtwSPqF6+ZJPRNB02?= =?us-ascii?Q?D5JHbcBkfqsggBJKBh2qDJtamk8nwDx48NOfoHUuQL+L0IAScXpZ/0ohSNod?= =?us-ascii?Q?EcHvx12E9EJDbU64Pqdi42ewnTkjB3COjV1SWUzZTfIeRMpvC0w9aOz4R51u?= =?us-ascii?Q?WpXDPc8Mj9ODmMRp6bVbjNRvxdN2?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR11MB5966.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?KpaUFv0LOPDxqGoMf3Y85QCZg9jUfrpTeh7j8Vl7eyVD89jDjn2FJJp9D3Dd?= =?us-ascii?Q?AYOlfFHl0hlr+9n9vDd63yOY4iKEb9X0DYht/CozcCVjcr/XK7jpR6nTDCxI?= =?us-ascii?Q?AvTViV7VucQhtGig/XgvfK4OriwVD+k0w0vXeGyxCFV4bU2+HVqroviwmwC0?= =?us-ascii?Q?4RI8ZIeJREFZPrJykSMRWbJKZ2Y/xsZJEG7l4KUFtNmcRBkJYtbWMjzhusrL?= =?us-ascii?Q?k0vj2cN4mPbHKr/lWPGuDgDeoERsxadCQzK4NZx7vMoFcrR7BI7I9Rs2il8j?= =?us-ascii?Q?V9zQhH5GCc+KMvStsZVHCDwnuZ9yF1eSLssCZGO9AKAj8Jyc+grmPi8XAuku?= =?us-ascii?Q?ST519QlSoVbR/HZeI1RNhQl6roAdtCyho4JtuPbHgdKYZzXelNqHOGKGcZQ7?= =?us-ascii?Q?TauUpyBQokR1+YtQ19ZMnYrTm4dmBfn4CweF0N3zlOucxSJoJe/VgXSPhB3J?= =?us-ascii?Q?Aa+ZiMeGs00CBugBXDsrhbgKB2MNNgcyhZoswt26Tmn/JLPDfdCV5bzrCJcV?= =?us-ascii?Q?83OUoGvzB0jzJU4h3W6IwNhjn1LL5AMq14n5KcoHTFdVxfxCVlU6hEd+sg3p?= =?us-ascii?Q?VzqwRyMPDC9YCNh54woaZAzQ6M4xVvwhBIsWT2cWe3AVDL3s4TlhmHOc0n9f?= =?us-ascii?Q?6KHIukYeiSLQkLBVCgk3bTcG8dREEnQr3ts53TF2TtJdotm+s2jGAy82kLpK?= =?us-ascii?Q?D30pCPU3MJfVYfniCFLEIPfgWpI+bItAOclxJZ/Zxk2CSka7iLJEJt+SjJIW?= =?us-ascii?Q?O20xixX5kkn5Q4zDEBAjc4fj3zNc1pL8Bh/scsnEirKeg6ACsCeESen3MXfo?= =?us-ascii?Q?meZv7plu4uYnSFoPwNykU6CKJ+tb2uE6GNOBP3eKZRYmiif1IYkzPs8JXcBq?= =?us-ascii?Q?dIpmfkAvy4Ue1Kk/ArmEkWmsrlYPcuLMNIZsFiKEwRVSsH8RzU3kKPoAxFv9?= =?us-ascii?Q?WyCRegl8O7FRXlY3JJaLmHD31rauV8SwCoL/VFtGkF6GT0PAtqCSqUqxzQYb?= =?us-ascii?Q?ff6nE6KejuF4hXUzcxRu9vcyxnZb6D0+3JtCWc4mkNV9dWIrVVRXSrCXl73Q?= =?us-ascii?Q?ovZZgK6yNppYGpkQazwKFVjFG0vBA7NhfSHUto6oM9jJuOijZiMO33o7GHc4?= =?us-ascii?Q?teFC1Xo7lrvcNGGq5+pqXvV+C9/nJWt2Kyn+UJsC/+AI70yWHCl3qVmQKFNh?= =?us-ascii?Q?4S2Uw3/VdVt34M9ufI1U7g8cDO3XbJT/TgNeOBjTa8FNYdtVzzYeI9tUctiD?= =?us-ascii?Q?mguMhZgXQlSCT1LNTpxBq0HAGFgUW1WzbZS9JKDPfrS1Brj/DZBchwj/+ORx?= =?us-ascii?Q?DQUUZSFLVeqDeCGDo/g/wqyS+qSuFZfskYJ3i96LA/goZHB8JCN24hBM+T1q?= =?us-ascii?Q?i2yObv8w0txDZKOfE4kup70T7NNqBoSIz+EYgSoYgSekH7wkztDEk9ScTWW/?= =?us-ascii?Q?4/86ymSnC3X8BH4J1JZGoZNWkHMLQrESCOOvgPhjdEM2piaoWWU4R2CbkqO8?= =?us-ascii?Q?ig4c1ozxZo2Kx39rv70Iw4N1H5ts71jxxQ0nnpeRf3BiCTU58PdF0pjRQKmL?= =?us-ascii?Q?S0gABysncakl3XTVuz71DDzpLGPYrmuysvF5Mymv?= X-MS-Exchange-CrossTenant-Network-Message-Id: b5078ec9-60b4-4306-5c97-08dd62dddc1b X-MS-Exchange-CrossTenant-AuthSource: MN0PR11MB5964.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Mar 2025 09:51:58.2813 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: g6hSVg7Hm9Fpz1V4wxkKrr6MulJjJ/0Ow9Fer5XxcD/t2jBActaNPP1qvUBRKQ59XM3OnsvKUtCLs557idVv7g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5831 X-OriginatorOrg: intel.com X-Stat-Signature: ca36k9knjf9utcscp7i7756ni1tkw9xj X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 3D99B100008 X-Rspam-User: X-HE-Tag: 1741945924-614160 X-HE-Meta: U2FsdGVkX19qQ/RYqumLOw7ppvhFQrJmU4icGpkWbdCBLuCbFM7p3wQlLod/9tfZOJRx8W1/9L2lG46S9iBh4lM/fvalXBT9dc4dkRZkNsdcr2MYPQCTW8G0y1dcY/eCSrz5dTaHcsbhmOCfUl9BS0juaPNSdGYXF1PxNnEmKSu+ioyzWJ6zDFcXqrk8doGwPd88u0lX4mi/+MnyWpZ0f/sWqC2Ag4GCklXqI/LwC6ODGKuU1bnfehuJLh/WCSCV5E45XY3e8tVj6cLupgx5ULsPpXgEPSFnBkzNCRnKprtffQXoJMybjMLFQpb7MLbHlpi7OVomGKl9wOGU2o9h7CKwbtO9nFpiClfY8UWaQL+DZPdCQ7nblydU7nwLDsMtsR1iKM8Ws4MA/EjSRhuEusmhERS7v0PfTYOtCbAW7szF4qyoGNsAXukhhUML9kR0nKkjEknqbB7FuuiN77+CUKLMkP6fUin7cKX5wXUfXgrENH4vPFEQFOWANITkkiFbtj7VX/JL/xyy/2zPOzXHE6KDE48VOWrevjWC4077IQh0tQnRZwVuhNmcXUhIDwRunP3Dnt7K7kJeanfPZ0bjQAXnJMpWRDSXRCPtCbQEml+TE2ATkubI1PelmSsSPMRTREAJM3TS/Iji+8YGtcft3g/Hle67fZ9OSzIxXcXxfKChM1QMqr05Mdebgf/HZOvbXdkQX6iZief55wryxkpvE8B5pbd3ONsHWjZF+ARGgn6KBkvO+twfm3MK8yDwXlHf5auR6nsToguoO8GFWxJB3j8WsJn4jdHTY0Y0d/FvWmUM8W6Uy6qFGeOj0xGuXMxBW/QfKGE3uJThamul1IP0jlwnGtVQe+nKdoeyDGUWOADH10+eUbbV6dZCDh+AUwvBxgIy49bq9sQM9x80jN1L6mz0ZyunoCsgmu56b3PZRkhQMm4eR1UEUXPhzEPhrFdeukya4qEk2qRy77zxtQp jTjFBu0y YGgeSpUj8rILpkftWySE1lNvTo66UwOzeU/Pd22XyMaFSkgwG579/KujLF194exGWNJk4+crmsp4IHhYC9qH6dzUJREiXbFjPLOxg0liU0UwVQErj9ZH8oGVqDkYVW1rlXQibf6CNEY7Y1Qoif5dIMJTC7m9Myrrr7bSW1JICWRmypFPcWa7IJs6IT1neCDWoeYcYDDYmT0W3rKtCRMlA+GlgddBG6CmeHaH3JoU0hUJRgVIX7AFQ7f6DutqU8T8vSqWfO81vEbZT5PJG3zxwiNuhoyzHt4aCajzZdYqKxeg1I+Dj+EvqcuKsOM9b1TbyyxLFEylvbZFXa2AOkaxtYCnbPhA81F+xmVHNWXDkvsJJBoz4Y2DXT192WKylns00igVtHEk2fAMqtP0hHzJfw0IJUzjLfVzx7hZPnuk8Ij12QOd8XfYP7Dm4+QJXk0HVYPJQr3e7Vs6Beuo616L/R04teaV4PLjV55pF4+iX5fKuyAQB1LAG+bTtQftrQGsQScU2bzp0D1o9gbSacYWPAipPkyVHyVFex+ilQNsXdGmiDRv9TDkAHRIFyJJBvSrKtcDgm6vvETq/4Bc= 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: > +static struct folio *kvm_gmem_get_huge_folio(struct inode *inode, pgoff_t index, > + unsigned int order) > +{ > + pgoff_t npages = 1UL << order; > + pgoff_t huge_index = round_down(index, npages); > + struct address_space *mapping = inode->i_mapping; > + gfp_t gfp = mapping_gfp_mask(mapping) | __GFP_NOWARN; > + loff_t size = i_size_read(inode); > + struct folio *folio; > + > + /* Make sure hugepages would be fully-contained by inode */ > + if ((huge_index + npages) * PAGE_SIZE > size) > + return NULL; > + > + if (filemap_range_has_page(mapping, (loff_t)huge_index << PAGE_SHIFT, > + (loff_t)(huge_index + npages - 1) << PAGE_SHIFT)) > + return NULL; > + > + folio = filemap_alloc_folio(gfp, order); > + if (!folio) > + return NULL; Instead of returning NULL here, what about invoking __filemap_get_folio() directly as below? > + if (filemap_add_folio(mapping, folio, huge_index, gfp)) { > + folio_put(folio); > + return NULL; > + } > + > + return folio; > +} > + > /* > * Returns a locked folio on success. The caller is responsible for > * setting the up-to-date flag before the memory is mapped into the guest. > @@ -284,8 +314,15 @@ static int kvm_gmem_prepare_folio(struct kvm *kvm, struct file *file, > */ > static struct folio *kvm_gmem_get_folio(struct inode *inode, pgoff_t index) > { > - /* TODO: Support huge pages. */ > - return filemap_grab_folio(inode->i_mapping, index); > + struct folio *folio = NULL; > + > + if (gmem_2m_enabled) > + folio = kvm_gmem_get_huge_folio(inode, index, PMD_ORDER); > + > + if (!folio) Also need to check IS_ERR(folio). > + folio = filemap_grab_folio(inode->i_mapping, index); > + > + return folio; > } Could we introduce a common helper to calculate max_order by checking for gfn/index alignment and ensuring memory attributes in range are uniform? Then we can pass in the max_order to kvm_gmem_get_folio() and only allocate huge folio when it's necessary. static struct folio *kvm_gmem_get_folio(struct inode *inode, pgoff_t index, int max_order) { struct folio *folio = NULL; if (max_order >= PMD_ORDER) { fgf_t fgp_flags = FGP_LOCK | FGP_ACCESSED | FGP_CREAT; fgp_flags |= fgf_set_order(1U << (PAGE_SHIFT + PMD_ORDER)); folio = __filemap_get_folio(inode->i_mapping, index, fgp_flags, mapping_gfp_mask(inode->i_mapping)); } if (!folio || IS_ERR(folio)) folio = filemap_grab_folio(inode->i_mapping, index); return folio; }