From nobody Mon Feb 9 18:45:32 2026 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=1659427586; cv=none; d=zohomail.com; s=zohoarc; b=NulCLk1fFUNKTnrokU4ZIqI7RJxbRsnpCdNE6T2vSkz2TIcfYsNNFoIdYOaddNltQhnLK89EdLiE31ZyNYvs4MNreZeoddfKHfzZ8Z49qKR7AAidhPqdI/ESdBkc1ziK8UKlh6h9t9FC4PxoGGqHjwHUmqgfe6RAbGAt0j3VrwY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1659427586; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=vcclOuEzfXgouy0xhVVSQ4sGhYH+likWMSOrR4slEYM=; b=WWl23sVTSDPG2Qhq74tYifdcs9gM8YhpHlPMYnc5M0F8VLj5zis9Vge9J00lcubbeKbhEmFqB3DnzD6E3ThsfJ8BuMl62xiA5QjXxoIBqi4DdwletVh1vt/hK5wam2JtLoOrmEkOSC08E20WksuOHjuhyiXvYTsznCkNm5+U6bk= 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 1659427586895374.8744567779079; Tue, 2 Aug 2022 01:06:26 -0700 (PDT) Received: from localhost ([::1]:56406 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oImv3-0001xT-98 for importer@patchew.org; Tue, 02 Aug 2022 04:06:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57618) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oImdo-0004kq-LF for qemu-devel@nongnu.org; Tue, 02 Aug 2022 03:48:36 -0400 Received: from mga11.intel.com ([192.55.52.93]:8273) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oImdm-0005iP-Vj for qemu-devel@nongnu.org; Tue, 02 Aug 2022 03:48:36 -0400 Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Aug 2022 00:48:34 -0700 Received: from lxy-dell.sh.intel.com ([10.239.48.38]) by orsmga008.jf.intel.com with ESMTP; 02 Aug 2022 00:48:30 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1659426514; x=1690962514; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=V6iMxGM1nBAlYnFHJg6pN49HUYwr2bEgyN6VTOxhwDE=; b=l5PJS2fCXMbMPu3+Q45+Ohhg3Y0SuIvuBe0NaTjJRkZ3gpHtMQ51KIO0 CLLDp/J3ds3l47ux0ztOOK3FuVpnc4inTChE87dPgDFVidrNucU+TC3ZN y0YfzNR5hfGGWmO1CYqps0gGdn8YgBeEOMtw/yE6qebD+VnzO6WRoE1nO 5n7PRF/SyHxFGflgUQyhWOPpUzw7LPQRkRJX2pOWSawnSw/ia41p1YQ9Y /EgCACo0O1PdK4ZRKx1SDnPt4Ol8f6khVnhGvXBeSunuu8L5eb+obhw5d yPGe2WdmhbtDPnut7aQsZW8L2Jr4eMfviC+VzUg8zlnChkpsfxgVgB+9U A==; X-IronPort-AV: E=McAfee;i="6400,9594,10426"; a="286908512" X-IronPort-AV: E=Sophos;i="5.93,210,1654585200"; d="scan'208";a="286908512" X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,210,1654585200"; d="scan'208";a="630603911" From: Xiaoyao Li To: Paolo Bonzini , Isaku Yamahata , Gerd Hoffmann , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , "Michael S . Tsirkin" , Marcel Apfelbaum , Cornelia Huck , Marcelo Tosatti , Laszlo Ersek , Eric Blake Cc: Connor Kuehl , erdemaktas@google.com, kvm@vger.kernel.org, qemu-devel@nongnu.org, seanjc@google.com, xiaoyao.li@intel.com Subject: [PATCH v1 09/40] i386/tdx: Update tdx_fixed0/1 bits by tdx_caps.cpuid_config[] Date: Tue, 2 Aug 2022 15:47:19 +0800 Message-Id: <20220802074750.2581308-10-xiaoyao.li@intel.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20220802074750.2581308-1-xiaoyao.li@intel.com> References: <20220802074750.2581308-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.93; envelope-from=xiaoyao.li@intel.com; helo=mga11.intel.com X-Spam_score_int: -51 X-Spam_score: -5.2 X-Spam_bar: ----- X-Spam_report: (-5.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.082, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.998, HK_RANDOM_FROM=0.998, RCVD_IN_DNSWL_HI=-5, 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" X-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1659427589434100003 Content-Type: text/plain; charset="utf-8" tdx_cpuid_lookup[].tdx_fixed0/1 is the QEMU maintained data which reflects TDX restrictions regrading how some CPUID is 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 e3e9a424512e..d12b03fa05c9 100644 --- a/target/i386/kvm/tdx.c +++ b/target/i386/kvm/tdx.c @@ -369,6 +369,34 @@ static void get_tdx_capabilities(void) tdx_caps =3D caps; } =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 (TdxGuest *)object_dynamic_cast(OBJECT(ms->cgs), @@ -378,6 +406,8 @@ int tdx_kvm_init(MachineState *ms, Error **errp) get_tdx_capabilities(); } =20 + update_tdx_cpuid_lookup_by_tdx_caps(); + tdx_guest =3D tdx; =20 return 0; --=20 2.27.0