public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH v2] OvmfPkg/BhyveBhfPkg: add support for QemuFwCfg
@ 2022-03-29 10:14 Corvin Köhne
  2022-04-06  7:00 ` Corvin Köhne
  0 siblings, 1 reply; 11+ messages in thread
From: Corvin Köhne @ 2022-03-29 10:14 UTC (permalink / raw)
  Cc: Corvin Köhne, Corvin Köhne, Ard Biesheuvel, Jiewen Yao,
	Jordan Justen, Rebecca Cran, Peter Grehan, devel,
	FreeBSD Virtualization, Gerd Hoffmann

From: Corvin Köhne <CorvinK@beckhoff.com>

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 <c.koehne@beckhoff.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
CC: Ard Biesheuvel <ardb+tianocore@kernel.org>
CC: Jiewen Yao <jiewen.yao@intel.com>
CC: Jordan Justen <jordan.l.justen@intel.com>
CC: Rebecca Cran <rebecca@bsdio.com>
CC: Peter Grehan <grehan@freebsd.org>
CC: devel@edk2.groups.io
CC: FreeBSD Virtualization <freebsd-virtualization@freebsd.org>
---
 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 <Library/BaseMemoryLib.h>
 #include <Library/BhyveFwCtlLib.h>
 #include <Library/MemoryAllocationLib.h>
+#include <Library/QemuFwCfgLib.h>             // 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;
-  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 >= 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 5fa08bebd7..14070fd6dd 100644
--- a/OvmfPkg/Bhyve/BhyveX64.dsc
+++ b/OvmfPkg/Bhyve/BhyveX64.dsc
@@ -163,8 +163,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
@@ -355,6 +354,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




^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH v2] OvmfPkg/BhyveBhfPkg: add support for QemuFwCfg
  2022-03-29 10:14 [PATCH v2] OvmfPkg/BhyveBhfPkg: add support for QemuFwCfg Corvin Köhne
@ 2022-04-06  7:00 ` Corvin Köhne
  2022-04-06 17:40   ` [edk2-devel] " Rebecca Cran
  2022-04-06 17:45   ` Rebecca Cran
  0 siblings, 2 replies; 11+ messages in thread
From: Corvin Köhne @ 2022-04-06  7:00 UTC (permalink / raw)
  Cc: Ard Biesheuvel, Jiewen Yao, Jordan Justen, Rebecca Cran,
	Peter Grehan, devel@edk2.groups.io, FreeBSD Virtualization,
	Gerd Hoffmann

Any comments from bhyve folks on that?


Best regards
Corvin

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


-----Original Message-----
From: Corvin Köhne <C.Koehne@beckhoff.com>
Sent: Tuesday, March 29, 2022 12:14 PM
Cc: Corvin Köhne <C.Koehne@beckhoff.com>; Corvin Köhne <C.Koehne@beckhoff.com>; Ard Biesheuvel <ardb+tianocore@kernel.org>; Jiewen Yao <jiewen.yao@intel.com>; Jordan Justen <jordan.l.justen@intel.com>; Rebecca Cran <rebecca@bsdio.com>; Peter Grehan <grehan@freebsd.org>; devel@edk2.groups.io; FreeBSD Virtualization <freebsd-virtualization@freebsd.org>; Gerd Hoffmann <kraxel@redhat.com>
Subject: [PATCH v2] OvmfPkg/BhyveBhfPkg: add support for QemuFwCfg

From: Corvin Köhne <CorvinK@beckhoff.com>

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 <c.koehne@beckhoff.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
CC: Ard Biesheuvel <ardb+tianocore@kernel.org>
CC: Jiewen Yao <jiewen.yao@intel.com>
CC: Jordan Justen <jordan.l.justen@intel.com>
CC: Rebecca Cran <rebecca@bsdio.com>
CC: Peter Grehan <grehan@freebsd.org>
CC: devel@edk2.groups.io
CC: FreeBSD Virtualization <freebsd-virtualization@freebsd.org>
---
 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 <Library/BaseMemoryLib.h>
 #include <Library/BhyveFwCtlLib.h>
 #include <Library/MemoryAllocationLib.h>
+#include <Library/QemuFwCfgLib.h>             // 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;
-  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 >= 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 5fa08bebd7..14070fd6dd 100644
--- a/OvmfPkg/Bhyve/BhyveX64.dsc
+++ b/OvmfPkg/Bhyve/BhyveX64.dsc
@@ -163,8 +163,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
@@ -355,6 +354,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




^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [edk2-devel] [PATCH v2] OvmfPkg/BhyveBhfPkg: add support for QemuFwCfg
  2022-04-06  7:00 ` Corvin Köhne
@ 2022-04-06 17:40   ` Rebecca Cran
  2022-04-06 17:45   ` Rebecca Cran
  1 sibling, 0 replies; 11+ messages in thread
From: Rebecca Cran @ 2022-04-06 17:40 UTC (permalink / raw)
  To: devel, c.koehne
  Cc: Ard Biesheuvel, Jiewen Yao, Jordan Justen, Rebecca Cran,
	Peter Grehan, FreeBSD Virtualization, Gerd Hoffmann

I seem to remember seeing previous feedback that Bhyve developers 
strongly preferred the BhyveFwCtl mechanism. I've been out of the loop 
though (busy with $dayjob) so I don't know if things have changed. 
Hopefully other people can provide feedback.

-- 
Rebecca Cran

On 4/6/22 01:00, Corvin Köhne wrote:
> Any comments from bhyve folks on that?
>
>
> Best regards
> Corvin
>
> Beckhoff Automation GmbH & Co. KG | Managing Director: Dipl. Phys. Hans Beckhoff
> Registered office: Verl, Germany | Register court: Guetersloh HRA 7075
>
>
> -----Original Message-----
> From: Corvin Köhne <C.Koehne@beckhoff.com>
> Sent: Tuesday, March 29, 2022 12:14 PM
> Cc: Corvin Köhne <C.Koehne@beckhoff.com>; Corvin Köhne <C.Koehne@beckhoff.com>; Ard Biesheuvel <ardb+tianocore@kernel.org>; Jiewen Yao <jiewen.yao@intel.com>; Jordan Justen <jordan.l.justen@intel.com>; Rebecca Cran <rebecca@bsdio.com>; Peter Grehan <grehan@freebsd.org>; devel@edk2.groups.io; FreeBSD Virtualization <freebsd-virtualization@freebsd.org>; Gerd Hoffmann <kraxel@redhat.com>
> Subject: [PATCH v2] OvmfPkg/BhyveBhfPkg: add support for QemuFwCfg
>
> From: Corvin Köhne <CorvinK@beckhoff.com>
>
> 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 <c.koehne@beckhoff.com>
> Acked-by: Gerd Hoffmann <kraxel@redhat.com>
> CC: Ard Biesheuvel <ardb+tianocore@kernel.org>
> CC: Jiewen Yao <jiewen.yao@intel.com>
> CC: Jordan Justen <jordan.l.justen@intel.com>
> CC: Rebecca Cran <rebecca@bsdio.com>
> CC: Peter Grehan <grehan@freebsd.org>
> CC: devel@edk2.groups.io
> CC: FreeBSD Virtualization <freebsd-virtualization@freebsd.org>
> ---
>   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 <Library/BaseMemoryLib.h>
>   #include <Library/BhyveFwCtlLib.h>
>   #include <Library/MemoryAllocationLib.h>
> +#include <Library/QemuFwCfgLib.h>             // 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;
> -  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 >= 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 5fa08bebd7..14070fd6dd 100644
> --- a/OvmfPkg/Bhyve/BhyveX64.dsc
> +++ b/OvmfPkg/Bhyve/BhyveX64.dsc
> @@ -163,8 +163,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
> @@ -355,6 +354,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
>
>
>
>
>
> 
>
>


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [edk2-devel] [PATCH v2] OvmfPkg/BhyveBhfPkg: add support for QemuFwCfg
  2022-04-06  7:00 ` Corvin Köhne
  2022-04-06 17:40   ` [edk2-devel] " Rebecca Cran
@ 2022-04-06 17:45   ` Rebecca Cran
  2022-04-06 19:52     ` Peter Grehan
  1 sibling, 1 reply; 11+ messages in thread
From: Rebecca Cran @ 2022-04-06 17:45 UTC (permalink / raw)
  To: devel, c.koehne
  Cc: Ard Biesheuvel, Jiewen Yao, Jordan Justen, Peter Grehan,
	FreeBSD Virtualization, Gerd Hoffmann

[re-posting from my personal email account, since my mail to 
freebsd-virtualization got rejected]

I seem to remember seeing previous feedback that Bhyve developers 
strongly preferred the BhyveFwCtl mechanism. I've been out of the loop 
though (busy with $dayjob) so I don't know if things have changed. 
Hopefully other people can provide feedback.

-- 
Rebecca Cran

On 4/6/22 01:00, Corvin Köhne wrote:
> Any comments from bhyve folks on that?
>
>
> Best regards
> Corvin
>
> Beckhoff Automation GmbH & Co. KG | Managing Director: Dipl. Phys. Hans Beckhoff
> Registered office: Verl, Germany | Register court: Guetersloh HRA 7075
>
>
> -----Original Message-----
> From: Corvin Köhne <C.Koehne@beckhoff.com>
> Sent: Tuesday, March 29, 2022 12:14 PM
> Cc: Corvin Köhne <C.Koehne@beckhoff.com>; Corvin Köhne <C.Koehne@beckhoff.com>; Ard Biesheuvel <ardb+tianocore@kernel.org>; Jiewen Yao <jiewen.yao@intel.com>; Jordan Justen <jordan.l.justen@intel.com>; Rebecca Cran <rebecca@bsdio.com>; Peter Grehan <grehan@freebsd.org>; devel@edk2.groups.io; FreeBSD Virtualization <freebsd-virtualization@freebsd.org>; Gerd Hoffmann <kraxel@redhat.com>
> Subject: [PATCH v2] OvmfPkg/BhyveBhfPkg: add support for QemuFwCfg
>
> From: Corvin Köhne <CorvinK@beckhoff.com>
>
> 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 <c.koehne@beckhoff.com>
> Acked-by: Gerd Hoffmann <kraxel@redhat.com>
> CC: Ard Biesheuvel <ardb+tianocore@kernel.org>
> CC: Jiewen Yao <jiewen.yao@intel.com>
> CC: Jordan Justen <jordan.l.justen@intel.com>
> CC: Rebecca Cran <rebecca@bsdio.com>
> CC: Peter Grehan <grehan@freebsd.org>
> CC: devel@edk2.groups.io
> CC: FreeBSD Virtualization <freebsd-virtualization@freebsd.org>
> ---
>   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 <Library/BaseMemoryLib.h>
>   #include <Library/BhyveFwCtlLib.h>
>   #include <Library/MemoryAllocationLib.h>
> +#include <Library/QemuFwCfgLib.h>             // 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;
> -  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 >= 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 5fa08bebd7..14070fd6dd 100644
> --- a/OvmfPkg/Bhyve/BhyveX64.dsc
> +++ b/OvmfPkg/Bhyve/BhyveX64.dsc
> @@ -163,8 +163,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
> @@ -355,6 +354,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
>
>
>
>
>
> 
>
>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [edk2-devel] [PATCH v2] OvmfPkg/BhyveBhfPkg: add support for QemuFwCfg
  2022-04-06 17:45   ` Rebecca Cran
@ 2022-04-06 19:52     ` Peter Grehan
  2022-04-07  5:24       ` Corvin Köhne
  0 siblings, 1 reply; 11+ messages in thread
From: Peter Grehan @ 2022-04-06 19:52 UTC (permalink / raw)
  To: Rebecca Cran, devel, c.koehne
  Cc: Ard Biesheuvel, Jiewen Yao, Jordan Justen, FreeBSD Virtualization,
	Gerd Hoffmann

> [re-posting from my personal email account, since my mail to  > freebsd-virtualization got rejected]> > I seem to remember seeing 
previous feedback that Bhyve developers > strongly preferred the 
BhyveFwCtl mechanism. I've been out of the loop > though (busy with 
$dayjob) so I don't know if things have changed. > Hopefully other 
people can provide feedback.
  I'm fine with phasing out BhyveFwCtl, so long as backwards compat is 
maintained.

later,

Peter.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [edk2-devel] [PATCH v2] OvmfPkg/BhyveBhfPkg: add support for QemuFwCfg
  2022-04-06 19:52     ` Peter Grehan
@ 2022-04-07  5:24       ` Corvin Köhne
  2022-04-07 16:46         ` Rebecca Cran
  2022-04-07 22:57         ` Peter Grehan
  0 siblings, 2 replies; 11+ messages in thread
From: Corvin Köhne @ 2022-04-07  5:24 UTC (permalink / raw)
  To: Peter Grehan, Rebecca Cran, devel@edk2.groups.io
  Cc: Ard Biesheuvel, Jiewen Yao, Jordan Justen, FreeBSD Virtualization,
	Gerd Hoffmann

Hi Peter and Rebecca,

thanks for your feedback. This patch is backward compatible. It checks
if QemuFwCfg is available and if QemuFwCfg is missing it falls
back to BhyveFwCtl.

So, should I add Reviewed-by (or Acked-by?) Peter and Rebecca to the
commit message?


Thanks
Corvin

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




^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [edk2-devel] [PATCH v2] OvmfPkg/BhyveBhfPkg: add support for QemuFwCfg
  2022-04-07  5:24       ` Corvin Köhne
@ 2022-04-07 16:46         ` Rebecca Cran
  2022-04-07 16:56           ` Mario Marietto
  2022-04-07 22:57         ` Peter Grehan
  1 sibling, 1 reply; 11+ messages in thread
From: Rebecca Cran @ 2022-04-07 16:46 UTC (permalink / raw)
  To: Corvin Köhne, Peter Grehan, devel@edk2.groups.io
  Cc: Ard Biesheuvel, Jiewen Yao, Jordan Justen, FreeBSD Virtualization,
	Gerd Hoffmann

I've just looked at the patch and it looks good, though I haven't tested it.

So yes, please add:


Acked-by: Rebecca Cran <rebecca@bsdio.com>


On 4/6/22 23:24, Corvin Köhne wrote:
> Hi Peter and Rebecca,
>
> thanks for your feedback. This patch is backward compatible. It checks
> if QemuFwCfg is available and if QemuFwCfg is missing it falls
> back to BhyveFwCtl.
>
> So, should I add Reviewed-by (or Acked-by?) Peter and Rebecca to the
> commit message?
>
>
> Thanks
> Corvin
>
> Beckhoff Automation GmbH & Co. KG | Managing Director: Dipl. Phys. Hans Beckhoff
> Registered office: Verl, Germany | Register court: Guetersloh HRA 7075
>
>
>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [edk2-devel] [PATCH v2] OvmfPkg/BhyveBhfPkg: add support for QemuFwCfg
  2022-04-07 16:46         ` Rebecca Cran
@ 2022-04-07 16:56           ` Mario Marietto
  2022-04-08 19:59             ` Pedro Falcato
  0 siblings, 1 reply; 11+ messages in thread
From: Mario Marietto @ 2022-04-07 16:56 UTC (permalink / raw)
  To: Rebecca Cran
  Cc: Corvin Köhne, Peter Grehan, devel, Ard Biesheuvel,
	Jiewen Yao, Jordan Justen, FreeBSD Virtualization, Gerd Hoffmann

[-- Attachment #1: Type: text/plain, Size: 1316 bytes --]

im trying to test the patch on my pc,that has two graphic cards,the intel
coffee lake and the nvidia. i tried to start the pc from the nvidia card
and ive configured the xorg.conf file giving the proper bus id value. in
addition ive loaded the kernel.ko file from the boot loader.conf i have
removed the intel and the drm drivers used by the Intel graphic card.
unfortunately my pc wont boot from the nvidia card. my mouse and keyboard
freezes just before the desktop manager (xfce and kde5) starts.

Il gio 7 apr 2022, 18:46 Rebecca Cran <rebecca@bsdio.com> ha scritto:

> I've just looked at the patch and it looks good, though I haven't tested
> it.
>
> So yes, please add:
>
>
> Acked-by: Rebecca Cran <rebecca@bsdio.com>
>
>
> On 4/6/22 23:24, Corvin Köhne wrote:
> > Hi Peter and Rebecca,
> >
> > thanks for your feedback. This patch is backward compatible. It checks
> > if QemuFwCfg is available and if QemuFwCfg is missing it falls
> > back to BhyveFwCtl.
> >
> > So, should I add Reviewed-by (or Acked-by?) Peter and Rebecca to the
> > commit message?
> >
> >
> > Thanks
> > Corvin
> >
> > Beckhoff Automation GmbH & Co. KG | Managing Director: Dipl. Phys. Hans
> Beckhoff
> > Registered office: Verl, Germany | Register court: Guetersloh HRA 7075
> >
> >
> >
>
>

[-- Attachment #2: Type: text/html, Size: 1762 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [edk2-devel] [PATCH v2] OvmfPkg/BhyveBhfPkg: add support for QemuFwCfg
  2022-04-07  5:24       ` Corvin Köhne
  2022-04-07 16:46         ` Rebecca Cran
@ 2022-04-07 22:57         ` Peter Grehan
  2022-04-08  5:54           ` Corvin Köhne
  1 sibling, 1 reply; 11+ messages in thread
From: Peter Grehan @ 2022-04-07 22:57 UTC (permalink / raw)
  To: Corvin Köhne, Rebecca Cran, devel@edk2.groups.io
  Cc: Ard Biesheuvel, Jiewen Yao, Jordan Justen, FreeBSD Virtualization,
	Gerd Hoffmann

On 4/7/22 3:24 PM, Corvin Köhne wrote:
> Hi Peter and Rebecca,
> 
> thanks for your feedback. This patch is backward compatible. It checks
> if QemuFwCfg is available and if QemuFwCfg is missing it falls
> back to BhyveFwCtl.
> 
> So, should I add Reviewed-by (or Acked-by?) Peter and Rebecca to the
> commit message?

Acked-by: Peter Grehan <grehan@freebsd.org>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [edk2-devel] [PATCH v2] OvmfPkg/BhyveBhfPkg: add support for QemuFwCfg
  2022-04-07 22:57         ` Peter Grehan
@ 2022-04-08  5:54           ` Corvin Köhne
  0 siblings, 0 replies; 11+ messages in thread
From: Corvin Köhne @ 2022-04-08  5:54 UTC (permalink / raw)
  To: Peter Grehan, Rebecca Cran, devel@edk2.groups.io
  Cc: Ard Biesheuvel, Jiewen Yao, Jordan Justen, FreeBSD Virtualization,
	Gerd Hoffmann

Hi Rebecca and Peter,

thank you very much for your feedback.


Best regards
Corvin

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



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [edk2-devel] [PATCH v2] OvmfPkg/BhyveBhfPkg: add support for QemuFwCfg
  2022-04-07 16:56           ` Mario Marietto
@ 2022-04-08 19:59             ` Pedro Falcato
  0 siblings, 0 replies; 11+ messages in thread
From: Pedro Falcato @ 2022-04-08 19:59 UTC (permalink / raw)
  To: edk2-devel-groups-io, marietto2008
  Cc: Rebecca Cran, Corvin Köhne, Peter Grehan, Ard Biesheuvel,
	Jiewen Yao, Jordan Justen, FreeBSD Virtualization, Gerd Hoffmann

[-- Attachment #1: Type: text/plain, Size: 1632 bytes --]

Is this a laptop? Things may not work there because video output is done
through the Intel GPU, even when using the Nvidia GPU, although I'm not
sure.

On Fri, Apr 8, 2022 at 6:49 PM Mario Marietto <marietto2008@gmail.com>
wrote:

> im trying to test the patch on my pc,that has two graphic cards,the intel
> coffee lake and the nvidia. i tried to start the pc from the nvidia card
> and ive configured the xorg.conf file giving the proper bus id value. in
> addition ive loaded the kernel.ko file from the boot loader.conf i have
> removed the intel and the drm drivers used by the Intel graphic card.
> unfortunately my pc wont boot from the nvidia card. my mouse and keyboard
> freezes just before the desktop manager (xfce and kde5) starts.
>
> Il gio 7 apr 2022, 18:46 Rebecca Cran <rebecca@bsdio.com> ha scritto:
>
>> I've just looked at the patch and it looks good, though I haven't tested
>> it.
>>
>> So yes, please add:
>>
>>
>> Acked-by: Rebecca Cran <rebecca@bsdio.com>
>>
>>
>> On 4/6/22 23:24, Corvin Köhne wrote:
>> > Hi Peter and Rebecca,
>> >
>> > thanks for your feedback. This patch is backward compatible. It checks
>> > if QemuFwCfg is available and if QemuFwCfg is missing it falls
>> > back to BhyveFwCtl.
>> >
>> > So, should I add Reviewed-by (or Acked-by?) Peter and Rebecca to the
>> > commit message?
>> >
>> >
>> > Thanks
>> > Corvin
>> >
>> > Beckhoff Automation GmbH & Co. KG | Managing Director: Dipl. Phys. Hans
>> Beckhoff
>> > Registered office: Verl, Germany | Register court: Guetersloh HRA 7075
>> >
>> >
>> >
>>
>> 
>
>

-- 
Pedro Falcato

[-- Attachment #2: Type: text/html, Size: 2448 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2022-04-08 19:59 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-03-29 10:14 [PATCH v2] OvmfPkg/BhyveBhfPkg: add support for QemuFwCfg Corvin Köhne
2022-04-06  7:00 ` Corvin Köhne
2022-04-06 17:40   ` [edk2-devel] " Rebecca Cran
2022-04-06 17:45   ` Rebecca Cran
2022-04-06 19:52     ` Peter Grehan
2022-04-07  5:24       ` Corvin Köhne
2022-04-07 16:46         ` Rebecca Cran
2022-04-07 16:56           ` Mario Marietto
2022-04-08 19:59             ` Pedro Falcato
2022-04-07 22:57         ` Peter Grehan
2022-04-08  5:54           ` Corvin Köhne

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox