From nobody Mon Feb 9 18:44:37 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=intel.com Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1626405182812763.3088385184652; Thu, 15 Jul 2021 20:13:02 -0700 (PDT) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-268-6YhhqE5QPdCVPW15B888HA-1; Thu, 15 Jul 2021 23:12:26 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 22297100B3B2; Fri, 16 Jul 2021 03:12:21 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id DF70C1ABDF; Fri, 16 Jul 2021 03:12:20 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id A99E51809CB5; Fri, 16 Jul 2021 03:12:20 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 16G3CDs9005969 for ; Thu, 15 Jul 2021 23:12:13 -0400 Received: by smtp.corp.redhat.com (Postfix) id 4254F209D036; Fri, 16 Jul 2021 03:12:13 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast03.extmail.prod.ext.rdu2.redhat.com [10.11.55.19]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3DCB820962CA for ; Fri, 16 Jul 2021 03:12:10 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 481BC80D090 for ; Fri, 16 Jul 2021 03:12:10 +0000 (UTC) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-597-9z6Q6uWCM5S6YNp-FlG1Uw-1; Thu, 15 Jul 2021 23:12:06 -0400 Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jul 2021 20:12:03 -0700 Received: from duan-server-s2600bt.bj.intel.com ([10.240.192.114]) by fmsmga003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jul 2021 20:12:01 -0700 X-MC-Unique: 6YhhqE5QPdCVPW15B888HA-1 X-MC-Unique: 9z6Q6uWCM5S6YNp-FlG1Uw-1 X-IronPort-AV: E=McAfee;i="6200,9189,10046"; a="296308781" X-IronPort-AV: E=Sophos;i="5.84,244,1620716400"; d="scan'208";a="296308781" X-IronPort-AV: E=Sophos;i="5.84,244,1620716400"; d="scan'208";a="495774444" From: Zhenzhong Duan To: libvir-list@redhat.com Subject: [RFC PATCH v2 7/8] qemu: Add general loader support Date: Fri, 16 Jul 2021 11:10:35 +0800 Message-Id: <20210716031036.189228-8-zhenzhong.duan@intel.com> In-Reply-To: <20210716031036.189228-1-zhenzhong.duan@intel.com> References: <20210716031036.189228-1-zhenzhong.duan@intel.com> MIME-Version: 1.0 X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com Cc: isaku.yamahata@intel.com, pkrempa@redhat.com, jun.j.tian@intel.com, chenyi.qiang@intel.com, phrdina@redhat.com, zhenzhong.duan@intel.com X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1626405184379100001 Content-Type: text/plain; charset="utf-8" Intel TDX requires a general loader to hold its firmware TDVF. Add new loader type VIR_DOMAIN_LOADER_TYPE_GENERIC and VIR_DOMAIN_OS_DEF_FIRMWARE_GENERIC to support this feature. XML looks like: /path/to/TDVF-binary Qemu command line looks like: $QEMU ... \ -device loader,file=3D/path/to/TDVF-binary Signed-off-by: Zhenzhong Duan --- docs/schemas/domaincommon.rng | 1 + src/conf/domain_conf.c | 2 ++ src/conf/domain_conf.h | 2 ++ src/qemu/qemu_capabilities.c | 3 +++ src/qemu/qemu_command.c | 5 +++++ src/qemu/qemu_namespace.c | 1 + 6 files changed, 14 insertions(+) diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index fd77601886..9d0b51ee12 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -319,6 +319,7 @@ rom pflash + generic diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 9510aa7b1f..fbbbe708d4 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -1311,6 +1311,7 @@ VIR_ENUM_IMPL(virDomainLoader, "none", "rom", "pflash", + "generic", ); =20 VIR_ENUM_IMPL(virDomainIOAPIC, @@ -1333,6 +1334,7 @@ VIR_ENUM_IMPL(virDomainOsDefFirmware, "none", "bios", "efi", + "generic", ); =20 VIR_ENUM_IMPL(virDomainOsDefFirmwareFeature, diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index b29045d0c4..99b74683a0 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2163,6 +2163,7 @@ typedef enum { VIR_DOMAIN_LOADER_TYPE_NONE =3D 0, VIR_DOMAIN_LOADER_TYPE_ROM, VIR_DOMAIN_LOADER_TYPE_PFLASH, + VIR_DOMAIN_LOADER_TYPE_GENERIC, =20 VIR_DOMAIN_LOADER_TYPE_LAST } virDomainLoader; @@ -2246,6 +2247,7 @@ typedef enum { VIR_DOMAIN_OS_DEF_FIRMWARE_NONE =3D 0, VIR_DOMAIN_OS_DEF_FIRMWARE_BIOS =3D VIR_DOMAIN_LOADER_TYPE_ROM, VIR_DOMAIN_OS_DEF_FIRMWARE_EFI =3D VIR_DOMAIN_LOADER_TYPE_PFLASH, + VIR_DOMAIN_OS_DEF_FIRMWARE_GENERIC =3D VIR_DOMAIN_LOADER_TYPE_GENERIC, =20 VIR_DOMAIN_OS_DEF_FIRMWARE_LAST } virDomainOsDefFirmware; diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index e9906a2f32..d3c30a17e7 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -5888,6 +5888,9 @@ virQEMUCapsFillDomainLoaderCaps(virDomainCapsLoader *= capsLoader, VIR_DOMAIN_CAPS_ENUM_SET(capsLoader->type, VIR_DOMAIN_LOADER_TYPE_PFLASH); =20 + VIR_DOMAIN_CAPS_ENUM_SET(capsLoader->type, + VIR_DOMAIN_LOADER_TYPE_GENERIC); + =20 VIR_DOMAIN_CAPS_ENUM_SET(capsLoader->readonly, VIR_TRISTATE_BOOL_YES, diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index c53b0e237d..99812e37d8 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -9640,6 +9640,11 @@ qemuBuildDomainLoaderCommandLine(virCommand *cmd, qemuBuldDomainLoaderPflashCommandLine(cmd, loader, qemuCaps); break; =20 + case VIR_DOMAIN_LOADER_TYPE_GENERIC: + virCommandAddArg(cmd, "-device"); + virCommandAddArgFormat(cmd, "loader,file=3D%s", loader->path); + break; + case VIR_DOMAIN_LOADER_TYPE_NONE: case VIR_DOMAIN_LOADER_TYPE_LAST: /* nada */ diff --git a/src/qemu/qemu_namespace.c b/src/qemu/qemu_namespace.c index e902f0eecc..aa635b1375 100644 --- a/src/qemu/qemu_namespace.c +++ b/src/qemu/qemu_namespace.c @@ -569,6 +569,7 @@ qemuDomainSetupLoader(virDomainObj *vm, if (loader) { switch ((virDomainLoader) loader->type) { case VIR_DOMAIN_LOADER_TYPE_ROM: + case VIR_DOMAIN_LOADER_TYPE_GENERIC: *paths =3D g_slist_prepend(*paths, g_strdup(loader->path)); break; =20 --=20 2.25.1