From nobody Mon Feb 9 12:29:45 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+84390+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+84390+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1638785591; cv=none; d=zohomail.com; s=zohoarc; b=TZZyMNKP4EtNDjhOgjhwE6YBBcmw5qEgsB6E/0cZ9VLlX8Q5d7b0kn3t1lzc+li1hrd6Cri4DXGjHnQC7Lv+83V7drLTV4D0usPxuDbzgDAdJrP9GsRi9r76jKx+SwImMLADuLZGbYPXCp2wlRkAwVcslGG3ZvcX6CNE6UfcVLA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1638785591; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=fw9++AJZ8uBc7VoTxN045qSgxv9z4RVWwtOBa85GHlI=; b=BTssHXUHc4bMR8X6bXMLAG/PPPofXIIayXL4rOolQLOcCAA1lVdcUwScRHasiOfL2yYDM0rEBz4bzhW8z0hu0EuUS0J+X7PqdyG52Y/hlylaaydrOPEht0Z/fZJnQA5YXL+YCFpl4HC1ejqj+iELqOH8r0DWSUUIbX4+gwgFu88= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+84390+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1638785591253779.7918089043404; Mon, 6 Dec 2021 02:13:11 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id 247rYY1788612xaPwDXBYUTV; Mon, 06 Dec 2021 02:13:10 -0800 X-Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mx.groups.io with SMTP id smtpd.web09.49522.1638785590053682255 for ; Mon, 06 Dec 2021 02:13:10 -0800 X-IronPort-AV: E=McAfee;i="6200,9189,10189"; a="224539951" X-IronPort-AV: E=Sophos;i="5.87,291,1631602800"; d="scan'208";a="224539951" X-Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Dec 2021 02:13:09 -0800 X-IronPort-AV: E=Sophos;i="5.87,291,1631602800"; d="scan'208";a="461754924" X-Received: from deyangko-mobl1.ccr.corp.intel.com (HELO sboeuf-mobl.home) ([10.252.18.29]) by orsmga006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Dec 2021 02:13:07 -0800 From: sebastien.boeuf@intel.com To: devel@edk2.groups.io Cc: jiewen.yao@intel.com, jordan.l.justen@intel.com, kraxel@redhat.com, sebastien.boeuf@intel.com Subject: [edk2-devel] [PATCH v3 3/5] OvmfPkg: Retrieve SMBIOS from Cloud Hypervisor Date: Mon, 6 Dec 2021 11:12:20 +0100 Message-Id: <05b4867b1e2184c2cdd7357363d72d81bf33cf2f.1638785380.git.sebastien.boeuf@intel.com> In-Reply-To: References: MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,sebastien.boeuf@intel.com X-Gm-Message-State: 7v4lCfBKTFdUbqXNGESg4eIux1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1638785590; bh=sC3aZvQe3bEXBNvmBTZI6yB2d3/842hfdvd7Hwyp2z0=; h=Cc:Content-Type:Date:From:Reply-To:Subject:To; b=dEoff7LsPwpz9Sccfaph9V69KuAVbcLPHGcgwnYz+Ajlptc1GZCMl51uK73mgEmLzbf eQDUInUZ2UFrlquk7T0Gkwv217vUxpxva7DlFuS2gdCZDCn+hRtwRiHIWC3tg0QysZmC4 1tJ8DreaS3R/FYFF1WioLNNlP4GMqX61GoI= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1638785593155100003 Content-Type: text/plain; charset="utf-8" From: Sebastien Boeuf Add a fallback on the SMBIOS code to find the SMBIOS table for Cloud Hypervisor if it couldn't be found for Qemu through fw_cfg. Reviewed-by: Gerd Hoffmann Signed-off-by: Rob Bradford Signed-off-by: Sebastien Boeuf --- OvmfPkg/Include/IndustryStandard/CloudHv.h | 5 +++ OvmfPkg/SmbiosPlatformDxe/CloudHv.c | 32 +++++++++++++++++++ OvmfPkg/SmbiosPlatformDxe/EntryPoint.c | 20 +++++++++--- OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.h | 11 +++++++ .../SmbiosPlatformDxe/SmbiosPlatformDxe.inf | 2 ++ 5 files changed, 65 insertions(+), 5 deletions(-) create mode 100644 OvmfPkg/SmbiosPlatformDxe/CloudHv.c diff --git a/OvmfPkg/Include/IndustryStandard/CloudHv.h b/OvmfPkg/Include/I= ndustryStandard/CloudHv.h index 6ab18ad50d..ad0e170795 100644 --- a/OvmfPkg/Include/IndustryStandard/CloudHv.h +++ b/OvmfPkg/Include/IndustryStandard/CloudHv.h @@ -32,4 +32,9 @@ // #define CLOUDHV_MMIO_HOLE_SIZE 0x38000000 =20 +// +// SMBIOS address +// +#define CLOUDHV_SMBIOS_ADDRESS 0xf0000 + #endif // __CLOUDHV_H__ diff --git a/OvmfPkg/SmbiosPlatformDxe/CloudHv.c b/OvmfPkg/SmbiosPlatformDx= e/CloudHv.c new file mode 100644 index 0000000000..e9ce00b6eb --- /dev/null +++ b/OvmfPkg/SmbiosPlatformDxe/CloudHv.c @@ -0,0 +1,32 @@ +/** @file + Find Cloud Hypervisor SMBIOS data. + + SPDX-License-Identifier: BSD-2-Clause-Patent +**/ + +#include // CLOUDHV_SMBIOS_ADDRESS +#include // SMBIOS_TABLE_3_0_ENTRY_POINT + +/** + Locates and extracts Cloud Hypervisor SMBIOS data + + @return Address of extracted Cloud Hypervisor SMBIOS data + +**/ +UINT8 * +GetCloudHvSmbiosTables ( + VOID + ) +{ + SMBIOS_TABLE_3_0_ENTRY_POINT *CloudHvTables =3D (VOID *)CLOUDHV_SMBIOS_A= DDRESS; + + if (CloudHvTables->AnchorString[0] =3D=3D '_' && + CloudHvTables->AnchorString[1] =3D=3D 'S' && + CloudHvTables->AnchorString[2] =3D=3D 'M' && + CloudHvTables->AnchorString[3] =3D=3D '3' && + CloudHvTables->AnchorString[4] =3D=3D '_') { + return (UINT8*)(UINTN)CloudHvTables->TableAddress; + } + + return NULL; +} diff --git a/OvmfPkg/SmbiosPlatformDxe/EntryPoint.c b/OvmfPkg/SmbiosPlatfor= mDxe/EntryPoint.c index c72ba1d14b..992ae5e2ab 100644 --- a/OvmfPkg/SmbiosPlatformDxe/EntryPoint.c +++ b/OvmfPkg/SmbiosPlatformDxe/EntryPoint.c @@ -5,6 +5,7 @@ **/ =20 #include // FreePool() +#include // CLOUDHV_DEVICE_ID =20 #include "SmbiosPlatformDxe.h" =20 @@ -27,15 +28,24 @@ SmbiosTablePublishEntry ( { EFI_STATUS Status; UINT8 *SmbiosTables; + UINT16 HostBridgeDevId; =20 Status =3D EFI_NOT_FOUND; // - // Add QEMU SMBIOS data if found + // Add SMBIOS data if found // - SmbiosTables =3D GetQemuSmbiosTables (); - if (SmbiosTables !=3D NULL) { - Status =3D InstallAllStructures (SmbiosTables); - FreePool (SmbiosTables); + HostBridgeDevId =3D PcdGet16 (PcdOvmfHostBridgePciDevId); + if (HostBridgeDevId =3D=3D CLOUDHV_DEVICE_ID) { + SmbiosTables =3D GetCloudHvSmbiosTables (); + if (SmbiosTables !=3D NULL) { + Status =3D InstallAllStructures (SmbiosTables); + } + } else { + SmbiosTables =3D GetQemuSmbiosTables (); + if (SmbiosTables !=3D NULL) { + Status =3D InstallAllStructures (SmbiosTables); + FreePool (SmbiosTables); + } } =20 return Status; diff --git a/OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.h b/OvmfPkg/Smbios= PlatformDxe/SmbiosPlatformDxe.h index 4286a80170..c39206f151 100644 --- a/OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.h +++ b/OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.h @@ -33,4 +33,15 @@ GetQemuSmbiosTables ( VOID ); =20 +/** + Locates and extracts Cloud Hypervisor SMBIOS data + + @return Address of extracted Cloud Hypervisor SMBIOS data + +**/ +UINT8 * +GetCloudHvSmbiosTables ( + VOID + ); + #endif diff --git a/OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf b/OvmfPkg/Smbi= osPlatformDxe/SmbiosPlatformDxe.inf index e239a631f2..0066bbc922 100644 --- a/OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf +++ b/OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf @@ -24,6 +24,7 @@ # =20 [Sources] + CloudHv.c EntryPoint.c Qemu.c SmbiosPlatformDxe.c @@ -42,6 +43,7 @@ UefiDriverEntryPoint =20 [Pcd] + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId gUefiOvmfPkgTokenSpaceGuid.PcdQemuSmbiosValidated =20 [Protocols] --=20 2.30.2 --------------------------------------------------------------------- Intel Corporation SAS (French simplified joint stock company) Registered headquarters: "Les Montalets"- 2, rue de Paris,=20 92196 Meudon Cedex, France Registration Number: 302 456 199 R.C.S. NANTERRE Capital: 4,572,000 Euros This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies. -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#84390): https://edk2.groups.io/g/devel/message/84390 Mute This Topic: https://groups.io/mt/87537177/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-