From nobody Tue May 14 11:54:33 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+88160+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+88160+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1648536918; cv=none; d=zohomail.com; s=zohoarc; b=BKrZQUNuyLyOShtAFs/0GXW8VV4gcMgROs//Bd8k26xFPO0fequKgqBRh/goW/yVDNR8yZfz6BZycUmWrRqQz/dZl+b8gydHDg84SRQlqSX7PSbXm7ElOkfV61lxBVqkWr54lS6b+mTXT9uwlsMkj8N2DicEDxUQHx24K4qqaK8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1648536918; 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; bh=f+Ujk6DljHsJHJoUghgo1mS9e5XZWqJxsMS/mo90Pp8=; b=nk+3vpBqOYKRM0RUBmtn0tzpWcfUQX7oriUWi+uQbM5W5VC9U8MOsRIHnmoltVARTwqpstYHdIpbJIDYo/XjpvgGax+c/Fq55+rU3jwQIsfxrphUMtrLZHT+nOnjWiL3KuatAU8c9kNF7YZ0GrSyY3Gn5zBKU12OGpzNG8mNTZ0= 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+88160+1787277+3901457@groups.io Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1648536918241359.06465523298436; Mon, 28 Mar 2022 23:55:18 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id EJjnYY1788612xOmRcvRrwZ7; Mon, 28 Mar 2022 23:55:17 -0700 X-Received: from netsrv01.beckhoff.com (netsrv01.beckhoff.com [62.159.14.10]) by mx.groups.io with SMTP id smtpd.web11.3663.1648536916872224786 for ; Mon, 28 Mar 2022 23:55:17 -0700 X-Received: from 172.17.5.170 by netsrv01.beckhoff.com (Tls12, Aes256, Sha384, DiffieHellmanEllipticKey256); Tue, 29 Mar 2022 06:55:15 GMT X-Received: from CorvinK-NB03.fritz.box (172.17.204.164) 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.2375.24; Tue, 29 Mar 2022 08:55:12 +0200 From: =?UTF-8?B?Q29ydmluIEvDtmhuZQ==?= To: CC: =?UTF-8?q?Corvin=20K=C3=B6hne?= , =?UTF-8?q?Corvin=20K=C3=B6hne?= , Ard Biesheuvel , Jiewen Yao , Jordan Justen , Gerd Hoffmann , Rebecca Cran , Peter Grehan , , FreeBSD Virtualization Subject: [edk2-devel] [PATCH 1/1] OvmfPkg/BhyveBhfPkg: add support for QemuFwCfg Date: Tue, 29 Mar 2022 08:54:37 +0200 Message-ID: <20220329065437.186-2-c.koehne@beckhoff.com> In-Reply-To: <20220329065437.186-1-c.koehne@beckhoff.com> References: <20220329065437.186-1-c.koehne@beckhoff.com> MIME-Version: 1.0 X-Originating-IP: [172.17.204.164] 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: fekcRD5mfyFquaQrmdRZ1Tzjx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1648536917; bh=up6vK6u1R1WgHknN9ZXp1Ji+0JNDxs0kCKo8f+EFdUs=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=tu/hSHxLmeSmxAUx2TtgNLVgRVmIt5w7SC3WoRUr9b33JZ2C2MuyZLnTo3NDw8r3I0D B/Wo5DT/wDYuKik8egKkJp3GIKs4qxDTLgtsTOsQ2rkUZhP26Tt6C+Dkb6U831YWbvuDn mzMwAqCbJPNQFnqdKaiJzbXyOwGRSKB3OJc= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1648536920412100003 Content-Type: text/plain; charset="utf-8" =EF=BB=BFFrom: Corvin K=C3=B6hne QemuFwCfg 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 CC: Ard Biesheuvel CC: Jiewen Yao CC: Jordan Justen CC: Gerd Hoffmann CC: Rebecca Cran CC: Peter Grehan CC: devel@edk2.groups.io CC: FreeBSD Virtualization Acked-by: Gerd Hoffmann --- 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 5fa08bebd7..14070fd6dd 100644 --- a/OvmfPkg/Bhyve/BhyveX64.dsc +++ b/OvmfPkg/Bhyve/BhyveX64.dsc @@ -163,8 +163,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 @@ -355,6 +354,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 (#88160): https://edk2.groups.io/g/devel/message/88160 Mute This Topic: https://groups.io/mt/90103182/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-