From nobody Fri Sep 25 07:55:56 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.15]) (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 57F4F472F97; Tue, 15 Sep 2026 09:27:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.15 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789464449; cv=fail; b=VY1UC8p//Vgw5KWzq/j5x5qqQniuQHKga3goL8vRrnNFCYSKueoGefoRMcpBb+on4PwRVwzchtt3PDXNpZFe0e6iL8ZYl/ZJGO3jCFUAebbQW8uTZWo2eC2iCwP8ECqFtff8UyZ0Fk4bCA5BSJaMstNcp4i9qMo9g8A0HKobZN4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789464449; c=relaxed/simple; bh=hweB310VjrQUYCsSCUtORavJjYPdbKDbgmWPwup8I9M=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=RaZihWBT7uIE/5NRkfsnsRWQYZUtRKFX5uYKt1D6eTnyVtw1w4vboYPCjqHd+2UpWrfz1nsU0VzoCYz7xHuzK9r0LFYm4IRDXBWHKQnZnxDUcyhg7anmbcyPAN5PRA7remedAi0wRHBUlOvujKQzVhzAEfXve4we57YjXm2ePy8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=CdnX5oCF; arc=fail smtp.client-ip=192.198.163.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="CdnX5oCF" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1789464446; x=1821000446; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=hweB310VjrQUYCsSCUtORavJjYPdbKDbgmWPwup8I9M=; b=CdnX5oCFkRJSPUwsdQx5nry6TwuYzky9xwm82YYKVHUz4nCNW6TdMILe IVKjEef7N0jEc3Uk9npy0NC+Spr+cBhuIayuaKt1Alkbm5ZCJvLuoFcCg bOzERMxSesR0TKM/CqDQ/OJLomaVRyYL02bQRRannS+q0wn0gi6yvLLd0 CccvpwfJ0yh8kW/7WpbQJN3JHaVYyq67SusHANAQwRiX7GJuHbT78O7AI scq7qBnq21C6OnprhxDF1uG2O/4VI8sL8Ee2Eu4POpjVGv7ndezL43G0s PgFUE+e7uaOx51ChN8xAzUjLTfrWzFaV95BX09IjOzOrv4tHXrxmmhFyA w==; X-CSE-ConnectionGUID: RrYZxIODSZWwdpos0i+Jtg== X-CSE-MsgGUID: Fwf+SL47SQiNHDN/VxPZCw== X-IronPort-AV: E=McAfee;i="6800,10657,11905"; a="89954827" X-IronPort-AV: E=Sophos;i="6.27,103,1787036400"; d="scan'208";a="89954827" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Sep 2026 02:27:25 -0700 X-CSE-ConnectionGUID: jBVhvIRsR/mHZ0cbqJMlAw== X-CSE-MsgGUID: s7TiIY+ESCqjHYWnYe3P4w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.27,103,1787036400"; d="scan'208";a="302808712" Received: from orsmsx902.amr.corp.intel.com ([10.22.229.24]) by orviesa002.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Sep 2026 02:27:25 -0700 Received: from ORSMSX903.amr.corp.intel.com (10.22.229.25) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Tue, 15 Sep 2026 02:27:24 -0700 Received: from ORSEDG901.ED.cps.intel.com (10.7.248.11) by ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46 via Frontend Transport; Tue, 15 Sep 2026 02:27:24 -0700 Received: from CY7PR03CU001.outbound.protection.outlook.com (40.93.198.15) by edgegateway.intel.com (134.134.137.111) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Tue, 15 Sep 2026 02:27:24 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MmkPXI80omBAoH7XJFa32mEVCTYx30ubtUa+VFQMTM8KmRDhk1KS2/44gy1V4r9CVeqiYFzwrpZZEaAg2KZGgDpH+oAWUjqWtJ99yijaQkDuf+16ZH2mT9AVCJMQ1X+coZh8RVMnC77c8FjSyw3cYXln9qd8rne/P/z60tt+sEoypMn6ENa5fACkfmevhZRxOaVZGog242pUS1/Vsyi8lLs8//8geRaT1PW20NmIaNKnHzxyVyKy0wwt8Ccw2wEGqx06U/8XH8t2it08PB3QUEswr+A9RP/lQmcHRhR3CYWlXk3gMZy8K4yC2Y4HmJzxHR9wypMCgHIbSbR4r+ffSg== 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=J9D9RhWecuzcnz6CYbxuCpQI6o3KEhe4zoCxBaE2Tnk=; b=NMIzTTRjhMQgTtTQBnzEl+sJNejhsXm7VCmnm7V+xlfdKmyvvnltsYOOpg7gjo4LNGFVEKeOlPjINy89sgfCZBv8Tl+VPiUl+hxU6d/WN9sClNRyRbTVKSG1Tm0SVgm+lbEXimKTtU9b35crtgLNq+TFzGyW188lTEczbh3+x1kHqamauE2G0n7v2KU0hjDwIJ0Z+oEdb/uE33rEVor1wudZdkhEuw8U4ypxt3G/UGEsxF/vfQmUPy+7Lh0GQjPdzJ+RbBIkyWyLrek4lTvL0xueuKPH+JlwJKmLIC3+2zWrrkNxncSGSu5BKVI2GtEhNbb2QhfaKQwCo1I8+oNgIA== 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 Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from CH3PR11MB435924.namprd11.prod.outlook.com (2603:10b6:610:34a::8) by PH0PR11MB4808.namprd11.prod.outlook.com (2603:10b6:510:39::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.9; Tue, 15 Sep 2026 09:27:22 +0000 Received: from CH3PR11MB435924.namprd11.prod.outlook.com ([fe80::1696:c90e:60af:a0cd]) by CH3PR11MB435924.namprd11.prod.outlook.com ([fe80::1696:c90e:60af:a0cd%6]) with mapi id 15.21.0428.008; Tue, 15 Sep 2026 09:27:22 +0000 From: Peter Fang To: Dave Hansen , Kiryl Shutsemau , Rick Edgecombe , "Kuppuswamy Sathyanarayanan" CC: Thomas Gleixner , Ingo Molnar , Borislav Petkov , , "H. Peter Anvin" , , , , Xiaoyao Li , Binbin Wu , Tony Lindgren , Sean Christopherson , Artem Bityutskiy , Peter Fang Subject: [PATCH v4 1/4] x86/tdx: Add helper to query maximum TD Quote size Date: Tue, 15 Sep 2026 02:26:00 -0700 Message-ID: <20260915092632.2822169-2-peter.fang@intel.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260915092632.2822169-1-peter.fang@intel.com> References: <20260915092632.2822169-1-peter.fang@intel.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ0PR03CA0227.namprd03.prod.outlook.com (2603:10b6:a03:39f::22) To CH3PR11MB435924.namprd11.prod.outlook.com (2603:10b6:610:34a::8) 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: CH3PR11MB435924:EE_|PH0PR11MB4808:EE_ X-MS-Office365-Filtering-Correlation-Id: e6172067-1d5d-45bd-1e31-08df130b8bcb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|7416014|376014|1800799024|11063799006|56012099006|10067099003|22082099003|18002099003|6133799003; X-Microsoft-Antispam-Message-Info: SEvjMnm/KOHmvmQsmnpYZzvRe5Fj8vUIvG2P1wCsi0bzJmuYDGJL6YXvaquFjVxXwDiQjg5kVaDGwi7craNt/eZRZuVgTV9uh7/bAb0904czpYm5TyfUPNwEFncdU3Slcmf+Djfgr8t3zGUjqVlcDlHsZr17najfuvy7LCIYVjoZaDwGRLw4i8EXOg+0GIRTl3sLSUENoDw0g7TP17uV6YOxYtduNleb1W0ph9cpfF5GlwAYep6+on/nVmY7qeTVCDBT909sXexfTlqw3DtM9AUoYjSwSD5irI/1zgym1mAti+cKkVFF8Is9rHe87Xsd+9CsLllzM+HrX90vOSRgkNtD/jRUQ7kuOXNHq5X/FbhJwiIowp59iwgQU43XVuUgcpm/6XuQMEXptxKunlp0zOW5HC2eCexAeBTCt96B/UNjVJZsiM7i1bNNYH30d2l9HyzmE8KsOY0zw+MWn9t44RT6Aszg19nmCxxdO3Xh2yIhi59SCEB6X3y0CrjRps6Slf/R8wHJEmQTj8jcX89H8PQrXZXQoovPgqOP8e4JBRK/kBYtBAJMvlMYuMvthcKsGF/ogYeizbgJY/i7Lt1DXTfIGbJY6UIdDCyTZVCgFm443ZjqmxmkQLfuEZN1XWh7ckbc0jdphYZ9MMU5uO0cXthluFd+rjB3MYDDtA7NGOA= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR11MB435924.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(7416014)(376014)(1800799024)(11063799006)(56012099006)(10067099003)(22082099003)(18002099003)(6133799003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?RjfDuVI41kWUeHYklv2uZ4v40F2b2aGWbrejl+fmaoEuvZswmJt8/CP8U9qN?= =?us-ascii?Q?51ViJMSbrH5eZqsPzcwly+ru9XVRriFivNaS2W2ScWyUCPfdQ94+PNi6c/Wh?= =?us-ascii?Q?BPgW+UpQkKdOpX/NL9en2d8KexXjIiweP/cDvHnydhRnbvgstgBNfBAUXLiF?= =?us-ascii?Q?eCJeg3pQvOGXQPOr2vCCuB/fsj/yzuay1LvWYhrL1h2trM7V4YsyXHnd9aUc?= =?us-ascii?Q?hoz1F9EX9t5fWQnN/0cy0RPKkbEV1uX3ddNoqNsEdfLY9YdhIyjugNytKYxg?= =?us-ascii?Q?RxnVFT0ib15/fWU56fyaoSKhPv/14OE/MvAML15zLQvkKTA8YGiAiwEoEv+z?= =?us-ascii?Q?cclRlkp/j9qqSts/dlbRPD1N1L6N2Csik2g36Z6WJ5iXARB++3Y8Sy9y6Va0?= =?us-ascii?Q?zq3S/3YrAqwAesSuFzqcVueO8b8bRT+YOr6ePXIxRR0z0uGDjoPjOhLrav25?= =?us-ascii?Q?+vqJnD3paSjyy9xIZLQ4m2DuOtcv3gMhKYk535/rFHMV86xNT481fQ5fjfGL?= =?us-ascii?Q?hmbBZ+8sJeXOmBuX4fzGixvuSG8Eyf9jXWByEtNvYpsG6/dpYTIS8kW/lhDH?= =?us-ascii?Q?pX7m3GJA4UZfZEWkB1srLrymppqk72FgNXvEpE8V0JkyTxLW0eBo3Y2JVt/J?= =?us-ascii?Q?qLX3Bmqoi/nep4/cUFOZmOkzQy/Hi2DhcCznmCAZaFGuoEqivpsIAFZlF03S?= =?us-ascii?Q?8Ka7PolrjNN4AEHrgpxmpSCqlQzzsw8bszSC/Sj2c3k+WONikULtkkCqej16?= =?us-ascii?Q?/9Nzpg34uTzKPF6WN0OS7cphidH9wgh7JPolcQMuKlwwex5HEPD5/uzT46G4?= =?us-ascii?Q?kcgEAZJLOGq1gh8tbpjQ2mVOit0BJoLhWikV8imFV42mbb3bXc7cVCpxdF2T?= =?us-ascii?Q?a2VK+IuFQoHklnSONEoiQYyly60C/kINS0Szy8LUcFYbfgqHHVsOI7/CgWX/?= =?us-ascii?Q?SK+XgBrSySj9MqV4S3PLWAByZeqyWzl5fvMS3racZOcura4EUrDIjXc0GomM?= =?us-ascii?Q?2FLDuUPvdeOUhYzJL5/K+X+XjcnCtmIY6dpFfnMH5r39y82p7LVG/myAT2fm?= =?us-ascii?Q?SHTeBJRrTMst9U7wzVidFU14+SafetfxPNDt5E15L4DHHWxmA773JEg9Dtlb?= =?us-ascii?Q?Ke5Z7x2T4rzoAygibRHdz43CxV7ieYEvAX7KwZuBasYkQwILdTFUZBOzQDal?= =?us-ascii?Q?Yi9jwvD5+uRsMUsKn4bl3iyUro40dUEVm+HlFwDKvKeDtloUTbIueCdWc+Jz?= =?us-ascii?Q?mdrPL5DHQscqi2HPcjYits0fA4myTYZuB8+YVWKSy7BfIhtodws1TEVGWZKY?= =?us-ascii?Q?CX4eWusJAAXdvAA93TGEPrcyjGeqUF383iOn3Xo91nFXc+v2mzbukMyGk+mz?= =?us-ascii?Q?Brbc9ocuOZcC+cNqwa08MMULh3tlxMTz827dQtrK3zG7FoLFCey8UIGdg5fS?= =?us-ascii?Q?IoLH0j0gBBq50wlYS4Wxdu3xUgU6I2z9Ak58eERazMzLrXCXh0CZFs4T9/g9?= =?us-ascii?Q?RW4c6pxyoSEepVYr1keZyLku/mDIbzwPr1zi/Kvu8t9n2AFqjqZCn3N8JwLs?= =?us-ascii?Q?KMGMIFYNkMxVTtvXxuF7v/Jplq3A8WkzWiFLuvHy1gvh4GXdORfmIruoBSNI?= =?us-ascii?Q?OvK1ZOQvgZzynS2i5TWX3h1NXXksSK0XZArbkcEy4BjEnEAwCmijOAq/hUmH?= =?us-ascii?Q?6ID9GnRtyPjeR0Cq3K0ufE3z0jVYuvu9GZfFeYOVLM4n6QRJg/tBjGAWYQXc?= =?us-ascii?Q?XGD4I0TbuA=3D=3D?= X-Exchange-RoutingPolicyChecked: ljWKNXtdBH/DbTf2ZSF+SY5MiiPgjighb+QDISlORGlKL/MPjrILRr6umJahT1gJ3oYgf3dVU84YkpNIMB1skxu0jBHYPfd4vOK4gWaAuabn9h/6+s95mjTvjBmk6IbS4qd9eDDtOIMS2akRQ8wHAvarFy33tr5HMuLGGdsok7El65mi2aD60W2nAOiZvGipfzYSngb13iel4YTxqcj8L6oWqTm0VGGaXOS3cpZNnIGRtWj/o1LzrTGRv851x5wJZd2kU62fxKbP2v+YMfK6WI5kc+osKFrxOp81yf0tZM+aUWNDaop4uADZLhAQXZ7PdHwtlHNc++IbemTErvKrdw== X-MS-Exchange-CrossTenant-Network-Message-Id: e6172067-1d5d-45bd-1e31-08df130b8bcb X-MS-Exchange-CrossTenant-AuthSource: CH3PR11MB435924.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Sep 2026 09:27:22.1561 (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: oEGNuA1nuow4nzPNeLzB5UuVuMrJuT8j2q5tgRN55UMajwi5lBXBzQoHqeOFl5GJ85LtQdUEmCSkuOzXbl5Nbg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB4808 X-OriginatorOrg: intel.com Content-Type: text/plain; charset="utf-8" TDX attestation report ("Quote") sizes can grow with newer cryptographic schemes, so guests can no longer rely on a fixed-size buffer for the Quote. Newer TDX modules report the maximum Quote size via the TDCS_QUOTE_MAX_SIZE metadata field [1]. Add a helper to query the size instead of exposing tdg_vm_rd() directly, as it can read arbitrary metadata fields. The reported size covers every Quote type the platform can produce, including SGX-based Quotes. A runtime TDX module update should not change the size. So if a Quote does not fit, it is a TDX module bug. Thanks to Xu Yilun for suggesting this in an off-list discussion. [1] "Intel TDX Module ABI Definitions", August 2026 Signed-off-by: Peter Fang Reviewed-by: Kiryl Shutsemau (Meta) Reviewed-by: Xiaoyao Li Reviewed-by: Kuppuswamy Sathyanarayanan Reviewed-by: Binbin Wu Reviewed-by: Tony Lindgren --- v4: - Update the TDCS_QUOTE_MAX_SIZE encoding to 0x9010000200000007. [1] - Provide documentation for the metadata field. [Rick, Kiryl] - Document that the reported size covers every Quote type. [Xiaoyao] - Document that a module update does not change the reported size. [Tony] - Add Tony's Reviewed-by. v3: - No code changes. Add Binbin's Reviewed-by. v2: - Keep the explicit (u32) cast to document the metadata field width. [Binbin] - Note that Xu Yilun's suggestion was made in an off-list discussion. [Sathya] - Drop the Assisted-by tags, as the code was not written by AI. --- arch/x86/coco/tdx/tdx.c | 24 ++++++++++++++++++++++++ arch/x86/include/asm/shared/tdx.h | 1 + arch/x86/include/asm/tdx.h | 2 ++ 3 files changed, 27 insertions(+) diff --git a/arch/x86/coco/tdx/tdx.c b/arch/x86/coco/tdx/tdx.c index f904a636d449..b98058d7d244 100644 --- a/arch/x86/coco/tdx/tdx.c +++ b/arch/x86/coco/tdx/tdx.c @@ -198,6 +198,30 @@ u64 tdx_hcall_get_quote(u8 *buf, size_t size) } EXPORT_SYMBOL_GPL(tdx_hcall_get_quote); =20 +/** + * tdx_get_max_quote_size() - Get the maximum TD Quote size + * + * Read the maximum size of a TD Quote from a 4-byte TD metadata field. Th= e TDX + * guest driver uses it to size the buffer for Quotes. Older TDX modules d= o not + * support this field and return an error. + * + * The reported size covers every Quote type supported by the platform, + * including SGX-based Quotes. + * + * A runtime TDX module update does not change the reported size. + * + * Return: Maximum Quote size in bytes on success, or 0 on failure. + */ +u32 tdx_get_max_quote_size(void) +{ + u64 val, ret; + + ret =3D tdg_vm_rd(TDCS_QUOTE_MAX_SIZE, &val); + + return ret ? 0 : (u32)val; +} +EXPORT_SYMBOL_GPL(tdx_get_max_quote_size); + static void __noreturn tdx_panic(const char *msg) { struct tdx_module_args args =3D { diff --git a/arch/x86/include/asm/shared/tdx.h b/arch/x86/include/asm/share= d/tdx.h index f20e91d7ac35..6f106d4b1a58 100644 --- a/arch/x86/include/asm/shared/tdx.h +++ b/arch/x86/include/asm/shared/tdx.h @@ -50,6 +50,7 @@ /* TDX TD-Scope Metadata. To be used by TDG.VM.WR and TDG.VM.RD */ #define TDCS_CONFIG_FLAGS 0x1110000300000016 #define TDCS_TD_CTLS 0x1110000300000017 +#define TDCS_QUOTE_MAX_SIZE 0x9010000200000007 #define TDCS_NOTIFY_ENABLES 0x9100000000000010 #define TDCS_TOPOLOGY_ENUM_CONFIGURED 0x9100000000000019 =20 diff --git a/arch/x86/include/asm/tdx.h b/arch/x86/include/asm/tdx.h index 89e97d5761d8..a75dbbe004bd 100644 --- a/arch/x86/include/asm/tdx.h +++ b/arch/x86/include/asm/tdx.h @@ -83,6 +83,8 @@ int tdx_mcall_extend_rtmr(u8 index, u8 *data); =20 u64 tdx_hcall_get_quote(u8 *buf, size_t size); =20 +u32 tdx_get_max_quote_size(void); + void __init tdx_dump_attributes(u64 td_attr); void __init tdx_dump_td_ctls(u64 td_ctls); =20 --=20 2.53.0 From nobody Fri Sep 25 07:55:56 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.8]) (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 57D86476CF2; Tue, 15 Sep 2026 09:27:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.8 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789464451; cv=fail; b=LCsQm221BOnJHeTS2/vKAZ7tRkWsLEG9XPMHF8wftpoys4SK25bqVlwwXBvfw0C3GUFLPbQAuedqKinqV3zUiedmIOkgpQwJx3ccv+hxq1bAXCMtFzNB4S87Wt1YYZtee1JhSS3dppK5geEjWIbOtD4r/cFikMCWZeeucYftzyM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789464451; c=relaxed/simple; bh=XBOytDDa3toUN4sbMIRuiTQrJJk5jWh8+WxKnE/0xrw=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=mgZXbZRKHtPheLhP+KrAvxvoSGFLDe3yUy2Qy/y58s1m2cXuRRRGUJaNyXYVEHqXoMr/ZD895/Tl8hV6pTC556GNln7GD6m64qgHA4u3KSyT8L6ysN+yAMFWFcLoAFPrpXkjXU41ZvxhhAQeH1qRxbO++KyW8Mcx56GzmW7sOds= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=bn88dGYI; arc=fail smtp.client-ip=192.198.163.8 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="bn88dGYI" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1789464449; x=1821000449; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=XBOytDDa3toUN4sbMIRuiTQrJJk5jWh8+WxKnE/0xrw=; b=bn88dGYIWeg7i5Ai35xtOWXImMRpZ2vKZQwUNXojwQUocgMhLS8AFk3j zFy3Tjb1qRSCRQHYCMyuAKEEHnSzuxDGojXtlVoHHQtNQ2HqOo6gyne4c R5cnYgowL8GfnXr8plnN7r172PFUR06wGQ7fTJ1TEdoE38UvUDBi+ZAOZ U3vvlZcW9jtEg3oywkMfs0ZKqpaDZSYn8KhTQdYlESogpsGbJPJmWEKld 0GLmHs7UZEhIll2GJ6UhTE5zRELf4m4b8Gi8J9qeTJJTNXgVV2L/PB+O8 ehVVHLULGZ9hE22A6V8nBE5PszIYvG3GyTjXto6ou/ldECieR5Y0epaQw g==; X-CSE-ConnectionGUID: OV/qRwlZT1WhFjZVEZVrug== X-CSE-MsgGUID: Ropi8jsFRQGcmW0QwrxDfg== X-IronPort-AV: E=McAfee;i="6800,10657,11905"; a="107333599" X-IronPort-AV: E=Sophos;i="6.27,103,1787036400"; d="scan'208";a="107333599" Received: from orviesa005.jf.intel.com ([10.64.159.145]) by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Sep 2026 02:27:29 -0700 X-CSE-ConnectionGUID: W2PBQfT6RBGpzAaFPLTWVg== X-CSE-MsgGUID: s6QBUcvOT1Oz/0EWi09QpA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.27,103,1787036400"; d="scan'208";a="277063413" Received: from orsmsx901.amr.corp.intel.com ([10.22.229.23]) by orviesa005.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Sep 2026 02:27:29 -0700 Received: from ORSMSX903.amr.corp.intel.com (10.22.229.25) 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.2562.46; Tue, 15 Sep 2026 02:27:28 -0700 Received: from ORSEDG901.ED.cps.intel.com (10.7.248.11) by ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46 via Frontend Transport; Tue, 15 Sep 2026 02:27:28 -0700 Received: from SA9PR02CU001.outbound.protection.outlook.com (40.93.196.33) by edgegateway.intel.com (134.134.137.111) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Tue, 15 Sep 2026 02:27:26 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bxM/0sT5dUY+ckKJdqWCMGQDO/xfyssc9eEdS73rII6NmVsq7O4RPXUESed9I8H/UXRP9yyjYkfIYuzOwbWpI9dFwe2Aaif/NBUYO6ytPis2C2Qwulw1UY4eKsq2/5xMnpnnN+o1eTvsdusN0f3pGmAo8kXoMErKI4//Icvdx4NZPOxL7O4TGpEC8bg2e59i3m3sTmUTiMVSIwTP8EYRb9CVZRnUUPAamvLsjsACQ/IEe0FXEo4rfCA1nZwn6yyRcxtWZxqo9e8WeHWZhmD0+e6UrTL8lp2d7SUw2w8hgRUKCQR6b5spIypXpNFL/ZCKiYRWVzd+dNSmnIzrRQtE7A== 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=1vx8qT9JroyZ3lqCR6JSQHPxFKXhK60VHDImsBdEnTU=; b=tlFANPMBIsApsTOAiWgiDsqGD63KZ8jLykCpc3EhSqbCoAquVEUPRaeTn2Zl7K+olAbsk2AHcqv6SWn+Ya/XWs0VfTCQ/iA8ugHV5x5o9AaFuVpVNMHVDUGCTnbYBUBr0sgSGyoAns1USV1NRa+unAEA/yFwltkqU0eRtGbxI1f+e0U4Q/4gBIw/boljb7cOJUvtGkICrvM+ke1pFaS5XQSiczsjYdq0FkZeM+zVnPztEd9tetXpmPipirKO+JxQYquQGOqTFLZDEflPJxndShhAOCNC5tvlWYX6hemmkXxVBiybwuj66H6aPJOJ/CEfB12VkiexYsqfWZA+Rw/z8A== 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 Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from CH3PR11MB435924.namprd11.prod.outlook.com (2603:10b6:610:34a::8) by PH0PR11MB4808.namprd11.prod.outlook.com (2603:10b6:510:39::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.9; Tue, 15 Sep 2026 09:27:23 +0000 Received: from CH3PR11MB435924.namprd11.prod.outlook.com ([fe80::1696:c90e:60af:a0cd]) by CH3PR11MB435924.namprd11.prod.outlook.com ([fe80::1696:c90e:60af:a0cd%6]) with mapi id 15.21.0428.008; Tue, 15 Sep 2026 09:27:23 +0000 From: Peter Fang To: Dave Hansen , Kiryl Shutsemau , Rick Edgecombe , "Kuppuswamy Sathyanarayanan" CC: Thomas Gleixner , Ingo Molnar , Borislav Petkov , , "H. Peter Anvin" , , , , Xiaoyao Li , Binbin Wu , Tony Lindgren , Sean Christopherson , Artem Bityutskiy , Peter Fang Subject: [PATCH v4 2/4] virt: tdx-guest: Calculate the Quote buffer size safely Date: Tue, 15 Sep 2026 02:26:01 -0700 Message-ID: <20260915092632.2822169-3-peter.fang@intel.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260915092632.2822169-1-peter.fang@intel.com> References: <20260915092632.2822169-1-peter.fang@intel.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ0PR03CA0227.namprd03.prod.outlook.com (2603:10b6:a03:39f::22) To CH3PR11MB435924.namprd11.prod.outlook.com (2603:10b6:610:34a::8) 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: CH3PR11MB435924:EE_|PH0PR11MB4808:EE_ X-MS-Office365-Filtering-Correlation-Id: d6ca866e-1a16-4c87-c599-08df130b8ca2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|7416014|376014|1800799024|11063799006|56012099006|10067099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: mtaHQAuGc147pClPsy+coUFai96F5tYM3GMT+AXH5uH1gWNQ7HvObgEWynTB8pUg9xNkjv9dqsVO4pFGgjvrcbEg4SwZxOylk46u2o+dlSBoxDvCGdRhiee5IgWIk7KL62Zz7NaYtLmawBX0Ydeq/5+0u2MyMs7iGEEZL3Nei9QwIFpV6zwpp4E+IgcsOfBLGgvWbniFv60e4cLOJc+HVqnhSTGJxk3MFV0vB0bEXbXwpVnI8H9Lte4WUbRIKR+ywCIOatBxnvhW92s+26+xrvUXKpFDip/fRj6nHDzpvosfAFZoHW3QMa8rSwzefauBetHvTbugkKbwLZelHfpKcQ1LExv/Eu7p2tefHwqxP8easC+he9HuYF5jH+wEesnR08d9mRIZVWdtzjyOSGrawZUSgFPanTcbGmr/MvM3mtZ/O5LY9o6OGct/DE3smQDyOHOZRvKfchfTVuAYFZglamhnfKaGiNjUrxqMvOhZbBu2n2X2Kq1JhvEUT23DVcVqXemvPCE5GEy6O08k03Ehdnu7KHXDfeJce9rNFa2eHN3Shqpl197t78rOI8ZckwOhgqTVyPnhVd1FoJyS+BWBNrBNs7VjhTYRWwNXtGevHrDEBhAXDc5N73gEkOpWvKBvs19JuVkJSLKu2wr042WSo/zoWiHzR8HD4P6ymHkz8Bk= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR11MB435924.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(7416014)(376014)(1800799024)(11063799006)(56012099006)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?SmCQvtiyTqJaPjCGADLDruwTZ8ktae59BWnC0vgxoHTPPKW498iPoiPvP0VH?= =?us-ascii?Q?uUgoVCpr0staic9vJokwap8k8AV6pO/q9LE5m/nXBx5DiN+69v2OKq94j6MF?= =?us-ascii?Q?3pDTvprVbn+3gTpNpBnkobLKFjK3+fOGE+TwcJCs7cysCU0K1Q5P2YlO7R/x?= =?us-ascii?Q?TwJG9xdp+r8WgNJ/dbGLrThDjjjFiChPv5X37jHkokWhITBLC2ekNbowfXFL?= =?us-ascii?Q?YiHwYEt7KJK9kDc841fkrWododYUJydizsA8buspo10YXYZiVYw2C7zM22Su?= =?us-ascii?Q?ST0JpUJvm2/3Z5o8ZUeeJ7dCzCQ9XCrEpluz2HvEOSoJVM3olQST1+0SG/K/?= =?us-ascii?Q?JQlNub2tYAuoDsnObgnCBdScqEf9gUXHFJoB479qpz1w3u4e6JKqFYBBTWMs?= =?us-ascii?Q?JrZ8BfFgZPfj5baIx/sX2H6r/UqfJAIkHlGvX76S8L44sUW3qhU02z1ZuAw+?= =?us-ascii?Q?y405MxrH/FpjUMfFxRJbYmGZ9tsQcq+lTvg+KMPmg2oa/btq5IUW136gZwVY?= =?us-ascii?Q?Lpo1fxHVwIOuoQs+v55LESkiNykd9QkkDyW7WtwD/Gx5rPZWQ3GZO7HmRimY?= =?us-ascii?Q?JHnJXz4YS4FdOMyFuqvzfsvzU4w4xtT2nshPKtsPOOSYrKCOhCqIUvpXwTDO?= =?us-ascii?Q?XMclKzcXjSmD7+MQOgUOaUcISrosb/Ksbb3mUjGzYZeXWDw56QM+q9d4XsLG?= =?us-ascii?Q?zqib2kGqyMBsBw1vVobohGJDTCfxXzC3BnkFBmqqVGH0DybfpDdEetV8HnY8?= =?us-ascii?Q?rSlkzA2thwFqH4G6oyuTNXbUt80IRd7LYYp80irjwW6wx0XlL8YPW+OoDBIQ?= =?us-ascii?Q?jRCrchg5SrGlIRWgDgBjdW/0epfbntvJ+H8Nhe42Y7QZq27uJhk5cm76CFLy?= =?us-ascii?Q?IeEVndKzQDzsPnK6pc7EXJEqSucEYbeV5HdIN6Ta+J+fSZ3fN+atOIi5H3FW?= =?us-ascii?Q?hkYVTKsALb5PmWFmJTi7VhL8AZTd8tvAEa98ChCIU5xDaLOKJ0HjfS/8dbMP?= =?us-ascii?Q?d2NL6YidP307VGj673fPH3harZGQ/jWUPmqHWbtrkfWcbphrbtrha1uePBN0?= =?us-ascii?Q?oD9zGrkwd12LyKSH7t4u8G0bXnmrdSXkoj6RJfjWRTkjg0mUt2PdjiGG/bhR?= =?us-ascii?Q?cYzUjM/fFeS6n1atwx24yt2W2bRoVFQJ11tAPcIuEuRrK4xNlgWyajTdY5dr?= =?us-ascii?Q?AtAAE86WhTok4898SehIqEP9cdeFXm0y9Xwf9fy+i7eY70zVnzMUgl+ZbIX2?= =?us-ascii?Q?eGi4dJc4A+Wqe4zhPJX7RMLsRyokClQtIdcIAyVaeOkYRPsW25ow39+06/rW?= =?us-ascii?Q?IUWAnJGpHCSwJgUcOLoCHZWYLvqStPZcxBYQ0TSaTRWaLO2szQipWqv9Ld93?= =?us-ascii?Q?KFs1dxkxZQiWRfjzY3QAImrYwOXqSmp4Yt9ElD69TJFhbMZeJ/RzF/sWxQYO?= =?us-ascii?Q?DkggC/y44E/2JvCxcFrUjW7ISYni2Xcq4locgZBLjERXJsQ63Fu0DASwNpUM?= =?us-ascii?Q?y8fTVcSIQyYtmTxjaoxPP8cB3boYEWK4sw8kOBJbDXzvwYq+1fyyyt5dhf/H?= =?us-ascii?Q?dqzSBdHOhmFKRyddruQYzf8g72tCrffw0F0Yvt+RGUZCY42WSbePPHU/maaw?= =?us-ascii?Q?UJj/H1Fh7TaMMOaXv0zJg8pQFro23M8sJdYbOqL239nkSoNCVDd4UUGIT2tY?= =?us-ascii?Q?YG0wzpdFvfk5Q+aOxT2dWc5v3H/2GgAdCPvAY+W/cO0BvaI0ripH5ouOk+UP?= =?us-ascii?Q?dLhBuA3T4A=3D=3D?= X-Exchange-RoutingPolicyChecked: WiHMEmDuowUAaxvA6yDoaTIWG7HxZXGrO4qDcwA9NhaWs3cSnxOaFNk7G5vhaDhz6aRx8VFIVKxfBrEI+V6JuknFq1X+3NgU6vU6IPKPY5YHl75D1OyHktc6J/8lQ6KDtcFHp91ZZ9nWeI2aj6bUIa/LmJR6jNMfmcUfVWfnOpCHXZ71wtPFwqjKtyj2lRIKcwCCF4KrYaPR/GbC8f96Uph70GziouEJeXzqHlSRLIOFh27Vv4+CnjCDbzjnSCGqYg5WH5bJAFwfpyERybrD6r6OcrgZgimLcps1XJQuHx97If4/X8nRj3GUKv7ADGyV0yH7n4kMlrkf7Hk6qNMXbw== X-MS-Exchange-CrossTenant-Network-Message-Id: d6ca866e-1a16-4c87-c599-08df130b8ca2 X-MS-Exchange-CrossTenant-AuthSource: CH3PR11MB435924.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Sep 2026 09:27:23.5877 (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: x5lhoGJjTM5JBJ73th4O82vm/My+Slb+TvP+uRwXlkDtSXHo/TPkdA2ZpUuum4mZt+xh/NJ4JnOWFyd6tKFSrg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB4808 X-OriginatorOrg: intel.com Content-Type: text/plain; charset="utf-8" struct tdx_quote_buf has a trailing flexible array member. struct_size_t() calculates the size of this kind of struct safely. It handles overflow, which helps since the Quote size comes from the host. Use it to rewrite the bounds check logic, since "header_size + data_len > buf_size" ...is more readable than "data_len > buf_size - header_size". Signed-off-by: Peter Fang Reviewed-by: Kuppuswamy Sathyanarayanan Reviewed-by: Tony Lindgren Reviewed-by: Xiaoyao Li Reviewed-by: Binbin Wu Reviewed-by: Kiryl Shutsemau (Meta) --- v4: - No code changes. - Add Reviewed-by tags. [Sathya, Tony, Xiaoyao, Binbin] v3: - Split out the use of struct_size_t() for buffer length from the v2 "Allocate Quote buffer dynamically" patch to refactor first. [Dave] - Drop the Reviewed-by tags from v2 (Kiryl, Binbin) as the patch was reworked. --- drivers/virt/coco/tdx-guest/tdx-guest.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/virt/coco/tdx-guest/tdx-guest.c b/drivers/virt/coco/td= x-guest/tdx-guest.c index d0303e31e816..f47c5429d002 100644 --- a/drivers/virt/coco/tdx-guest/tdx-guest.c +++ b/drivers/virt/coco/tdx-guest/tdx-guest.c @@ -170,7 +170,7 @@ static void tdx_mr_deinit(const struct attribute_group = *mr_grp) #define GET_QUOTE_SUCCESS 0 #define GET_QUOTE_IN_FLIGHT 0xffffffffffffffff =20 -#define TDX_QUOTE_MAX_LEN (GET_QUOTE_BUF_SIZE - sizeof(struct tdx_quote_b= uf)) +#define TDX_QUOTE_BUF_LEN(n) struct_size_t(struct tdx_quote_buf, data, n) =20 /* struct tdx_quote_buf: Format of Quote request buffer. * @version: Quote format version, filled by TD. @@ -315,7 +315,7 @@ static int tdx_report_new_locked(struct tsm_report *rep= ort, void *data) =20 out_len =3D READ_ONCE(quote_buf->out_len); =20 - if (out_len > TDX_QUOTE_MAX_LEN) + if (TDX_QUOTE_BUF_LEN(out_len) > GET_QUOTE_BUF_SIZE) return -EFBIG; =20 buf =3D kvmemdup(quote_buf->data, out_len, GFP_KERNEL); --=20 2.53.0 From nobody Fri Sep 25 07:55:56 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.15]) (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 2106947AF43; Tue, 15 Sep 2026 09:27:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.15 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789464457; cv=fail; b=MtO8YQtUZjTuFo8gJPLfPE2hkp37bO0J3xPGDAiVSvlZN6uROODC/rQ/XRDmxc0i7byS1bx0MuRXgDu+XDjAj89P5rBc8AelxWcvd6qfrRxl/UR3tFsdk4dc9Tv5uBXraWhqqzVGmtp6Nvhf5+rftwnRzD6UQhx1quAuZO6ZALs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789464457; c=relaxed/simple; bh=vcfztzDddCW7nJDQPR7qqgwhN8RQGULNTHQxXdt7eVU=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=hT/LXfY3JwGxey5ooyAsrfH0Xfqbx2qEiblp/ac1F/GyEhdPxHzPm+XKeQjc2nC8Kb+KnRCWngNi7yiwxZMZmTB+LZAV7Z5vmVqI87W9T28eUDRWy/QpZVpm0L49qGcMbd0MGk9tQMYoi+c/1W8s/FJ3knAjnfkvhMiGx5eI45A= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=Yfk+5mJJ; arc=fail smtp.client-ip=192.198.163.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="Yfk+5mJJ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1789464454; x=1821000454; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=vcfztzDddCW7nJDQPR7qqgwhN8RQGULNTHQxXdt7eVU=; b=Yfk+5mJJEE8Gs/tn1122zanAdudRYIead8RH34k14dXqnxXARU1xb8kL aA1LRE+G+irAtCQ665NPuZi1LNGdRlW5O3XXn1qczs/sOX/7NadC2xaNv YWA0+pjbQYssNEIqMwCIA44m4GLfH4FNoCTZq3pVMgNgUQgsaddB5qFN3 g4vBHxDKHdVoXpfBrhtT4nnNNkboD9vUviJPc+18Rv0viWCFuRFdOMZso uEPDrbM+D7fl+vf+PXhgTxCETntqS3eosDqy4H9t/VOGTEy7qdcwNsvpC NHPf2qHvZIdhgXpWr8Kmd1RrWMjLLzQZF6fDZCjsB3zOGnoqIKPBAvPJI w==; X-CSE-ConnectionGUID: V8d7W28TR7Sw+WZp1QnMyQ== X-CSE-MsgGUID: DS/ZuvHgRRiZrGFYqwe8Aw== X-IronPort-AV: E=McAfee;i="6800,10657,11905"; a="89954846" X-IronPort-AV: E=Sophos;i="6.27,103,1787036400"; d="scan'208";a="89954846" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Sep 2026 02:27:33 -0700 X-CSE-ConnectionGUID: hQGXQPEeRaOEboJCAXn06g== X-CSE-MsgGUID: fy1DZtiMSY+CPn5P+Np+cA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.27,103,1787036400"; d="scan'208";a="302808748" Received: from orsmsx902.amr.corp.intel.com ([10.22.229.24]) by orviesa002.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Sep 2026 02:27:32 -0700 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Tue, 15 Sep 2026 02:27:30 -0700 Received: from ORSEDG901.ED.cps.intel.com (10.7.248.11) 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.2562.46 via Frontend Transport; Tue, 15 Sep 2026 02:27:30 -0700 Received: from SA9PR02CU001.outbound.protection.outlook.com (40.93.196.33) by edgegateway.intel.com (134.134.137.111) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Tue, 15 Sep 2026 02:27:29 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=um2ab7b4spQqt3hk0CE1ecgOh3owsILVhaKeipgmYmYPJrEnzdZ454+g3Vowrool+8KWQW/jdLSEVBh7NzZd4Q2dMzdOiiK3vKoRoUM6c25FmNCBUE9176+Co5VBPy6PAFZuRfVC7ykeBb4VUxb/qVgm7xurM/5l9QZEcSy3Ya61qlEluJmEUmzRaFGTUACIbl2WnsuPvgAPAWPmW4mIYwMc4vtWpQTqlbYn0m4JqulzF/NXRqf7JhpRuuWvdBMFqnGVs5ul2LjIlA3pr+U1TQxdCgthM4CjKeRzHNSni0n05YNBTRpgkeqh0NA4V92xKSIcdPrSrKWXw25HCl7O7Q== 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=ucvbzI21e0uoaACAmhxOsEQ/0yQUCnWBB2/kcVNTYG4=; b=amiabFrHNAXEPVx6W3KoiIhcMF3C+aN9cVmpCzf2tlwKC6L+nhqbu64gK5VGG63WQJ1ynyEbbRGAX1lJjgUNSxwwPJb1yPxrkdtOTQKiBX3aNeUsvawQtL3hsfwrdfkuuSY7+wq3GrjcyH2l/aKWy1BVizWpotcxfLpY0MdX2Fg5dRYbfGQA+UNjNHGrnUL6sJvqFY2p2T1vVXVx/LkZU56o4Gu+JzwHsUitSQ+knT+H+OoIYr0Md4+rvrMoIt/iHAl+5ba3jbyAbtP2Kkc9IfIvMsdFalpasKwoobW2tR51R4hhkhkoxl0ATZMgeWu5kwoyy8YBN/Bgfx6L4+/32A== 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 Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from CH3PR11MB435924.namprd11.prod.outlook.com (2603:10b6:610:34a::8) by PH0PR11MB4808.namprd11.prod.outlook.com (2603:10b6:510:39::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.9; Tue, 15 Sep 2026 09:27:25 +0000 Received: from CH3PR11MB435924.namprd11.prod.outlook.com ([fe80::1696:c90e:60af:a0cd]) by CH3PR11MB435924.namprd11.prod.outlook.com ([fe80::1696:c90e:60af:a0cd%6]) with mapi id 15.21.0428.008; Tue, 15 Sep 2026 09:27:25 +0000 From: Peter Fang To: Dave Hansen , Kiryl Shutsemau , Rick Edgecombe , "Kuppuswamy Sathyanarayanan" CC: Thomas Gleixner , Ingo Molnar , Borislav Petkov , , "H. Peter Anvin" , , , , Xiaoyao Li , Binbin Wu , Tony Lindgren , Sean Christopherson , Artem Bityutskiy , Peter Fang Subject: [PATCH v4 3/4] virt: tdx-guest: Use a variable to store the Quote buffer size Date: Tue, 15 Sep 2026 02:26:02 -0700 Message-ID: <20260915092632.2822169-4-peter.fang@intel.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260915092632.2822169-1-peter.fang@intel.com> References: <20260915092632.2822169-1-peter.fang@intel.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ0PR03CA0227.namprd03.prod.outlook.com (2603:10b6:a03:39f::22) To CH3PR11MB435924.namprd11.prod.outlook.com (2603:10b6:610:34a::8) 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: CH3PR11MB435924:EE_|PH0PR11MB4808:EE_ X-MS-Office365-Filtering-Correlation-Id: 90a7d0d0-3f6b-4fef-0757-08df130b8d7a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|7416014|376014|1800799024|11063799006|56012099006|10067099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: qGeo9rHLDOHUySBl9L/RDse6ahHVeSszU2GKBO70sPQSy3y2S0nyJ+lriclUCt/gqhJ8oZV/KhYFPxRH/svjXgkSwjY6OvfERYNdgbaxxFA7aZ8EVzipoRvL6QUSw+qyb0enzEdINX2vlof41zWBv22WRYh6l50bpvURpuLSADTJ0gHz4a6wG8KQ01G8MfXy/009IKupZTM8ImMihPzHWC6hGxHssxAUJ1QUPIfC03i50wYZmLpV9wFXuF6legHr37ECjLoTFJzmXzszTiQwCTVNZMPSBmb54dAS1LGYaZT8MY6E8TlZ1W9GYjkwV22ea7x4AaWPcyNoL4Y1QUbUYO06+fT1/07Rr0p8r+P9s9ZzQhbQZZjz+oScCaNoZAVxUJTUiM/Ih2AyeO00+mnJ6qogrFLEYvO1NzwFUrVq1MetWtxrGSHe8cNaEvEUV7vIKmXc0B6XzsXclg+6ycD1u9Ygvaag0xs8eN8rwTQuU2aExYyJufONYYsv2MIWmumtQh55S5Fk5swiG4GyQhEL3v7ktxKqksFK5l4D9v2eW99PV1JgEUtdmqZ1dRslXZw0wSxbuxSRtIHuMTx9cGjepx7VQ+5nfsbm3mENL3UqFiYKHcYhYam8BUda/N7WgNIvRIc8BcLOFffRzLyHNIGF7SNlBUkN7xTiYz32tIaCzFc= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR11MB435924.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(7416014)(376014)(1800799024)(11063799006)(56012099006)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?sMhzcFvaZx9tyz3Q1Zp68uTSnD4NibtcWSng2Z+pX8TSgCKcd3BGTZ5fh9+j?= =?us-ascii?Q?xVqnCt+skswrIOvjIzKzYwbqokunm7kkgI/wYrWA8mPodsH53wi6jiPbbUZX?= =?us-ascii?Q?Ue4BZiKyh7yguI8TylSrXvUz6BDuhN1Zn1YYwKoh4UMw/ERCFBp469BIL8kF?= =?us-ascii?Q?t0i630uOimaoUWlq/sPZj878HiQq+0LZho9vGtltmsGVfAq9HfAI91m2TqVa?= =?us-ascii?Q?vygFsstVb1rUcgIIVtro0xZwJVbqMVRhdHn+9uU9S6F8Nvw6uHxKKDOq7XgP?= =?us-ascii?Q?DepY1rIYBAvM9uTD/xyHgHvbbWmZX7bYJrTEd5IYdjAgsPUVo+gLo1B/m8k1?= =?us-ascii?Q?5eqJeVPQQXoy1Qk+TMTjCOSbmKbxCIBIPZJGgJlSuQbxrScrtbuTba0FcZGk?= =?us-ascii?Q?xKKw4Dy22N/P6DxykEtgXrTIH3fMkjtiJQK7eBuS6KsyuIXWszkErqm+F3xb?= =?us-ascii?Q?gBPhhnWgTbcHT3GD4gSOqzrseLgn4JZTJXu+mE1FPrGm7YZR6O3XCFCDrDwL?= =?us-ascii?Q?zZKsrbNLrIwqYyzFjwoIL3A8mQy5tUZ4gmALJjtukOAF9r5AFEiiacgBXZup?= =?us-ascii?Q?9grZVtnIJD95Nd3liaANPHp3wt6XcT9ckrJnfq76hGvTktRSyUHqmbNqgDvF?= =?us-ascii?Q?zlliAVninAb/qeTSyMO/uyLa2Z1qonnHZuU3+xlYzFcbz1xCxxtbMITbC/hF?= =?us-ascii?Q?HRKXPm00hiGTi0E1EYuzI6Cn02pfG1PP834c6pJcZjgHEJRlgwfoS8+YR1Tm?= =?us-ascii?Q?SMt//LBsc4zMa0fikJPcPESsn1MPGly2Ijn2rB1DzSGa85i7u26ODvD1kJgY?= =?us-ascii?Q?mRPCS25Uawi2/3HcmCv5nzp3InOBEdzIk+vFO8Bardvbxsb+pNGQeSNJR8JV?= =?us-ascii?Q?b7aQHUWmdtyHojd+Zt14onqEiIRVJ2BLXMGJhHsQN/5+9fy0k3RmxT8mY2nY?= =?us-ascii?Q?qfq0YF5coKocRnfbbiUVICpC2hM544ikP3rw/IXgIBIHy3W/ltDuaA6HE3Vf?= =?us-ascii?Q?6E0hT8dMNu21ZgmHwoSbUdoULSBF2vCb4kfT5y6qoemXuAROIYhAv2Ettez0?= =?us-ascii?Q?0bLV6avaVp76wunXkzhM/faIj04ZowFUmycFXElE3Z70ugKFkgQduL5IgNC0?= =?us-ascii?Q?fuzIA/ZF7gexRjPJTL0070y+/tfymEGhMU0ZZRQDDGonf7SNrdZxYDTlYukT?= =?us-ascii?Q?Ul4ti7GUfZ/ySQXRlpnJETmZmuQxMU4+1s/q/oWXdnu9g8DgGAoRlVPExnur?= =?us-ascii?Q?nnSkSjLFinsUqzPtanNFaDsG8UZgy2Crk0JJOtT4brfwMb5T3tFTlV7fodIP?= =?us-ascii?Q?+FOZgkuMK42L0zVW/QGDWRyJ6JHKxGretxLPBsb0Spp7+xk/+S/a+qm7pFU5?= =?us-ascii?Q?MNJVval3qyKQjG27E4qrjZGoEjqR+5VzVbUDsnYXgNivADegsrohhyoSQvi9?= =?us-ascii?Q?5qbwPFDAXwD/7YOapNGKyb2kwlS5SfIcRjBmz2Nnhvk/ZYetDnXQE9sNHpk3?= =?us-ascii?Q?RInG+mWlCifx4HWSndgO2eA+iWhp/0JgtXCB6QqeT3PKx+NcBvY7VczcULfB?= =?us-ascii?Q?XAUfhk03Ef6jqiTx00ajj0M2ORQyfd7lBVteVKuWPHUuJf+eEMLge3MzvkQj?= =?us-ascii?Q?3HsYCeObDCTymdu6mw8RMV8IyuDhAWmrJztxSV5NPCUhKqXhExWwYLZ9G+1W?= =?us-ascii?Q?PmrhwYqdTBpVLSwOHj9tRY+k+jPvgfx4S6jZl4tCkN7zCRG7LEuHDUGyhx0R?= =?us-ascii?Q?ku4Dscj7OA=3D=3D?= X-Exchange-RoutingPolicyChecked: oDndJJDr1AAPmraoDx419zoxwZOR3ynuIHzvHu1Yu59RiIGgi5hZwwuT+RvWKkD3UL8mikNXJeaPlyZ0P/e3OIsZqB+Nnz4tSCM9DDFWKL31bYmI6moBTFJHtT9qOOgGed5Raffp9wcvTz7vsB0iGAh0c0RHCkFVI5xKGrfTT1zoJcfZVJO+PmJUmWSg9VWhUuB1Oo4/PVumFK4rPMpkJ7pNSEATTg0wgKHdwBOeA4PywWnsi+VQ5IbM0Qp64ioKDIG6nMQBCpyczGvN311F74QFq5swHjJFhtPBKQ3yZf0bNpDu+qd+uTiyzd9LqGs3QJJrjrigDJShZpw11Pny2A== X-MS-Exchange-CrossTenant-Network-Message-Id: 90a7d0d0-3f6b-4fef-0757-08df130b8d7a X-MS-Exchange-CrossTenant-AuthSource: CH3PR11MB435924.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Sep 2026 09:27:24.9806 (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: MYD9UX03GiJ6e/FyLHXD5toD4DJmTPGv9cdtGSbVW45D+uDPXv7hE6qrerR3MSWMBP7mxWxW/PRCWoXhKVb9aw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB4808 X-OriginatorOrg: intel.com Content-Type: text/plain; charset="utf-8" In preparation for dynamic Quote buffer size, replace the fixed size constant with a variable. The constant is sprinkled across several places. Read the size from the variable instead. Signed-off-by: Peter Fang Reviewed-by: Kuppuswamy Sathyanarayanan Reviewed-by: Tony Lindgren Reviewed-by: Binbin Wu Reviewed-by: Kiryl Shutsemau (Meta) Reviewed-by: Xiaoyao Li --- v4: - Keep the PAGE_ALIGN() when initializing quote_data_len. [Xiaoyao] - Add Reviewed-by tags. [Sathya, Tony, Binbin] v3: - Split out using a variable for the buffer size from the v2 "Allocate Quote buffer dynamically" patch to refactor first. [Dave] - Pass the buffer size into alloc_quote_buf() by value. [Dave] - Drop the Reviewed-by tags from v2 (Kiryl, Binbin) as the patch was reworked. --- drivers/virt/coco/tdx-guest/tdx-guest.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/drivers/virt/coco/tdx-guest/tdx-guest.c b/drivers/virt/coco/td= x-guest/tdx-guest.c index f47c5429d002..ec886c401fcb 100644 --- a/drivers/virt/coco/tdx-guest/tdx-guest.c +++ b/drivers/virt/coco/tdx-guest/tdx-guest.c @@ -191,8 +191,9 @@ struct tdx_quote_buf { u8 data[]; }; =20 -/* Quote data buffer */ +/* Quote data buffer and length */ static void *quote_data; +static size_t quote_data_len; =20 /* Lock to streamline quote requests */ static DEFINE_MUTEX(quote_lock); @@ -209,9 +210,8 @@ static long tdx_get_report0(struct tdx_report_req __use= r *req) USER_SOCKPTR(req->tdreport)); } =20 -static void free_quote_buf(void *buf) +static void free_quote_buf(void *buf, size_t len) { - size_t len =3D PAGE_ALIGN(GET_QUOTE_BUF_SIZE); unsigned int count =3D len >> PAGE_SHIFT; =20 if (set_memory_encrypted((unsigned long)buf, count)) { @@ -222,9 +222,8 @@ static void free_quote_buf(void *buf) free_pages_exact(buf, len); } =20 -static void *alloc_quote_buf(void) +static void *alloc_quote_buf(size_t len) { - size_t len =3D PAGE_ALIGN(GET_QUOTE_BUF_SIZE); unsigned int count =3D len >> PAGE_SHIFT; void *addr; =20 @@ -285,7 +284,7 @@ static int tdx_report_new_locked(struct tsm_report *rep= ort, void *data) if (desc->inblob_len !=3D TDX_REPORTDATA_LEN) return -EINVAL; =20 - memset(quote_data, 0, GET_QUOTE_BUF_SIZE); + memset(quote_data, 0, quote_data_len); =20 /* Update Quote buffer header */ quote_buf->version =3D GET_QUOTE_CMD_VER; @@ -296,7 +295,7 @@ static int tdx_report_new_locked(struct tsm_report *rep= ort, void *data) if (ret) return ret; =20 - err =3D tdx_hcall_get_quote(quote_data, GET_QUOTE_BUF_SIZE); + err =3D tdx_hcall_get_quote(quote_data, quote_data_len); if (err) { pr_err("GetQuote hypercall failed, status:%llx\n", err); return -EIO; @@ -315,7 +314,7 @@ static int tdx_report_new_locked(struct tsm_report *rep= ort, void *data) =20 out_len =3D READ_ONCE(quote_buf->out_len); =20 - if (TDX_QUOTE_BUF_LEN(out_len) > GET_QUOTE_BUF_SIZE) + if (TDX_QUOTE_BUF_LEN(out_len) > quote_data_len) return -EFBIG; =20 buf =3D kvmemdup(quote_buf->data, out_len, GFP_KERNEL); @@ -417,7 +416,8 @@ static int __init tdx_guest_init(void) if (ret) goto deinit_mr; =20 - quote_data =3D alloc_quote_buf(); + quote_data_len =3D PAGE_ALIGN(GET_QUOTE_BUF_SIZE); + quote_data =3D alloc_quote_buf(quote_data_len); if (!quote_data) { pr_err("Failed to allocate Quote buffer\n"); ret =3D -ENOMEM; @@ -431,7 +431,7 @@ static int __init tdx_guest_init(void) return 0; =20 free_quote: - free_quote_buf(quote_data); + free_quote_buf(quote_data, quote_data_len); free_misc: misc_deregister(&tdx_misc_dev); deinit_mr: @@ -444,7 +444,7 @@ module_init(tdx_guest_init); static void __exit tdx_guest_exit(void) { tsm_report_unregister(&tdx_tsm_ops); - free_quote_buf(quote_data); + free_quote_buf(quote_data, quote_data_len); misc_deregister(&tdx_misc_dev); tdx_mr_deinit(tdx_attr_groups[0]); } --=20 2.53.0 From nobody Fri Sep 25 07:55:56 2026 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.15]) (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 09BE147B43E; Tue, 15 Sep 2026 09:27:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.15 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789464458; cv=fail; b=ec0itG19KA1XNieIIdw2LOoMt47YjtJw5A5aS901WNW8XIEWfhbEvd1qcf7dHAlBlkSWanBrrlln5BC72zdZGUw7lh8VEI1pAY4AEFXeb6PECWZXQEr7dtUbNqB6hBtJSv8VK/OOiHmSKqG5yncazaUVAd1+lLhW91cmn2dpS6g= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789464458; c=relaxed/simple; bh=4042QXwvYopnhPV5bb7vwp3I5t1NG1xzgOoErBfEUko=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=AldvZpueH0O4CAB3x5aajIXLcs4U0n2caD2Cg/QsRtcsbvPrGLQAFU+fDa5NXR2PwevXMXQiFE7YykEKQAZ7wxu3w9PY3aN4+r7ZBF794O5lRpgLYKhbFSV8T5ULDPD/EMmCDN69OrA6Yr4UVw75MkfMeXvjFKu17gLnZLtY+78= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=b3ZsOvVk; arc=fail smtp.client-ip=192.198.163.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="b3ZsOvVk" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1789464455; x=1821000455; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=4042QXwvYopnhPV5bb7vwp3I5t1NG1xzgOoErBfEUko=; b=b3ZsOvVkoiEsgJI+0ACQ1e2SZaTj1ZbZro3XCPvEEhPcXaTyPSoyab3w mOEFde/ow4qqSChTWa+C11koNErJDhaCvpTwjeZnVXNQTIXXhVPPMWksb RelrltXSdft/qeCMeJkGfuZH4WyUx/YWO7JYkiylkx1RwW7ErJWFQEyYT IRHVeRpXOyATXpVsfD9SzMa+rcJEvCMpZc74MEUEaN/tEhlXApwXxNtLW hC0KiwIDdHztp7EZ097M759Snd2SNDLuOSfz46h/YX1ppUkJ1IfMudb0O l/6eWVBySW70usGwsorQ/oyzwNtu7QX1EW0+LiTEREAdAOKy41Kv4ObZh Q==; X-CSE-ConnectionGUID: lzOsRd/YQVqf7bQ6ML3aiQ== X-CSE-MsgGUID: GH3D8K7ET8Kx51lNrNamNw== X-IronPort-AV: E=McAfee;i="6800,10657,11905"; a="89954853" X-IronPort-AV: E=Sophos;i="6.27,103,1787036400"; d="scan'208";a="89954853" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Sep 2026 02:27:34 -0700 X-CSE-ConnectionGUID: GHMBnLG/T1WkqED77Um0wg== X-CSE-MsgGUID: +zxd5PekStqhEmP/j3l8NA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.27,103,1787036400"; d="scan'208";a="302808754" Received: from orsmsx902.amr.corp.intel.com ([10.22.229.24]) by orviesa002.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Sep 2026 02:27:33 -0700 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Tue, 15 Sep 2026 02:27:32 -0700 Received: from ORSEDG901.ED.cps.intel.com (10.7.248.11) 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.2562.46 via Frontend Transport; Tue, 15 Sep 2026 02:27:32 -0700 Received: from SA9PR02CU001.outbound.protection.outlook.com (40.93.196.33) by edgegateway.intel.com (134.134.137.111) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Tue, 15 Sep 2026 02:27:31 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lZiWS9Is9QjxFAaJOxoksJde6+9mSFU4CTMDbKODO/6MhxezHYcuFjEKGqyQWalOcgeulH3YgrBqCs8esWlM/P6WpcmD1sM/q5k2cCitpFqqOSxJd7GAhvF6iTEgFOtJ7YmqlkfiIohSUgBraBV3RHML1S4RJv3Ay150YFVuuZMIJ+GPYCi02rSyyChvyextIGqufHDHPweWeKnKysRsS5AyidXNNOzanL6Tm4LwyC7/Q0rpNlB/K9mYW5wlrRK13UKPHIvZOnfqwnEmiQkcRETQMw3bSUqHe4N3uVLuJMPaQsqijI3lxP1Gdt/lYLCHaRDxWLzag3J5ETHJfW7MTQ== 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=is7Sf3oLtz69bwE940tW0O0efXedRsr8aEUyYEdjGMM=; b=dLSzbbjzAHrsKnCMitnDzww0eTTBOuALXmmuOGgILsnzVY7tzyJWXF11QrUy9uanZUa35Q9AfFA4lpMbTBkf/vfjOfN3Nymfu6ebB9OrhvVSqlz18986/84bn0Pv0jZyzj6XFf64qLSOYHFuTrspFH14dYi+VgW0gbV4D//eVb22wK4ZC+kRYaZ0ChohiWxyf3ulOv4nPnhly4O1+UX0E34H3TFYgdgfVb1U7zUx7vPjUrZTHDGMgX+wza6ZQkAFdyK34HHpwbUyyVJC2koaqrkISRahwhif99OhftzxsSEm+M2um1o+pw7K40ygGS+XmB70G8WK648rd3tMmkBdGw== 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 Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from CH3PR11MB435924.namprd11.prod.outlook.com (2603:10b6:610:34a::8) by PH0PR11MB4808.namprd11.prod.outlook.com (2603:10b6:510:39::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.9; Tue, 15 Sep 2026 09:27:26 +0000 Received: from CH3PR11MB435924.namprd11.prod.outlook.com ([fe80::1696:c90e:60af:a0cd]) by CH3PR11MB435924.namprd11.prod.outlook.com ([fe80::1696:c90e:60af:a0cd%6]) with mapi id 15.21.0428.008; Tue, 15 Sep 2026 09:27:26 +0000 From: Peter Fang To: Dave Hansen , Kiryl Shutsemau , Rick Edgecombe , "Kuppuswamy Sathyanarayanan" CC: Thomas Gleixner , Ingo Molnar , Borislav Petkov , , "H. Peter Anvin" , , , , Xiaoyao Li , Binbin Wu , Tony Lindgren , Sean Christopherson , Artem Bityutskiy , Peter Fang Subject: [PATCH v4 4/4] virt: tdx-guest: Allocate Quote buffer dynamically Date: Tue, 15 Sep 2026 02:26:03 -0700 Message-ID: <20260915092632.2822169-5-peter.fang@intel.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260915092632.2822169-1-peter.fang@intel.com> References: <20260915092632.2822169-1-peter.fang@intel.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SJ0PR03CA0227.namprd03.prod.outlook.com (2603:10b6:a03:39f::22) To CH3PR11MB435924.namprd11.prod.outlook.com (2603:10b6:610:34a::8) 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: CH3PR11MB435924:EE_|PH0PR11MB4808:EE_ X-MS-Office365-Filtering-Correlation-Id: 21abccaf-ca4d-4ba6-c60e-08df130b8e4d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|7416014|376014|1800799024|11063799006|56012099006|10067099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: X50R3Xtk2RpCcDpx3FbICvm1+vBb636vG1M6Uf0o70LEZcebVOtm294hK666B/VrysWgwjCD0nVjXwhfGFzfUPLE5aEMkkWn2pmZPMP3JSkh2XsgD66N+LsjBCcWj+Qc6cIdsUr/qmsNbWXW6rS8cXkdebfUKARR3T4wq2aBAwz3azDLdpXI0XHI3NJQKPq7TqDkRbm0R+kq14zw/7UQPD/Yn34vTLjEgarGPMQ0rNeJ6xrd2nc6FVZuzk5oH6f1uSOfjWtYihclF2wLXTh8xVcyWedK5ZkzOZJpWBsOerkFv9A31UTqQV7jVok5y88Cyvo3DMDDAHW7ykPT+qf5ObjAfWlQ2RJnTgQ2Fc0H+oNReb9LqsrFunXSkFIcL5eapQr3SOQcpjTNcrOiE0OSVWyTHCKUhXENwhrM6NhAVJtU0FhUN4QzRmRfUaDDOcyxv7udGADnoWfiQsv1MUgEUpF1ckoyqg/aRzfcgvGYiM7MXB2QCRQIURz8OFCesKG6FcfElQKtMNoiVBRwWirRleJta7HV6T0XbLd4yUINDqbpScK4fZXA3vEz1oKxukV6XUHUyXUP2u/uajfH2axjdjoYLBPM2oCoQ+PEro56dmIz8Kec8ibZ1gVyMw3HWlgxcp3IM8X0ZISjitO7yyYJDw9w+K4C8yW/GWEYfjJifm0= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR11MB435924.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(7416014)(376014)(1800799024)(11063799006)(56012099006)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Qsn4lPR0h8YAFHpqPvVjECCi3fGObXG6SKX8ry5Tg4WcXGhvuKvw7IGQEyCr?= =?us-ascii?Q?lF1zCmZJ6L/tW5NynU/wfWAKsi5kLK4h+5njBLanNXS2Qah2ZehNSSfnhHYH?= =?us-ascii?Q?pB97PrFXue/o/3BpuQqEYhQgdkYD0hN5WhG/DI9WFj8fhfFNvqk2i1zSYyt7?= =?us-ascii?Q?r8hQDnGgMcK/nHdYhVUPg+1HBCbVkub12me7JA2lj9laYrtxg17VRVatJVIX?= =?us-ascii?Q?L7LJnmZWHro+U1dD/gOBNBTLOkgI9jhPsJX4DOYpMCmUOy8xNihGX+10+zDa?= =?us-ascii?Q?BX0sR43R28O0NqLrKASATj50W3TbkwsPzvjR44IXPgv5y/UOMIWsq+14UA9m?= =?us-ascii?Q?kMzGzVSY3hvfwH/gRIHiUmUhhYAYFxleTrbJNaOLF6eAatsV6bToKzSd0cE9?= =?us-ascii?Q?YdVqZsph9+2InVvF1yIekyXLZ/HW3FdLQyT3x0Efm69ENQq3xJaISvgnOlTM?= =?us-ascii?Q?2RJen3rQHTuOZwszM340fDUX4xbLyuQg+Z3SV6T33n37aeINeuqdFmgSb6GP?= =?us-ascii?Q?Sp2DZR/XOP1ErWdOZNg25szmka9J2cRHmr0uMQoLe/21kqwSjZ7vpwzggGR/?= =?us-ascii?Q?RHE8JGAp10sWUhYIdpTkERcKFSkdDYGcf0MK43VApIZ2EO6hAg3kAh5Qeydj?= =?us-ascii?Q?EMyXhu8nTu9NVHKDxZ/0zlvKg3I4sX9YCQkr2GAxUf6dLYZ8Ee3LQ5ySXTq7?= =?us-ascii?Q?pzOrMxr+Uzx+sXx/tr6LhUsMloB0/j8qtmIcozC/3XOvCggKyIefJb11d0xy?= =?us-ascii?Q?v+cYWYAfs7pbvr7f2Xd8J3hDpcVA+lZc7y64IsnwCA/02728xM98UODL2S64?= =?us-ascii?Q?axVWmM3RRezg4pK5Ww2TEYxZ4HdtJk+Lgi010eJGb0T1/UbE47B9jZlcjqpl?= =?us-ascii?Q?OzVpWpCkrOq1UWyZ4R3TYtpxzz/4aFbZHLu27KMUcFh4Ze+cZceh15YmH2gZ?= =?us-ascii?Q?R0aBxjAfDPf5oiI/h76S1fzuUfvVQONoJLgxLS1Sz+be/CawO7zvnlQ+D3Dj?= =?us-ascii?Q?WHOXzt2U57uEhx6SE8ZQphvs/Hj33fNJVlx8CeR0M5E2WCloZ2Z71lc/f9tN?= =?us-ascii?Q?oi3iH76wHiyuxb0kon93wiyIX6bb8BXuP0pqLIwYbUefOcCxL5D5rGhnqbBU?= =?us-ascii?Q?CWbQyVhRcMkUAr4hiHrHeVTLmqj99N9B4eyajN0lfPtscw6UOci1MwsqnHBy?= =?us-ascii?Q?bfMt3j1nrLnryMtpT11F3+WB4mg5XMN7HlYliGexampRuO7MH76hyqQKY9Qz?= =?us-ascii?Q?rPQdzt0fq6P0nsePN+wdULBMc1ZSfO4oZ+mgAK8TCHgvrHVNmRHxa0qEYVUu?= =?us-ascii?Q?Yg4voQFZ2JWwttmw2pheN0objJGgjO1vXzHu5RKQ3TrXx75+CbfPPPLKywiM?= =?us-ascii?Q?aR6BSs+3Tiqn1Bh65/DGgIVCYj+gVUSD70LOFSgHSQkgpZ1WecwW6j9ifQ2f?= =?us-ascii?Q?fVSIYTPd7Msnzu7abV4TiJo1uvye5EB4XqBL2DAGwv38nPO3LQmGjgFWXg74?= =?us-ascii?Q?VQnhEPc9yL1NDIn0ff71Lz1h+z3P4poljqoblbObRU4yJMggaat4RTdmRSiW?= =?us-ascii?Q?TS9H7AshtwuFbrKuPsU7o5lGr9To1GJ4bvvk5f43fsQgP2CruFhIkgYAsMVa?= =?us-ascii?Q?ozu6ZaEFr3qRQraB649mkApSsnEyzxqEMFate+h7eyiUqIJl/rH++WwUXzcX?= =?us-ascii?Q?5OSy/pQqkBOdbd5mDwSJ360KCyZfY3D9t0job47ymQF1LQbqLYw7ITxGESYI?= =?us-ascii?Q?BzvOdUZTDw=3D=3D?= X-Exchange-RoutingPolicyChecked: 4/OHaMAnEjAgWKiaLCXFGxdaFSTMtpbxFlSyhA2lCXvcmLSTwEMuyNMUJr1MxdkwlwjyF/WOFAB/X1v12IqX0j47ADuimZB5S3F7v1uqVc0uwY8fsV/66DovBY71m64yYM0gHKd/RJH0kQabJpWSzmKNoeIZgY1dYLSgeqeS9ojwtWUnceW8Qf/Y141dQt7M5ZP94kVTVUAU6WllOOXq2xCeto9xUsXHKND2JCkdlZg0K/kzNWMQEBCB46CpXQFkbhAU9AfBH8r5wnFbs6nySzmftqGPyByEycFMQg7IVhKXUeX0UsSwGvwOth7zmkF+X0m89spyni01gsfV/FmK6w== X-MS-Exchange-CrossTenant-Network-Message-Id: 21abccaf-ca4d-4ba6-c60e-08df130b8e4d X-MS-Exchange-CrossTenant-AuthSource: CH3PR11MB435924.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Sep 2026 09:27:26.3675 (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: NIDHvMFrKweNbdA2ZP5IBQpKexR8XkawaRQeCjGDoVIY3YV3GE9K7k2dfHHQMh7g9FLWsdEGnUiHNZluImv38A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB4808 X-OriginatorOrg: intel.com Content-Type: text/plain; charset="utf-8" From: Kuppuswamy Sathyanarayanan A new TDX module ABI reports the Quote size limit in a metadata field. Prior to this, the guest driver uses a fixed 128KB buffer. Intel derived this number from current Quote types, but that is not sustainable as Quotes evolve. 128KB may be too small for Quotes using schemes such as post-quantum cryptography (PQC), where larger certificate chains can increase the Quote size significantly. With this ABI, the guest no longer has to rely on some empirical number. Allocate the Quote buffer based on the reported limit. This avoids wasting memory on platforms that do not need larger Quotes. Older platforms fall back to the default 128KB buffer. As a result, the maximum size of the "outblob" file in configfs-tsm now depends on the TDX module. Because the Quote buffer must be physically contiguous, its size is bound by the buddy allocator's maximum page order (4MB), which should be sufficient for current attestation needs. Signed-off-by: Kuppuswamy Sathyanarayanan Signed-off-by: Peter Fang Reviewed-by: Tony Lindgren Reviewed-by: Kiryl Shutsemau (Meta) --- v4: - Move the PAGE_ALIGN() out of get_quote_buf_size(). [Xiaoyao] - Improve the get_quote_buf_size() pattern again. - Document that the reported size covers every Quote type. [Xiaoyao] - Document that a module update does not change the reported size. [Tony] - Add Tony's Reviewed-by. v3: - Split out from the v2 "Allocate Quote buffer dynamically" patch. Add the dynamic buffer feature on top of the refactoring. [Dave] - Improve the get_quote_buf_size() pattern for better readability. [Dave] - Drop __GFP_NOWARN so an allocation failure warns. [Dave, Rick, Kiryl] - Drop the Reviewed-by tags from v2 (Kiryl, Binbin) as the patch was reworked. --- drivers/virt/coco/tdx-guest/tdx-guest.c | 31 +++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/drivers/virt/coco/tdx-guest/tdx-guest.c b/drivers/virt/coco/td= x-guest/tdx-guest.c index ec886c401fcb..7224a66b65d1 100644 --- a/drivers/virt/coco/tdx-guest/tdx-guest.c +++ b/drivers/virt/coco/tdx-guest/tdx-guest.c @@ -162,7 +162,7 @@ static void tdx_mr_deinit(const struct attribute_group = *mr_grp) * DICE-based attestation uses layered evidence that requires * larger Quote size (~100K). */ -#define GET_QUOTE_BUF_SIZE SZ_128K +#define GET_QUOTE_DEFAULT_BUF_SIZE SZ_128K =20 #define GET_QUOTE_CMD_VER 1 =20 @@ -222,11 +222,34 @@ static void free_quote_buf(void *buf, size_t len) free_pages_exact(buf, len); } =20 +/* + * Return a buffer size large enough for a Quote. This covers all Quote + * types supported by the platform. + */ +static size_t get_quote_buf_size(void) +{ + u32 quote_size =3D tdx_get_max_quote_size(); + size_t len; + + if (quote_size) + /* The reported size does not include the buffer header */ + len =3D TDX_QUOTE_BUF_LEN(quote_size); + else + /* Older TDX modules don't report the size, use the default */ + len =3D GET_QUOTE_DEFAULT_BUF_SIZE; + + return len; +} + static void *alloc_quote_buf(size_t len) { unsigned int count =3D len >> PAGE_SHIFT; void *addr; =20 + /* + * This fails if the requested size exceeds the buddy allocator's + * maximum order (order-10, 4MB). + */ addr =3D alloc_pages_exact(len, GFP_KERNEL | __GFP_ZERO); if (!addr) return NULL; @@ -416,7 +439,11 @@ static int __init tdx_guest_init(void) if (ret) goto deinit_mr; =20 - quote_data_len =3D PAGE_ALIGN(GET_QUOTE_BUF_SIZE); + /* + * The buffer size remains the same throughout the lifecycle of the TD, + * even after a runtime TDX module update. + */ + quote_data_len =3D PAGE_ALIGN(get_quote_buf_size()); quote_data =3D alloc_quote_buf(quote_data_len); if (!quote_data) { pr_err("Failed to allocate Quote buffer\n"); --=20 2.53.0