From nobody Fri Apr 26 03:36:04 2024 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+89346+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+89346+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=beckhoff.com ARC-Seal: i=1; a=rsa-sha256; t=1651054045; cv=none; d=zohomail.com; s=zohoarc; b=Iqfr4mmXjpK1EweRMoCgrJNbRBtffjkAca+jCqOxGH8isHbsSmus9fR4Laa0JWZTzphX0zFjgBBozFsGi8YtN1/NVNcOgJroQ/xMwcJG6lRJKk5f/5n5Hh7pDzuqUfGC25LGfVNRhGEQ7jN/v2d1Ywd0SzeT9jSlhcT/F/SicFQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1651054045; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Sender:Subject; bh=dzb6rhEwSs2uCahd0ytgz9l63QUdC/uXMbh1YY8Mqc4=; b=S0iJeVTN5LqxzC/X2QqOw2rMU5pmMnrdydp+IRA6o66HLGozlbmyAT8rP2WVBf50AFdO0wIeQQjrPaEycXhq/+X5E86ICK3Rl+UMPtp8cGnLsRpvAY8WUhcNraKiwqf3JwOUGI0t8DJtqU+lEJKtVvH0jdN3GXj9vqZUk+PEQiE= 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+89346+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 165105404529657.705015652011184; Wed, 27 Apr 2022 03:07:25 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id 0FfEYY1788612x8OCoZSiUxe; Wed, 27 Apr 2022 03:07:24 -0700 X-Received: from Internet2.beckhoff.com (Internet2.beckhoff.com [194.25.186.210]) by mx.groups.io with SMTP id smtpd.web12.6402.1651054043577831185 for ; Wed, 27 Apr 2022 03:07:24 -0700 X-Received: from 172.17.5.170 by Internet2.beckhoff.com (Tls12, Aes256, Sha384, DiffieHellmanEllipticKey256); Wed, 27 Apr 2022 10:07:21 GMT X-Received: from CorvinK-NB03.fritz.box (172.17.204.29) by ex04.beckhoff.com (172.17.5.170) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.6; Wed, 27 Apr 2022 12:07:19 +0200 From: =?UTF-8?B?Q29ydmluIEvDtmhuZQ==?= To: CC: =?UTF-8?q?Corvin=20K=C3=B6hne?= , Ard Biesheuvel , Jordan Justen , EDKII devel group , FreeBSD Virtualization , Jiewen Yao , Gerd Hoffmann , Rebecca Cran , Peter Grehan Subject: [edk2-devel] [PATCH v6] OvmfPkg/Bhyve: add support for QemuFwCfg Date: Wed, 27 Apr 2022 12:07:06 +0200 Message-ID: <20220427100708.15277-1-c.koehne@beckhoff.com> MIME-Version: 1.0 X-Originating-IP: [172.17.204.29] X-ClientProxiedBy: ex03.beckhoff.com (172.17.2.169) To ex04.beckhoff.com (172.17.5.170) X-OLX-Disclaimer: EX04.BECKHOFF.COM 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,c.koehne@beckhoff.com X-Gm-Message-State: 9oP2346ly85d9TjSSWWf9V5kx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1651054044; bh=bfQWdnf0O1u4Xl+8OYvKsdaH0OqJzmq5bozjUyA6V9o=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=GpBPQmOS+HZm1y1HrCUS5NFMt8xAS83RAbfzfTUnY6GL3r5M1kVc6YeKU8eRcdK/IFu OihrS2tydP/PstHjksJaxfqOwmsbV6J4iBESH/E7if8m8KI5T6k95ZxbHqXyZI4NQhUAi aRO46OF8jp87ECVA8ayn/5WTTYowQ+TRxnw= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1651054047385100003 Content-Type: text/plain; charset="utf-8" =EF=BB=BFQemuFwCfg is much more powerful than BhyveFwCtl. Sadly, BhyveFwCtl decided to use the same IO ports as QemuFwCfg. It's not possible to use both interfaces simultaneously. So, prefer QemuFwCfg over BhyveFwCtl. Signed-off-by: Corvin K=C3=B6hne Reviewed-by: Rebecca Cran Acked-by: Gerd Hoffmann Acked-by: Peter Grehan Acked-by: Jiewen Yao Cc: Ard Biesheuvel Cc: Jordan Justen Cc: EDKII devel group Cc: FreeBSD Virtualization --- OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf | 1 + OvmfPkg/Bhyve/AcpiPlatformDxe/Bhyve.c | 41 +++++++++++++++++++= +--- OvmfPkg/Bhyve/BhyveX64.dsc | 4 +-- 3 files changed, 40 insertions(+), 6 deletions(-) diff --git a/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf b/OvmfPkg/Bh= yve/AcpiPlatformDxe/AcpiPlatformDxe.inf index 595fd055f9..94c65f32dc 100644 --- a/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf +++ b/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf @@ -43,6 +43,7 @@ MemoryAllocationLib OrderedCollectionLib PcdLib + QemuFwCfgLib UefiBootServicesTableLib UefiDriverEntryPoint UefiLib diff --git a/OvmfPkg/Bhyve/AcpiPlatformDxe/Bhyve.c b/OvmfPkg/Bhyve/AcpiPlat= formDxe/Bhyve.c index 8e80aa33e1..e216a21bfa 100644 --- a/OvmfPkg/Bhyve/AcpiPlatformDxe/Bhyve.c +++ b/OvmfPkg/Bhyve/AcpiPlatformDxe/Bhyve.c @@ -11,6 +11,41 @@ #include #include #include +#include // QemuFwCfgFindFile() + +STATIC +EFI_STATUS +EFIAPI +BhyveGetCpuCount ( + OUT UINT32 *CpuCount + ) +{ + FIRMWARE_CONFIG_ITEM Item; + UINTN Size; + + if (QemuFwCfgIsAvailable ()) { + if (EFI_ERROR (QemuFwCfgFindFile ("opt/bhyve/hw.ncpu", &Item, &Size)))= { + return EFI_NOT_FOUND; + } else if (Size !=3D sizeof (*CpuCount)) { + return EFI_BAD_BUFFER_SIZE; + } + + QemuFwCfgSelectItem (Item); + QemuFwCfgReadBytes (Size, CpuCount); + + return EFI_SUCCESS; + } + + // + // QemuFwCfg not available, try BhyveFwCtl. + // + Size =3D sizeof (*CpuCount); + if (BhyveFwCtlGet ("hw.ncpu", CpuCount, &Size) =3D=3D RETURN_SUCCESS) { + return EFI_SUCCESS; + } + + return EFI_UNSUPPORTED; +} =20 STATIC EFI_STATUS @@ -23,7 +58,6 @@ BhyveInstallAcpiMadtTable ( ) { UINT32 CpuCount; - UINTN cSize; UINTN NewBufferSize; EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER *Madt; EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC_STRUCTURE *LocalApic; @@ -36,9 +70,8 @@ BhyveInstallAcpiMadtTable ( ASSERT (AcpiTableBufferSize >=3D sizeof (EFI_ACPI_DESCRIPTION_HEADER)); =20 // Query the host for the number of vCPUs - CpuCount =3D 0; - cSize =3D sizeof (CpuCount); - if (BhyveFwCtlGet ("hw.ncpu", &CpuCount, &cSize) =3D=3D RETURN_SUCCESS) { + Status =3D BhyveGetCpuCount (&CpuCount); + if (!EFI_ERROR (Status)) { DEBUG ((DEBUG_INFO, "Retrieved CpuCount %d\n", CpuCount)); ASSERT (CpuCount >=3D 1); } else { diff --git a/OvmfPkg/Bhyve/BhyveX64.dsc b/OvmfPkg/Bhyve/BhyveX64.dsc index a8fa4d38ab..002cef32a3 100644 --- a/OvmfPkg/Bhyve/BhyveX64.dsc +++ b/OvmfPkg/Bhyve/BhyveX64.dsc @@ -164,8 +164,7 @@ SecurityManagementLib|MdeModulePkg/Library/DxeSecurityManagementLib/DxeS= ecurityManagementLib.inf UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf SerializeVariablesLib|OvmfPkg/Library/SerializeVariablesLib/SerializeVar= iablesLib.inf - QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgLibNull.inf - QemuFwCfgS3Lib|OvmfPkg/Library/QemuFwCfgS3Lib/BaseQemuFwCfgS3LibNull.inf + QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgDxeLib.inf BhyveFwCtlLib|OvmfPkg/Library/BhyveFwCtlLib/BhyveFwCtlLib.inf VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf MemEncryptSevLib|OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLi= b.inf @@ -358,6 +357,7 @@ !endif PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf MpInitLib|UefiCpuPkg/Library/MpInitLibUp/MpInitLibUp.inf + QemuFwCfgS3Lib|OvmfPkg/Library/QemuFwCfgS3Lib/DxeQemuFwCfgS3LibFwCfg.inf =20 [LibraryClasses.common.UEFI_APPLICATION] PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf --=20 2.11.0 Beckhoff Automation GmbH & Co. KG | Managing Director: Dipl. Phys. Hans Bec= khoff Registered office: Verl, Germany | Register court: Guetersloh HRA 7075 -=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 (#89346): https://edk2.groups.io/g/devel/message/89346 Mute This Topic: https://groups.io/mt/90727340/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-