RE: [edk2-devel] [PATCH v5] OvmfPkg/Bhyve: add support for QemuFwCfg

2022-04-27 Thread Corvin Köhne
Hi,

sry, I'm unfamiliar with the merge process and how to try CI.
I've updated my patch. It should pass CI now.


Thanks
Corvin

Beckhoff Automation GmbH & Co. KG | Managing Director: Dipl. Phys. Hans Beckhoff
Registered office: Verl, Germany | Register court: Guetersloh HRA 7075


-Original Message-
From: Rebecca Cran 
Sent: Tuesday, April 26, 2022 4:23 PM
To: de...@edk2.groups.io; jiewen@intel.com; Corvin Köhne 

Cc: Ard Biesheuvel ; Justen, Jordan L 
; FreeBSD Virtualization 
; Gerd Hoffmann ; 
Rebecca Cran ; Peter Grehan 
Subject: Re: [edk2-devel] [PATCH v5] OvmfPkg/Bhyve: add support for QemuFwCfg

CAUTION: External Email!!
Specifically:

The commit message format is not valid:

* 'CC' should be 'Cc'
* 'CC' should be 'Cc'
* 'CC' should be 'Cc'





* 'CC' should be 'Cc'












The 'Cc' email address is not valid:
* Email format is invalid: de...@edk2.groups.io
https://github.com/tianocore/tianocore.github.io/wiki/Commit-Message-Format



--
Rebecca Cran

On 4/26/22 08:07, Yao, Jiewen wrote:
> Hi
> CI failed -https://github.com/tianocore/edk2/pull/2829
>
> Would you please try CI by yourself before you submit next patch?
> It is mandatory process.
>
> Thank you
> Yao Jiewen
>
>> -Original Message-
>> From: Corvin Köhne
>> Sent: Tuesday, April 26, 2022 9:08 PM
>> Cc: Köhne, Corvin; Ard Biesheuvel
>> ; Justen, Jordan L;
>> de...@edk2.groups.io; FreeBSD Virtualization > virtualization@freebsd.org>; Yao, Jiewen ; Gerd
>> Hoffmann; Rebecca Cran; Peter
>> Grehan
>> Subject: [PATCH v5] OvmfPkg/Bhyve: add support for QemuFwCfg
>>
>> 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öhne
>> Reviewed-by: Rebecca Cran
>> Acked-by: Gerd Hoffmann
>> Acked-by: Peter Grehan
>> Acked-by: Jiewen Yao
>> CC: Ard Biesheuvel
>> CC: Jordan Justen
>> CC:de...@edk2.groups.io
>> 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/Bhyve/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/AcpiPlatformDxe/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 != sizeof (*CpuCount)) {
>> +  return EFI_BAD_BUFFER_SIZE;
>> +}
>> +
>> +QemuFwCfgSelectItem (Item);
>> +QemuFwCfgReadBytes (Size, CpuCount);
>> +
>> +return EFI_SUCCESS;
>> +  }
>> +
>> +  //
>> +  // QemuFwCfg not available, try BhyveFwCtl.
>> +  //
>> +  Size = sizeof (*CpuCount);
>> +  if (BhyveFwCtlGet ("hw.ncpu", CpuCount, &Size) == RETURN_SUCCESS) {
>> +return EFI_SUCCESS;
>> +  }
>> +
>> +  return EFI_UNSUPPORTED;
>> +}
>>
>>   STATIC
>>   EFI_STATUS
>> @@ -23,7 +58,6 @@ BhyveInstallAcpiMadtTable (
>> )
>>   {
>> UINT32   CpuCount;
>> -  UINTNcSize;
>> UINTNNewBufferSize;
>> 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 >= sizeof (EFI_ACPI_DESCRIPTION_HEADER));
>>
>> // Query the host for the number of vCPUs
>> -  CpuCount = 0;
>> -  cSize= sizeof (CpuCount);
>> -  if (BhyveFwCtlGet ("hw.ncpu", &CpuCount, &cSize) == RETURN_SUCCESS) {
>> +  Status = BhyveGetCpuCount (&CpuCount);
>> +  if (!EFI_ERROR (Status)) {
>>   DEBUG ((DEBUG_INFO, "Retrieved CpuCount %d\n", CpuCount));
>>   ASSERT (CpuCount >= 1);
>> } else {
>> diff --git a/OvmfPkg/Bhyve/Bhy

[PATCH v6] OvmfPkg/Bhyve: add support for QemuFwCfg

2022-04-27 Thread Corvin Köhne
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öhne 
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/Bhyve/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/AcpiPlatformDxe/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 != sizeof (*CpuCount)) {
+  return EFI_BAD_BUFFER_SIZE;
+}
+
+QemuFwCfgSelectItem (Item);
+QemuFwCfgReadBytes (Size, CpuCount);
+
+return EFI_SUCCESS;
+  }
+
+  //
+  // QemuFwCfg not available, try BhyveFwCtl.
+  //
+  Size = sizeof (*CpuCount);
+  if (BhyveFwCtlGet ("hw.ncpu", CpuCount, &Size) == RETURN_SUCCESS) {
+return EFI_SUCCESS;
+  }
+
+  return EFI_UNSUPPORTED;
+}
 
 STATIC
 EFI_STATUS
@@ -23,7 +58,6 @@ BhyveInstallAcpiMadtTable (
   )
 {
   UINT32   CpuCount;
-  UINTNcSize;
   UINTNNewBufferSize;
   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 >= sizeof (EFI_ACPI_DESCRIPTION_HEADER));
 
   // Query the host for the number of vCPUs
-  CpuCount = 0;
-  cSize= sizeof (CpuCount);
-  if (BhyveFwCtlGet ("hw.ncpu", &CpuCount, &cSize) == RETURN_SUCCESS) {
+  Status = BhyveGetCpuCount (&CpuCount);
+  if (!EFI_ERROR (Status)) {
 DEBUG ((DEBUG_INFO, "Retrieved CpuCount %d\n", CpuCount));
 ASSERT (CpuCount >= 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/DxeSecurityManagementLib.inf
   UefiUsbLib|MdePkg/Library/UefiUsbLib/UefiUsbLib.inf
   
SerializeVariablesLib|OvmfPkg/Library/SerializeVariablesLib/SerializeVariablesLib.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/DxeMemEncryptSevLib.inf
@@ -358,6 +357,7 @@
 !endif
   PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf
   MpInitLib|UefiCpuPkg/Library/MpInitLibUp/MpInitLibUp.inf
+  QemuFwCfgS3Lib|OvmfPkg/Library/QemuFwCfgS3Lib/DxeQemuFwCfgS3LibFwCfg.inf
 
 [LibraryClasses.common.UEFI_APPLICATION]
   PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
-- 
2.11.0

Beckhoff Automation GmbH & Co. KG | Managing Director: Dipl. Phys. Hans Beckhoff
Registered office: Verl, Germany | Register court: Guetersloh HRA 7075






Re: [Bug 262920] bhyve: Guest fails to run: boot/userboot.so: Undefined symbol "getsecs" with WITH_BIND_NOW=yes

2022-04-27 Thread John Kennedy
On Thu, Apr 21, 2022 at 10:38:41PM +, bugzilla-nore...@freebsd.org wrote:
> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=262920
> 
> --- Comment #18 from commit-h...@freebsd.org ---
> A commit in branch stable/13 references this bug:
> 
> URL:
> https://cgit.FreeBSD.org/src/commit/?id=c85cf4929417ce6e11a84d1dfed13654b14c6ae7
> 
> commit c85cf4929417ce6e11a84d1dfed13654b14c6ae7
> Author: Kyle Evans 
> AuthorDate: 2022-04-13 00:29:54 +
> Commit: Kyle Evans 
> CommitDate: 2022-04-21 22:35:01 +
> 
> loader: userboot: provide a getsecs() implementation
> 
> We don't need it for userboot, but it avoids issues with BIND_NOW, so
> just provide it.  time(3) isn't defined but ends up being provided by
> libc linked into the host process, which is generally fine.
> 
> PR: 262920
> Reviewed by:imp, jhb
> 
> (cherry picked from commit 660c1892d5c90500d37f98185326c6287b2b61be)
> 
>  stand/userboot/userboot/main.c | 12 
>  1 file changed, 12 insertions(+)

  Ping again for this to land in 13.1 since we're supposed to hit RC5 today?