Received: by 2002:ab2:2994:0:b0:1ef:ca3e:3cd5 with SMTP id n20csp503356lqb; Thu, 14 Mar 2024 19:11:17 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCWzDeAR6xIzQBMC0F0W39VxsaClpTxn/Nx5FJxOw6+2AGPiUVVvh+h6FG/3+E8954vIhsJUuf9wXqp+a0ZWpmKzpHkM51Fk+HtjuvgFuQ== X-Google-Smtp-Source: AGHT+IHxQ2XiFU9Lvr02+u4MDyyPL6rTBe6IijZCucryCLVWSuoqr0cVC3Y3mf4WfiYsNlW9VqL1 X-Received: by 2002:a05:6a20:4327:b0:1a1:8ba0:2845 with SMTP id h39-20020a056a20432700b001a18ba02845mr2284195pzk.29.1710468676783; Thu, 14 Mar 2024 19:11:16 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1710468676; cv=pass; d=google.com; s=arc-20160816; b=h5865jKoGagqm4k6LP0NaJb7CpCoY+Pjt/ap3Vdcr1GERbvzPrADU0/s/6uvOoLxgu SVcheQCe24gPO3jV0XZBNRD5oxOTm/tJ90p0sKz01CIO4StyzqXnMBViwki1FCEbFrZc wKt0NFSFMM9j2KZu0Y23tpy6U1s1sZeUfIfEmht2OOXn3apmQnZbmLpERxuvQR/a6gv/ BqrMUC9NqybgZDjYL4tQ8rlvAGbZW1aNiHh1KeQnWbf15418NkHLaQjw5NQE+90lOkrF 89U93/d+HJEVcY8Qlk1+60uexy7deDFkCuLmPVxW8dCRnhEFgxQjlp582ffYUjeXzkrA lPBQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:date:message-id:dkim-signature; bh=dMVN5WYh+0pjy+4Oys2Jq72tGsxq/W7anjXQe3CceRI=; fh=ygLndZxVlvoELVwbkrpvwwBSS1M1F40u2fwxtBXVZHQ=; b=IOWQkvrK+J4PoSmhncf7XtFnlGg5ccwTTzAwjjxtHTfyDpwvWois0eK50IWE002HBO 9GMCxW+z++5nbQU1qQ5fzGL3aajZYSXXH/tnuLsStagv9o0+cgVniyJw8jVbIaseIdTL tG2ZZ6b+fqpLfwAVYrY+N0BZOmCS47Qu5+fDkDVoKgLZIdVRutFD6LosSbXAw2dsu5ru xd5nJQ3WgF7XntwkOn8o/f+F6s4NAmuIyuyPLe26zRg9zrzOYFWBledN81quwLGnh3c5 zkT4EwSgTuZAja/3ldXerJTB5NcRtHonWbEzNpyD4oPyTRTDRtSAcSMbNhF0h7Pa2Gyt MtHQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="AlQ57S/A"; arc=pass (i=1 spf=pass spfdomain=intel.com dkim=pass dkdomain=intel.com dmarc=pass fromdomain=intel.com); spf=pass (google.com: domain of linux-kernel+bounces-103980-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-103980-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id t6-20020a635346000000b005cf5895bfa6si1717988pgl.814.2024.03.14.19.11.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 14 Mar 2024 19:11:16 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-103980-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="AlQ57S/A"; arc=pass (i=1 spf=pass spfdomain=intel.com dkim=pass dkdomain=intel.com dmarc=pass fromdomain=intel.com); spf=pass (google.com: domain of linux-kernel+bounces-103980-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-103980-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 779EF2834B5 for ; Fri, 15 Mar 2024 02:11:16 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id E80017475; Fri, 15 Mar 2024 02:11:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="AlQ57S/A" Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.20]) (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 76BD7613D; Fri, 15 Mar 2024 02:11:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.20 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710468669; cv=none; b=nFhwnGKtUOBdiuhF6FpQmck7FCN3GYaUPYeqd5f/PhWo09yxdPYs7kE5JRbA6/zMdGKtDtJvzG7dxsxXXDauDvC15KqGyEY2VaP4k3vdS6WWVFFifwrnMMWM8qe3KAk2XwrLzUkw9TwuluS6dKNbvan6OvPzc5Pxqp7nMX4aM3c= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710468669; c=relaxed/simple; bh=8TkQWxUkIXsgjC9vDNQgkuuZuaa2KSqmPIJGceGkLew=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=J0Vft+bmLiQbRztlOCJRe7d15J+8LXi2MFcZczPW5iWdK7NwsvrV8oz5gJL/8F2AbCy9RdN+uJyHKVdlcUbWnRtwlM/JO5GS6YPUP3juZICgs+v3Mgg8GYu2EdbLENIdT7LlM/ijJxjlhWO4ze6wjqQnb81HWlW2rIkW/tihMOc= ARC-Authentication-Results:i=1; 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=AlQ57S/A; arc=none smtp.client-ip=198.175.65.20 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1710468663; x=1742004663; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=8TkQWxUkIXsgjC9vDNQgkuuZuaa2KSqmPIJGceGkLew=; b=AlQ57S/AaJykU4ie0p+GdwQuR/T9fF7wwVkj7G7nKthTP5dF9rm14eep Uz4cXG+OWO1qbWLB1CvjkMcIj0yJuEu3k3MZHY4nF1cmsVOmgUcd2OdeL V1UC2YjBMz9Oyko2dbKpyVWM8+Ry3WTIlKTHHeFDMKFbboCyQXmycQArq 2cv+F51ygvggVdzpDVQ0M4pmzkNNyUFbXuwWuWOjAHqxgjNlUs7i0kgFt b2+gz0G4g4vwJs+lW+po0c/xZTaTPoJkC/naA8uCuzmvxLVWF1RH/mdOn xIb6rH6r+AemtWYp+oP5lePzhB3ifzcdx8Rtb7Ac2TFInpdsS5XK1QolJ g==; X-IronPort-AV: E=McAfee;i="6600,9927,11013"; a="5191960" X-IronPort-AV: E=Sophos;i="6.07,127,1708416000"; d="scan'208";a="5191960" Received: from fmviesa007.fm.intel.com ([10.60.135.147]) by orvoesa112.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Mar 2024 19:11:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.07,127,1708416000"; d="scan'208";a="12425872" Received: from xiaoyaol-hp-g830.ccr.corp.intel.com (HELO [10.125.243.127]) ([10.125.243.127]) by fmviesa007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Mar 2024 19:10:58 -0700 Message-ID: Date: Fri, 15 Mar 2024 10:10:56 +0800 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 5/5] x86/virt/tdx: Export global metadata read infrastructure Content-Language: en-US To: "Huang, Kai" , linux-kernel@vger.kernel.org, kvm@vger.kernel.org Cc: x86@kernel.org, dave.hansen@intel.com, kirill.shutemov@linux.intel.com, peterz@infradead.org, tglx@linutronix.de, bp@alien8.de, mingo@redhat.com, hpa@zytor.com, seanjc@google.com, pbonzini@redhat.com, isaku.yamahata@intel.com, jgross@suse.com References: <1c8537b8-bb91-48ee-ae9a-5f54b828b49c@intel.com> From: Xiaoyao Li In-Reply-To: <1c8537b8-bb91-48ee-ae9a-5f54b828b49c@intel.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 3/15/2024 8:24 AM, Huang, Kai wrote: > > > On 13/03/2024 4:44 pm, Xiaoyao Li wrote: >> On 3/1/2024 7:20 PM, Kai Huang wrote: >>> KVM will need to read a bunch of non-TDMR related metadata to create and >>> run TDX guests.  Export the metadata read infrastructure for KVM to use. >>> >>> Specifically, export two helpers: >>> >>> 1) The helper which reads multiple metadata fields to a buffer of a >>>     structure based on the "field ID -> structure member" mapping table. >>> >>> 2) The low level helper which just reads a given field ID. >> >> How about introducing a helper to read a single metadata field >> comparing to 1) instead of the low level helper. >> >> The low level helper tdx_sys_metadata_field_read() requires the data >> buf to be u64 *. So the caller needs to use a temporary variable and >> handle the memcpy when the field is less than 8 bytes. >> >> so why not expose a high level helper to read single field, e.g., >> >> +int tdx_sys_metadata_read_single(u64 field_id, int bytes, void *buf) >> +{ >> +       return stbuf_read_sys_metadata_field(field_id, 0, bytes, buf); >> +} >> +EXPORT_SYMBOL_GPL(tdx_sys_metadata_read_single); > > As replied here where these APIs are (supposedly) to be used: > > https://lore.kernel.org/kvm/e88e5448-e354-4ec6-b7de-93dd8f7786b5@intel.com/ > > I don't see why we need to use a temporary 'u64'.  We can just use it > directly or type cast to 'u16' when needed, which has the same result of > doing explicit memory copy based on size. The way to cast a u64 to u16 is based on the fact that the variable is u64 at first. Given u16 feild_x; We have to have a u64 tmp, passed to tdx_sys_metadata_field_read() to hold the output of metadata read, then filed_x = (u16) tmp; If we pass field_x into tdx_sys_metadata_field_read(), the following (64-16) bits might be corrupted. > So I am not convinced at this stage that we need the code as you > suggested.  At least I believe the current APIs are sufficient for KVM > to use. > > However I'll put more background on how KVM is going to use into the > changelog to justify the current APIs are enough.