From nobody Wed Nov 27 08:49:51 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1700032717; cv=none; d=zohomail.com; s=zohoarc; b=nnY0WeFNH5H7KgyTbqoioLp+LP5HHKqEUgMZ9V8IoHFjAKiQt/0f9/DcYnp951TODDAplEZd4ECkrRl76qcteGvPM3P5Scj7iBCwg5rD2nVsgxVrw7qtpgpcGeYY+hGmTu4W/tjq0Czc1J5RrgQu2K5cVyPiwl0SXUckDQoFgos= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1700032717; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=VcQY+SgJ6aZ0/uAUbO0CM+3C/7OI7W658Ua8Pzjyba0=; b=SyYntOeDnCOVfeGzC/ddJ5DZY8IAcy5W+Sbxi4grgdxB66a07wPD3Q0iqYByTqG3ZHMBDAtLSCiOoOfeDMzHGxBamXsae6LiVM8yavPDnWRwORmN0XONkG+4NJNvI78kF4qJ5HRoxI4zkAX8EsjnWJD0K0wtKSpFjGLEmAMKg/c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1700032717160590.4863774829003; Tue, 14 Nov 2023 23:18:37 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1r3A9t-0003nb-L3; Wed, 15 Nov 2023 02:17:57 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r3A9s-0003fL-7f for qemu-devel@nongnu.org; Wed, 15 Nov 2023 02:17:56 -0500 Received: from mgamail.intel.com ([192.55.52.115]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r3A9q-0002RE-8Y for qemu-devel@nongnu.org; Wed, 15 Nov 2023 02:17:55 -0500 Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Nov 2023 23:17:51 -0800 Received: from lxy-clx-4s.sh.intel.com ([10.239.48.52]) by orsmga003.jf.intel.com with ESMTP; 14 Nov 2023 23:17:46 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1700032674; x=1731568674; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=lWD1LPHBlnEMY0i0TbouVXN+weA+auM2zL9WG6+DAU0=; b=drEZ41c3wUTFPMO4jdqZnEmmswPBrNRHN2zCiT/a2bZtiae3Rw4vtYen kpeJT2QdhyTbEDI+GRwHDJRFfo0ggEDynbJDQLMvzVwICrIWRi0vTm1Gh tFCda75A0I3/+GbDVvI50r78h28stI3RqsPSW9wVtyrTj/bEqpRODyFPA 1H0KEshr522I0tWt0zuAeqQzfCAbtABx1HzRdlvocbUCYGhSXS3Z6y6d6 d6fCpKCOtfZNUVzxWoEPlXKZsJBUHHiOtTt6cg6ZJxWFBYlqZMsSNBVZT bRPK8QlZ+ipXf1AUxPmr0BV3A3FesETgEiARRFjS9nq0PamkLsnKByx8u w==; X-IronPort-AV: E=McAfee;i="6600,9927,10894"; a="390622598" X-IronPort-AV: E=Sophos;i="6.03,304,1694761200"; d="scan'208";a="390622598" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10894"; a="714798129" X-IronPort-AV: E=Sophos;i="6.03,304,1694761200"; d="scan'208";a="714798129" From: Xiaoyao Li To: Paolo Bonzini , David Hildenbrand , Igor Mammedov , "Michael S . Tsirkin" , Marcel Apfelbaum , Richard Henderson , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Cornelia Huck , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eric Blake , Markus Armbruster , Marcelo Tosatti Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org, xiaoyao.li@intel.com, Michael Roth , Sean Christopherson , Claudio Fontana , Gerd Hoffmann , Isaku Yamahata , Chenyi Qiang Subject: [PATCH v3 21/70] i386/tdx: Update tdx_cpuid_lookup[].tdx_fixed0/1 by tdx_caps.cpuid_config[] Date: Wed, 15 Nov 2023 02:14:30 -0500 Message-Id: <20231115071519.2864957-22-xiaoyao.li@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231115071519.2864957-1-xiaoyao.li@intel.com> References: <20231115071519.2864957-1-xiaoyao.li@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=192.55.52.115; envelope-from=xiaoyao.li@intel.com; helo=mgamail.intel.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.999, HK_RANDOM_FROM=0.999, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1700032719344100005 Content-Type: text/plain; charset="utf-8" tdx_cpuid_lookup[].tdx_fixed0/1 is QEMU maintained data which reflects TDX restrictions regrading how some CPUIDs are virtualized by TDX. It's retrieved from TDX spec. However, TDX may change some fixed fields to configurable in the future. Update tdx_cpuid.lookup[].tdx_fixed0/1 fields by removing the bits that reported from TDX module as configurable. This can adapt with the updated TDX (module) automatically. Signed-off-by: Xiaoyao Li --- target/i386/kvm/tdx.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/target/i386/kvm/tdx.c b/target/i386/kvm/tdx.c index eda6e695a884..7fa86858de58 100644 --- a/target/i386/kvm/tdx.c +++ b/target/i386/kvm/tdx.c @@ -374,6 +374,34 @@ static int get_tdx_capabilities(Error **errp) return 0; } =20 +static void update_tdx_cpuid_lookup_by_tdx_caps(void) +{ + KvmTdxCpuidLookup *entry; + FeatureWordInfo *fi; + uint32_t config; + FeatureWord w; + + /* + * Patch tdx_fixed0/1 by tdx_caps that what TDX module reports as + * configurable is not fixed. + */ + for (w =3D 0; w < FEATURE_WORDS; w++) { + fi =3D &feature_word_info[w]; + entry =3D &tdx_cpuid_lookup[w]; + + if (fi->type !=3D CPUID_FEATURE_WORD) { + continue; + } + + config =3D tdx_cap_cpuid_config(fi->cpuid.eax, + fi->cpuid.needs_ecx ? fi->cpuid.ecx = : ~0u, + fi->cpuid.reg); + + entry->tdx_fixed0 &=3D ~config; + entry->tdx_fixed1 &=3D ~config; + } +} + int tdx_kvm_init(MachineState *ms, Error **errp) { TdxGuest *tdx =3D TDX_GUEST(OBJECT(ms->cgs)); @@ -388,6 +416,8 @@ int tdx_kvm_init(MachineState *ms, Error **errp) } } =20 + update_tdx_cpuid_lookup_by_tdx_caps(); + tdx_guest =3D tdx; return 0; } --=20 2.34.1