From nobody Mon May 6 08:08:12 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+81875+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+81875+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1634117224; cv=none; d=zohomail.com; s=zohoarc; b=QYt4OZcJ4VHQCpFlTBroiVYniPuxZ5cA4dw6T5wo9RcxTqF3BeS2izYvnp/tZzWUbV3b55Sjj4LZCEDzj9qg4yNntFGhGLzvshVhCT5fQUUZeNUhX2jUqy6huWq4jS0YMurWRwPAhQwaVP4ieU91euQfvPRokZ8/tKL1rTtmHPA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1634117224; 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=wdUuJctYvrVC9WP7DaSS9bHpgnqHQKmCs+2VwNT9iIQ=; b=TZSgUXCIAVKUgi9KBaxoUznHRf9wKwxD0vmWR52QQ09GxTI03rDVoOPWUmbPfha9Yvnf3fQKM/NDLT/M09ZRWJxr4Wb/l62ECvu3mHBsFQBYFiXWsclBGsqZSBNAYXNcgwGmZBGCuAv9w8F9/2u1DPwIhbueEnLSkeUYopgxTtA= 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+81875+1787277+3901457@groups.io Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1634117224445665.5566030650735; Wed, 13 Oct 2021 02:27:04 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id 0TLSYY1788612xjj7evYbb23; Wed, 13 Oct 2021 02:27:03 -0700 X-Received: from Internet2.beckhoff.com (Internet2.beckhoff.com [194.25.186.210]) by mx.groups.io with SMTP id smtpd.web08.5850.1634117222805419632 for ; Wed, 13 Oct 2021 02:27:03 -0700 X-Received: from 172.17.5.170 by Internet2.beckhoff.com (Tls12, Aes256, Sha384, DiffieHellmanEllipticKey256); Wed, 13 Oct 2021 09:27:00 GMT X-Received: from CorvinK-NB03.beckhoff.com (172.17.62.127) 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.7; Wed, 13 Oct 2021 11:26:59 +0200 From: =?UTF-8?B?Q29ydmluIEvDtmhuZQ==?= To: CC: =?UTF-8?q?Corvin=20K=C3=B6hne?= , Ard Biesheuvel , Jiewen Yao , Jordan Justen , Gerd Hoffmann , Rebecca Cran , Peter Grehan , Subject: [edk2-devel] [PATCH] OvmfPkg/Bhyve: Use QemuFwCfg over BhyveFwCtl Date: Wed, 13 Oct 2021 11:26:23 +0200 Message-ID: <20211013092623.310-1-c.koehne@beckhoff.com> MIME-Version: 1.0 X-Originating-IP: [172.17.62.127] X-ClientProxiedBy: ex06.beckhoff.com (172.17.5.171) 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: LFiB2lnM9YKTQHfsFPhZVoF2x1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1634117223; bh=YnuQVjeuhlXQnMNckcvYSQD/i0+ICfpWGdtq3MeJbKg=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=k9eEpA+fTPWDlP1FLIKwKrVan5kGBVFhEzouOEKX3PGrwXrOXG82FRZDKkBLsTC/Vff o3GMKwPQ+0xKO0g71HhJ+271MSJU1z5VDmLruy8AcfC+bTG5SOYc9vVmmVIKPYxyK3g3U 2ULEX8fzMGh4bQSCwIZtGNQRu9LqdMYvztc= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1634117227376100001 Content-Type: text/plain; charset="utf-8" =EF=BB=BFFrom: Corvin K=C3=B6hne QemuFwCfg is more powerful and has more use cases than BhyveFwCtl. Try to use QemuFwCfg in first place. If that fails, fall back to 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 Acked-by: Gerd Hoffmann Acked-by: Jiewen Yao --- 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 01ee894746..e31579311b 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 d8fe607d1c..4abb31d993 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 @@ -354,6 +353,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 (#81875): https://edk2.groups.io/g/devel/message/81875 Mute This Topic: https://groups.io/mt/86283899/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-