[edk2-devel] [PATCH] OvmfPkg: fix DEC spec violation introduced by Bhyve addition

Laszlo Ersek posted 1 patch 3 years, 8 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/edk2 tags/patchew/20200801155024.16439-1-lersek@redhat.com
OvmfPkg/Bhyve/BhyvePkg.dec                                                                                                                       | 171 --------------------
OvmfPkg/OvmfPkg.dec                                                                                                                              |   5 +
OvmfPkg/Bhyve/BhyvePkgX64.dsc                                                                                                                    |   5 +-
OvmfPkg/Bhyve/BhyvePkgX64.fdf                                                                                                                    |   2 +-
OvmfPkg/{Bhyve => }/Include/Library/BhyveFwCtlLib.h                                                                                              |   0
OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf                                                                                                |   2 +-
OvmfPkg/Bhyve/AcpiTables/AcpiTables.inf                                                                                                          |   2 +-
OvmfPkg/Bhyve/BhyveRfbDxe/BhyveRfbDxe.inf                                                                                                        |   2 +-
OvmfPkg/{Bhyve => }/Library/BhyveFwCtlLib/BhyveFwCtlLib.inf                                                                                      |   2 +-
OvmfPkg/{Bhyve/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf => Library/PlatformBootManagerLibBhyve/PlatformBootManagerLibBhyve.inf} |   2 +-
OvmfPkg/{Bhyve/Library/PlatformBootManagerLib => Library/PlatformBootManagerLibBhyve}/BdsPlatform.h                                              |   0
OvmfPkg/{Bhyve => }/Library/BhyveFwCtlLib/BhyveFwCtlLib.c                                                                                        |   0
OvmfPkg/{Bhyve/Library/PlatformBootManagerLib => Library/PlatformBootManagerLibBhyve}/BdsPlatform.c                                              |   0
OvmfPkg/{Bhyve/Library/PlatformBootManagerLib => Library/PlatformBootManagerLibBhyve}/PlatformData.c                                             |   0
14 files changed, 14 insertions(+), 179 deletions(-)
[edk2-devel] [PATCH] OvmfPkg: fix DEC spec violation introduced by Bhyve addition
Posted by Laszlo Ersek 3 years, 8 months ago
Sean reports that having two DEC files under OvmfPkg violates the DEC
spec:

> An EDK II Package (directory) is a directory that contains an EDK II
> package declaration (DEC) file. Only one DEC file is permitted per
> directory. EDK II Packages cannot be nested within other EDK II
> Packages.

This issue originates from commit 656419f922c0 ("Add BhyvePkg, to support
the bhyve hypervisor", 2020-07-31).

Remedy the problem as follows. (Note that these steps are not split to
multiple patches in order to keep Bhyve buildable across the transition.)

(1) Delete "OvmfPkg/Bhyve/BhyvePkg.dec".

(2) Point the [Packages] sections of the Bhyve-specific AcpiPlatformDxe,
    BhyveRfbDxe, and BhyveFwCtlLib INF files to "OvmfPkg.dec".

(3) Migrate the artifacts that "BhyvePkg.dec" used to have on top of
    "OvmfPkg.dec" as follows:

(3a) Merge the copyright notices from Rebecca Cran and Pluribus Networks
     into "OvmfPkg.dec".

(3b) Merge the "BhyveFwCtlLib" class header definition into "OvmfPkg.dec".

(3c) Merge value 0x2F8 for the fixed PcdDebugIoPort into
     "BhyvePkgX64.dsc".

(4) Unnest the the Include/Library/ and Library/ subtrees from under
    OvmfPkg/Bhyve to the corresponding, preexistent subtrees in OvmfPkg.
    The goal is to keep the [Includes] section in the "OvmfPkg.dec" file
    unchanged, plus simplify references in "BhyvePkgX64.dsc". Non-library
    modules remain under "OvmfPkg/Bhyve/".

(4a) The BhyveFwCtlLib class header, and sole instance, are already
     uniquely named, so their movements need not involve file renames.

(4b) Rename the Bhyve-specific PlatformBootManagerLib instance to
     PlatformBootManagerLibBhyve, in additon to moving it, for
     distinguishing it from OvmfPkg's preexistent lib instance. Apply the
     name change to all three of the lib instance directory name, the INF
     file, and the BASE_NAME define in the INF file.

(4c) Update lib class resolutions in "BhyvePkgX64.dsc" accordingly.

(5) Replace the "ACPI table storage" FILE_GUID in
    "OvmfPkg/Bhyve/AcpiTables/AcpiTables.inf" with a new GUID, and
    open-code the "ACPI table storage" GUID in the "ACPITABLE" FDF rule
    instead, replacing $(NAMED_GUID). This step is necessary because CI
    requires unique FILE_GUIDs over all INF files, and OVMF's original
    "AcpiTables.inf" already uses the "ACPI table storage" GUID as
    FILE_GUID.

Cc: Ard Biesheuvel <ard.biesheuvel@arm.com>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Philippe Mathieu-Daudé <philmd@redhat.com>
Cc: Rebecca Cran <rebecca@bsdio.com>
Cc: Sean Brogan <spbrogan@outlook.com>
Fixes: 656419f922c047a3c48bd3f4ecea7d8e87d0b761
Reported-by: Sean Brogan <spbrogan@outlook.com>
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
---

Notes:
    - Repo:   https://github.com/lersek/edk2.git
      Branch: bhyve_dec_fix
    
    - Personal CI build: https://github.com/tianocore/edk2/pull/846
    
    - Because the DEC spec violation is breaking CI, I'm going to push this
      as soon as Rebecca (and hopefully Sean) confirm the change is OK.
    
    - Rebecca, please account for the movements / renames in the present
      patch in your upcoming patch for "Maintainers.txt". Thanks!

 OvmfPkg/Bhyve/BhyvePkg.dec                                                                                                                       | 171 --------------------
 OvmfPkg/OvmfPkg.dec                                                                                                                              |   5 +
 OvmfPkg/Bhyve/BhyvePkgX64.dsc                                                                                                                    |   5 +-
 OvmfPkg/Bhyve/BhyvePkgX64.fdf                                                                                                                    |   2 +-
 OvmfPkg/{Bhyve => }/Include/Library/BhyveFwCtlLib.h                                                                                              |   0
 OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf                                                                                                |   2 +-
 OvmfPkg/Bhyve/AcpiTables/AcpiTables.inf                                                                                                          |   2 +-
 OvmfPkg/Bhyve/BhyveRfbDxe/BhyveRfbDxe.inf                                                                                                        |   2 +-
 OvmfPkg/{Bhyve => }/Library/BhyveFwCtlLib/BhyveFwCtlLib.inf                                                                                      |   2 +-
 OvmfPkg/{Bhyve/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf => Library/PlatformBootManagerLibBhyve/PlatformBootManagerLibBhyve.inf} |   2 +-
 OvmfPkg/{Bhyve/Library/PlatformBootManagerLib => Library/PlatformBootManagerLibBhyve}/BdsPlatform.h                                              |   0
 OvmfPkg/{Bhyve => }/Library/BhyveFwCtlLib/BhyveFwCtlLib.c                                                                                        |   0
 OvmfPkg/{Bhyve/Library/PlatformBootManagerLib => Library/PlatformBootManagerLibBhyve}/BdsPlatform.c                                              |   0
 OvmfPkg/{Bhyve/Library/PlatformBootManagerLib => Library/PlatformBootManagerLibBhyve}/PlatformData.c                                             |   0
 14 files changed, 14 insertions(+), 179 deletions(-)

diff --git a/OvmfPkg/Bhyve/BhyvePkg.dec b/OvmfPkg/Bhyve/BhyvePkg.dec
deleted file mode 100644
index 8884b6276c64..000000000000
--- a/OvmfPkg/Bhyve/BhyvePkg.dec
+++ /dev/null
@@ -1,171 +0,0 @@
-#
-#  Copyright (c) 2020, Rebecca Cran <rebecca@bsdio.com>
-#  Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
-#  Copyright (c) 2014, Pluribus Networks, Inc.
-#
-#  SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-##
-
-[Defines]
-  DEC_SPECIFICATION              = 0x00010005
-  PACKAGE_NAME                   = BhyvePkg
-  PACKAGE_GUID                   = 178345e1-6ac0-439d-a3df-9abf70dccd57
-  PACKAGE_VERSION                = 0.1
-
-[Includes]
-  Include
-  ../Include
-
-[LibraryClasses]
-  ##  @libraryclass  Save and restore variables using a file
-  #
-  NvVarsFileLib|Include/Library/NvVarsFileLib.h
-
-  ##  @libraryclass  Provides services to work with PCI capabilities in PCI
-  #                  config space.
-  PciCapLib|Include/Library/PciCapLib.h
-
-  ##  @libraryclass  Layered on top of PciCapLib, allows clients to plug an
-  #                  EFI_PCI_IO_PROTOCOL backend into PciCapLib, for config
-  #                  space access.
-  PciCapPciIoLib|Include/Library/PciCapPciIoLib.h
-
-  ##  @libraryclass  Layered on top of PciCapLib, allows clients to plug a
-  #                  PciSegmentLib backend into PciCapLib, for config space
-  #                  access.
-  PciCapPciSegmentLib|Include/Library/PciCapPciSegmentLib.h
-
-  ##  @libraryclass  Register a status code handler for printing the Boot
-  #                  Manager's LoadImage() and StartImage() preparations, and
-  #                  return codes, to the UEFI console.
-  PlatformBmPrintScLib|Include/Library/PlatformBmPrintScLib.h
-
-  ##  @libraryclass  Serialize (and deserialize) variables
-  #
-  SerializeVariablesLib|Include/Library/SerializeVariablesLib.h
-
-  ##  @libraryclass  Access bhyve's firmware control interface
-  #
-  BhyveFwCtlLib|Include/Library/BhyveFwCtlLib.h
-
-[Guids]
-  gUefiOvmfPkgTokenSpaceGuid          = {0x93bb96af, 0xb9f2, 0x4eb8, {0x94, 0x62, 0xe0, 0xba, 0x74, 0x56, 0x42, 0x36}}
-  gOvmfPlatformConfigGuid             = {0x7235c51c, 0x0c80, 0x4cab, {0x87, 0xac, 0x3b, 0x08, 0x4a, 0x63, 0x04, 0xb1}}
-  gVirtioMmioTransportGuid            = {0x837dca9e, 0xe874, 0x4d82, {0xb2, 0x9a, 0x23, 0xfe, 0x0e, 0x23, 0xd1, 0xe2}}
-  gRootBridgesConnectedEventGroupGuid = {0x24a2d66f, 0xeedd, 0x4086, {0x90, 0x42, 0xf2, 0x6e, 0x47, 0x97, 0xee, 0x69}}
-
-[Protocols]
-  gVirtioDeviceProtocolGuid           = {0xfa920010, 0x6785, 0x4941, {0xb6, 0xec, 0x49, 0x8c, 0x57, 0x9f, 0x16, 0x0a}}
-  gIoMmuAbsentProtocolGuid            = {0xf8775d50, 0x8abd, 0x4adf, {0x92, 0xac, 0x85, 0x3e, 0x51, 0xf6, 0xc8, 0xdc}}
-
-[PcdsFixedAtBuild]
-  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvBase|0x0|UINT32|0
-  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvSize|0x0|UINT32|1
-  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDxeMemFvBase|0x0|UINT32|0x15
-  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDxeMemFvSize|0x0|UINT32|0x16
-
-  ## This flag is used to control the destination port for PlatformDebugLibIoPort
-  gUefiOvmfPkgTokenSpaceGuid.PcdDebugIoPort|0x2F8|UINT16|4
-
-  ## When VirtioScsiDxe is instantiated for a HBA, the numbers of targets and
-  #  LUNs are retrieved from the host during virtio-scsi setup.
-  #  MdeModulePkg/Bus/Scsi/ScsiBusDxe then scans all MaxTarget * MaxLun
-  #  possible devices. This can take extremely long, for example with
-  #  MaxTarget=255 and MaxLun=16383. The *inclusive* constants below limit
-  #  MaxTarget and MaxLun, independently, should the host report higher values,
-  #  so that scanning the number of devices given by their product is still
-  #  acceptably fast.
-  gUefiOvmfPkgTokenSpaceGuid.PcdVirtioScsiMaxTargetLimit|31|UINT16|6
-  gUefiOvmfPkgTokenSpaceGuid.PcdVirtioScsiMaxLunLimit|7|UINT32|7
-
-  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageEventLogBase|0x0|UINT32|0x8
-  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageEventLogSize|0x0|UINT32|0x9
-  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareFdSize|0x0|UINT32|0xa
-  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareBlockSize|0|UINT32|0xb
-  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageVariableBase|0x0|UINT32|0xc
-  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageFtwSpareBase|0x0|UINT32|0xd
-  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageFtwWorkingBase|0x0|UINT32|0xe
-  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFdBaseAddress|0x0|UINT32|0xf
-  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesBase|0x0|UINT32|0x11
-  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesSize|0x0|UINT32|0x12
-  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase|0x0|UINT32|0x13
-  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize|0x0|UINT32|0x14
-  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfLockBoxStorageBase|0x0|UINT32|0x18
-  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfLockBoxStorageSize|0x0|UINT32|0x19
-  gUefiOvmfPkgTokenSpaceGuid.PcdGuidedExtractHandlerTableSize|0x0|UINT32|0x1a
-  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDecompressionScratchEnd|0x0|UINT32|0x1f
-
-  ## Pcd8259LegacyModeMask defines the default mask value for platform. This
-  #  value is determined.
-  #  1) If platform only support pure UEFI, value should be set to 0xFFFF or
-  #     0xFFFE; Because only clock interrupt is allowed in legacy mode in pure
-  #     UEFI platform.
-  #  2) If platform install CSM and use thunk module:
-  #     a) If thunk call provided by CSM binary requires some legacy interrupt
-  #        support, the corresponding bit should be opened as 0.
-  #        For example, if keyboard interfaces provided CSM binary use legacy
-  #        keyboard interrupt in 8259 bit 1, then the value should be set to
-  #        0xFFFC.
-  #     b) If all thunk call provied by CSM binary do not require legacy
-  #        interrupt support, value should be set to 0xFFFF or 0xFFFE.
-  #
-  #  The default value of legacy mode mask could be changed by
-  #  EFI_LEGACY_8259_PROTOCOL->SetMask(). But it is rarely need change it
-  #  except some special cases such as when initializing the CSM binary, it
-  #  should be set to 0xFFFF to mask all legacy interrupt. Please restore the
-  #  original legacy mask value if changing is made for these special case.
-  gUefiOvmfPkgTokenSpaceGuid.Pcd8259LegacyModeMask|0xFFFF|UINT16|0x3
-
-  ## Pcd8259LegacyModeEdgeLevel defines the default edge level for legacy
-  #  mode's interrrupt controller.
-  #  For the corresponding bits, 0 = Edge triggered and 1 = Level triggered.
-  gUefiOvmfPkgTokenSpaceGuid.Pcd8259LegacyModeEdgeLevel|0x0000|UINT16|0x5
-
-
-
-[PcdsDynamic, PcdsDynamicEx]
-  gUefiOvmfPkgTokenSpaceGuid.PcdEmuVariableEvent|0|UINT64|2
-  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashVariablesEnable|FALSE|BOOLEAN|0x10
-  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId|0|UINT16|0x1b
-  gUefiOvmfPkgTokenSpaceGuid.PcdQemuSmbiosValidated|FALSE|BOOLEAN|0x21
-
-  ## The IO port aperture shared by all PCI root bridges.
-  #
-  gUefiOvmfPkgTokenSpaceGuid.PcdPciIoBase|0x0|UINT64|0x22
-  gUefiOvmfPkgTokenSpaceGuid.PcdPciIoSize|0x0|UINT64|0x23
-
-  ## The 32-bit MMIO aperture shared by all PCI root bridges.
-  #
-  gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Base|0x0|UINT64|0x24
-  gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Size|0x0|UINT64|0x25
-
-  ## The 64-bit MMIO aperture shared by all PCI root bridges.
-  #
-  gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio64Base|0x0|UINT64|0x26
-  gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio64Size|0x0|UINT64|0x27
-
-  ## The following setting controls how many megabytes we configure as TSEG on
-  #  Q35, for SMRAM purposes. Permitted defaults are: 1, 2, 8. Other defaults
-  #  cause undefined behavior. During boot, the PCD is updated by PlatformPei
-  #  to reflect the extended TSEG size, if one is advertized by QEMU.
-  #
-  #  This PCD is only accessed if PcdSmmSmramRequire is TRUE (see below).
-  gUefiOvmfPkgTokenSpaceGuid.PcdQ35TsegMbytes|8|UINT16|0x20
-
-[PcdsFeatureFlag]
-  gUefiOvmfPkgTokenSpaceGuid.PcdQemuBootOrderPciTranslation|TRUE|BOOLEAN|0x1c
-  gUefiOvmfPkgTokenSpaceGuid.PcdQemuBootOrderMmioTranslation|FALSE|BOOLEAN|0x1d
-
-  ## This feature flag enables SMM/SMRAM support. Note that it also requires
-  #  such support from the underlying QEMU instance; if that support is not
-  #  present, the firmware will reject continuing after a certain point.
-  #
-  #  The flag also acts as a general "security switch"; when TRUE, many
-  #  components will change behavior, with the goal of preventing a malicious
-  #  runtime OS from tampering with firmware structures (special memory ranges
-  #  used by OVMF, the varstore pflash chip, LockBox etc).
-  gUefiOvmfPkgTokenSpaceGuid.PcdSmmSmramRequire|FALSE|BOOLEAN|0x1e
-
-[Protocols]
-gEfiLegacyBiosProtocolGuid          = {0xdb9a1e3d, 0x45cb, 0x4abb, {0x85, 0x3b, 0xe5, 0x38, 0x7f, 0xdb, 0x2e, 0x2d}}
diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec
index f16c00ad5b99..55bb8ea91a00 100644
--- a/OvmfPkg/OvmfPkg.dec
+++ b/OvmfPkg/OvmfPkg.dec
@@ -1,7 +1,9 @@
 ## @file
 #  EFI/Framework Open Virtual Machine Firmware (OVMF) platform
 #
+#  Copyright (c) 2020, Rebecca Cran <rebecca@bsdio.com>
 #  Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2014, Pluribus Networks, Inc.
 #
 #  SPDX-License-Identifier: BSD-2-Clause-Patent
 #
@@ -18,6 +20,9 @@ [Includes]
   Csm/Include
 
 [LibraryClasses]
+  ##  @libraryclass  Access bhyve's firmware control interface.
+  BhyveFwCtlLib|Include/Library/BhyveFwCtlLib.h
+
   ##  @libraryclass  Loads and boots a Linux kernel image
   #
   LoadLinuxLib|Include/Library/LoadLinuxLib.h
diff --git a/OvmfPkg/Bhyve/BhyvePkgX64.dsc b/OvmfPkg/Bhyve/BhyvePkgX64.dsc
index 8eba48d109a3..99e214619be0 100644
--- a/OvmfPkg/Bhyve/BhyvePkgX64.dsc
+++ b/OvmfPkg/Bhyve/BhyvePkgX64.dsc
@@ -158,7 +158,7 @@ [LibraryClasses]
   SerializeVariablesLib|OvmfPkg/Library/SerializeVariablesLib/SerializeVariablesLib.inf
   QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgLibNull.inf
   QemuFwCfgS3Lib|OvmfPkg/Library/QemuFwCfgS3Lib/BaseQemuFwCfgS3LibNull.inf
-  BhyveFwCtlLib|OvmfPkg/Bhyve/Library/BhyveFwCtlLib/BhyveFwCtlLib.inf
+  BhyveFwCtlLib|OvmfPkg/Library/BhyveFwCtlLib/BhyveFwCtlLib.inf
   VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf
   MemEncryptSevLib|OvmfPkg/Library/BaseMemEncryptSevLib/BaseMemEncryptSevLib.inf
   LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxBaseLib.inf
@@ -343,7 +343,7 @@ [LibraryClasses.common.DXE_DRIVER]
 !else
   DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf
 !endif
-  PlatformBootManagerLib|OvmfPkg/Bhyve/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
+  PlatformBootManagerLib|OvmfPkg/Library/PlatformBootManagerLibBhyve/PlatformBootManagerLibBhyve.inf
   PlatformBmPrintScLib|OvmfPkg/Library/PlatformBmPrintScLib/PlatformBmPrintScLib.inf
   CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
   LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxDxeLib.inf
@@ -498,6 +498,7 @@ [PcdsFixedAtBuild]
   gEfiMdeModulePkgTokenSpaceGuid.PcdConInConnectOnDemand|FALSE
 
   gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVendor|L"BHYVE"
+  gUefiOvmfPkgTokenSpaceGuid.PcdDebugIoPort|0x2F8
 
 ################################################################################
 #
diff --git a/OvmfPkg/Bhyve/BhyvePkgX64.fdf b/OvmfPkg/Bhyve/BhyvePkgX64.fdf
index e2852aa5e12f..d40344d523e4 100644
--- a/OvmfPkg/Bhyve/BhyvePkgX64.fdf
+++ b/OvmfPkg/Bhyve/BhyvePkgX64.fdf
@@ -459,7 +459,7 @@ [Rule.Common.UEFI_APPLICATION.BINARY]
   }
 
 [Rule.Common.USER_DEFINED.ACPITABLE]
-  FILE FREEFORM = $(NAMED_GUID) {
+  FILE FREEFORM = 7E374E25-8E01-4FEE-87F2-390C23C606CD {
     RAW ACPI               |.acpi
     RAW ASL                |.aml
   }
diff --git a/OvmfPkg/Bhyve/Include/Library/BhyveFwCtlLib.h b/OvmfPkg/Include/Library/BhyveFwCtlLib.h
similarity index 100%
rename from OvmfPkg/Bhyve/Include/Library/BhyveFwCtlLib.h
rename to OvmfPkg/Include/Library/BhyveFwCtlLib.h
diff --git a/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf b/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf
index bf0f4877f01e..eec5a42f41e3 100644
--- a/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf
+++ b/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf
@@ -31,7 +31,7 @@ [Sources]
 [Packages]
   MdePkg/MdePkg.dec
   MdeModulePkg/MdeModulePkg.dec
-  OvmfPkg/Bhyve/BhyvePkg.dec
+  OvmfPkg/OvmfPkg.dec
   UefiCpuPkg/UefiCpuPkg.dec
 
 [LibraryClasses]
diff --git a/OvmfPkg/Bhyve/AcpiTables/AcpiTables.inf b/OvmfPkg/Bhyve/AcpiTables/AcpiTables.inf
index 18a9e2aa78b2..3aab42419ca7 100644
--- a/OvmfPkg/Bhyve/AcpiTables/AcpiTables.inf
+++ b/OvmfPkg/Bhyve/AcpiTables/AcpiTables.inf
@@ -14,7 +14,7 @@
 [Defines]
   INF_VERSION                    = 0x00010005
   BASE_NAME                      = PlatformAcpiTables
-  FILE_GUID                      = 7E374E25-8E01-4FEE-87F2-390C23C606CD
+  FILE_GUID                      = B4BA6241-936C-4485-A483-9FA832C758CA
   MODULE_TYPE                    = USER_DEFINED
   VERSION_STRING                 = 1.0
 
diff --git a/OvmfPkg/Bhyve/BhyveRfbDxe/BhyveRfbDxe.inf b/OvmfPkg/Bhyve/BhyveRfbDxe/BhyveRfbDxe.inf
index 8fd72cb78d46..5d6e41f0575a 100644
--- a/OvmfPkg/Bhyve/BhyveRfbDxe/BhyveRfbDxe.inf
+++ b/OvmfPkg/Bhyve/BhyveRfbDxe/BhyveRfbDxe.inf
@@ -37,7 +37,7 @@ [Sources]
 
 [Packages]
   MdePkg/MdePkg.dec
-  OvmfPkg/Bhyve/BhyvePkg.dec
+  OvmfPkg/OvmfPkg.dec
   MdeModulePkg/MdeModulePkg.dec
 
 
diff --git a/OvmfPkg/Bhyve/Library/BhyveFwCtlLib/BhyveFwCtlLib.inf b/OvmfPkg/Library/BhyveFwCtlLib/BhyveFwCtlLib.inf
similarity index 92%
rename from OvmfPkg/Bhyve/Library/BhyveFwCtlLib/BhyveFwCtlLib.inf
rename to OvmfPkg/Library/BhyveFwCtlLib/BhyveFwCtlLib.inf
index e9819f4f96bf..4643de381e04 100644
--- a/OvmfPkg/Bhyve/Library/BhyveFwCtlLib/BhyveFwCtlLib.inf
+++ b/OvmfPkg/Library/BhyveFwCtlLib/BhyveFwCtlLib.inf
@@ -29,7 +29,7 @@ [Sources]
 
 [Packages]
   MdePkg/MdePkg.dec
-  OvmfPkg/Bhyve/BhyvePkg.dec
+  OvmfPkg/OvmfPkg.dec
 
 [LibraryClasses]
   BaseLib
diff --git a/OvmfPkg/Bhyve/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf b/OvmfPkg/Library/PlatformBootManagerLibBhyve/PlatformBootManagerLibBhyve.inf
similarity index 93%
rename from OvmfPkg/Bhyve/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
rename to OvmfPkg/Library/PlatformBootManagerLibBhyve/PlatformBootManagerLibBhyve.inf
index 105123b5e2d0..c1fb5119ef7f 100644
--- a/OvmfPkg/Bhyve/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
+++ b/OvmfPkg/Library/PlatformBootManagerLibBhyve/PlatformBootManagerLibBhyve.inf
@@ -10,7 +10,7 @@
 
 [Defines]
   INF_VERSION                    = 0x00010005
-  BASE_NAME                      = PlatformBootManagerLib
+  BASE_NAME                      = PlatformBootManagerLibBhyve
   FILE_GUID                      = b0de5f0d-f676-42da-8d00-86997ee0dbb4
   MODULE_TYPE                    = DXE_DRIVER
   VERSION_STRING                 = 1.0
diff --git a/OvmfPkg/Bhyve/Library/PlatformBootManagerLib/BdsPlatform.h b/OvmfPkg/Library/PlatformBootManagerLibBhyve/BdsPlatform.h
similarity index 100%
rename from OvmfPkg/Bhyve/Library/PlatformBootManagerLib/BdsPlatform.h
rename to OvmfPkg/Library/PlatformBootManagerLibBhyve/BdsPlatform.h
diff --git a/OvmfPkg/Bhyve/Library/BhyveFwCtlLib/BhyveFwCtlLib.c b/OvmfPkg/Library/BhyveFwCtlLib/BhyveFwCtlLib.c
similarity index 100%
rename from OvmfPkg/Bhyve/Library/BhyveFwCtlLib/BhyveFwCtlLib.c
rename to OvmfPkg/Library/BhyveFwCtlLib/BhyveFwCtlLib.c
diff --git a/OvmfPkg/Bhyve/Library/PlatformBootManagerLib/BdsPlatform.c b/OvmfPkg/Library/PlatformBootManagerLibBhyve/BdsPlatform.c
similarity index 100%
rename from OvmfPkg/Bhyve/Library/PlatformBootManagerLib/BdsPlatform.c
rename to OvmfPkg/Library/PlatformBootManagerLibBhyve/BdsPlatform.c
diff --git a/OvmfPkg/Bhyve/Library/PlatformBootManagerLib/PlatformData.c b/OvmfPkg/Library/PlatformBootManagerLibBhyve/PlatformData.c
similarity index 100%
rename from OvmfPkg/Bhyve/Library/PlatformBootManagerLib/PlatformData.c
rename to OvmfPkg/Library/PlatformBootManagerLibBhyve/PlatformData.c
-- 
2.19.1.3.g30247aa5d201


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#63619): https://edk2.groups.io/g/devel/message/63619
Mute This Topic: https://groups.io/mt/75929326/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [PATCH] OvmfPkg: fix DEC spec violation introduced by Bhyve addition
Posted by Philippe Mathieu-Daudé 3 years, 8 months ago
On 8/1/20 5:50 PM, Laszlo Ersek wrote:
> Sean reports that having two DEC files under OvmfPkg violates the DEC
> spec:
> 
>> An EDK II Package (directory) is a directory that contains an EDK II
>> package declaration (DEC) file. Only one DEC file is permitted per
>> directory. EDK II Packages cannot be nested within other EDK II
>> Packages.
> 
> This issue originates from commit 656419f922c0 ("Add BhyvePkg, to support
> the bhyve hypervisor", 2020-07-31).
> 
> Remedy the problem as follows. (Note that these steps are not split to
> multiple patches in order to keep Bhyve buildable across the transition.)
> 
> (1) Delete "OvmfPkg/Bhyve/BhyvePkg.dec".
> 
> (2) Point the [Packages] sections of the Bhyve-specific AcpiPlatformDxe,
>     BhyveRfbDxe, and BhyveFwCtlLib INF files to "OvmfPkg.dec".
> 
> (3) Migrate the artifacts that "BhyvePkg.dec" used to have on top of
>     "OvmfPkg.dec" as follows:
> 
> (3a) Merge the copyright notices from Rebecca Cran and Pluribus Networks
>      into "OvmfPkg.dec".
> 
> (3b) Merge the "BhyveFwCtlLib" class header definition into "OvmfPkg.dec".
> 
> (3c) Merge value 0x2F8 for the fixed PcdDebugIoPort into
>      "BhyvePkgX64.dsc".
> 
> (4) Unnest the the Include/Library/ and Library/ subtrees from under
>     OvmfPkg/Bhyve to the corresponding, preexistent subtrees in OvmfPkg.
>     The goal is to keep the [Includes] section in the "OvmfPkg.dec" file
>     unchanged, plus simplify references in "BhyvePkgX64.dsc". Non-library
>     modules remain under "OvmfPkg/Bhyve/".
> 
> (4a) The BhyveFwCtlLib class header, and sole instance, are already
>      uniquely named, so their movements need not involve file renames.
> 
> (4b) Rename the Bhyve-specific PlatformBootManagerLib instance to
>      PlatformBootManagerLibBhyve, in additon to moving it, for
>      distinguishing it from OvmfPkg's preexistent lib instance. Apply the
>      name change to all three of the lib instance directory name, the INF
>      file, and the BASE_NAME define in the INF file.
> 
> (4c) Update lib class resolutions in "BhyvePkgX64.dsc" accordingly.
> 
> (5) Replace the "ACPI table storage" FILE_GUID in
>     "OvmfPkg/Bhyve/AcpiTables/AcpiTables.inf" with a new GUID, and
>     open-code the "ACPI table storage" GUID in the "ACPITABLE" FDF rule
>     instead, replacing $(NAMED_GUID). This step is necessary because CI
>     requires unique FILE_GUIDs over all INF files, and OVMF's original
>     "AcpiTables.inf" already uses the "ACPI table storage" GUID as
>     FILE_GUID.

Thank you for detailing each step, this helped to understand the
changes.

Reviewed-by: Philippe Mathieu-Daude <philmd@redhat.com>

> 
> Cc: Ard Biesheuvel <ard.biesheuvel@arm.com>
> Cc: Jordan Justen <jordan.l.justen@intel.com>
> Cc: Philippe Mathieu-Daudé <philmd@redhat.com>
> Cc: Rebecca Cran <rebecca@bsdio.com>
> Cc: Sean Brogan <spbrogan@outlook.com>
> Fixes: 656419f922c047a3c48bd3f4ecea7d8e87d0b761
> Reported-by: Sean Brogan <spbrogan@outlook.com>
> Signed-off-by: Laszlo Ersek <lersek@redhat.com>
> ---
> 
> Notes:
>     - Repo:   https://github.com/lersek/edk2.git
>       Branch: bhyve_dec_fix
>     
>     - Personal CI build: https://github.com/tianocore/edk2/pull/846
>     
>     - Because the DEC spec violation is breaking CI, I'm going to push this
>       as soon as Rebecca (and hopefully Sean) confirm the change is OK.
>     
>     - Rebecca, please account for the movements / renames in the present
>       patch in your upcoming patch for "Maintainers.txt". Thanks!
> 
>  OvmfPkg/Bhyve/BhyvePkg.dec                                                                                                                       | 171 --------------------
>  OvmfPkg/OvmfPkg.dec                                                                                                                              |   5 +
>  OvmfPkg/Bhyve/BhyvePkgX64.dsc                                                                                                                    |   5 +-
>  OvmfPkg/Bhyve/BhyvePkgX64.fdf                                                                                                                    |   2 +-
>  OvmfPkg/{Bhyve => }/Include/Library/BhyveFwCtlLib.h                                                                                              |   0
>  OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf                                                                                                |   2 +-
>  OvmfPkg/Bhyve/AcpiTables/AcpiTables.inf                                                                                                          |   2 +-
>  OvmfPkg/Bhyve/BhyveRfbDxe/BhyveRfbDxe.inf                                                                                                        |   2 +-
>  OvmfPkg/{Bhyve => }/Library/BhyveFwCtlLib/BhyveFwCtlLib.inf                                                                                      |   2 +-
>  OvmfPkg/{Bhyve/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf => Library/PlatformBootManagerLibBhyve/PlatformBootManagerLibBhyve.inf} |   2 +-
>  OvmfPkg/{Bhyve/Library/PlatformBootManagerLib => Library/PlatformBootManagerLibBhyve}/BdsPlatform.h                                              |   0
>  OvmfPkg/{Bhyve => }/Library/BhyveFwCtlLib/BhyveFwCtlLib.c                                                                                        |   0
>  OvmfPkg/{Bhyve/Library/PlatformBootManagerLib => Library/PlatformBootManagerLibBhyve}/BdsPlatform.c                                              |   0
>  OvmfPkg/{Bhyve/Library/PlatformBootManagerLib => Library/PlatformBootManagerLibBhyve}/PlatformData.c                                             |   0
>  14 files changed, 14 insertions(+), 179 deletions(-)
> 
> diff --git a/OvmfPkg/Bhyve/BhyvePkg.dec b/OvmfPkg/Bhyve/BhyvePkg.dec
> deleted file mode 100644
> index 8884b6276c64..000000000000
> --- a/OvmfPkg/Bhyve/BhyvePkg.dec
> +++ /dev/null
> @@ -1,171 +0,0 @@
> -#
> -#  Copyright (c) 2020, Rebecca Cran <rebecca@bsdio.com>
> -#  Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
> -#  Copyright (c) 2014, Pluribus Networks, Inc.
> -#
> -#  SPDX-License-Identifier: BSD-2-Clause-Patent
> -#
> -##
> -
> -[Defines]
> -  DEC_SPECIFICATION              = 0x00010005
> -  PACKAGE_NAME                   = BhyvePkg
> -  PACKAGE_GUID                   = 178345e1-6ac0-439d-a3df-9abf70dccd57
> -  PACKAGE_VERSION                = 0.1
> -
> -[Includes]
> -  Include
> -  ../Include
> -
> -[LibraryClasses]
> -  ##  @libraryclass  Save and restore variables using a file
> -  #
> -  NvVarsFileLib|Include/Library/NvVarsFileLib.h
> -
> -  ##  @libraryclass  Provides services to work with PCI capabilities in PCI
> -  #                  config space.
> -  PciCapLib|Include/Library/PciCapLib.h
> -
> -  ##  @libraryclass  Layered on top of PciCapLib, allows clients to plug an
> -  #                  EFI_PCI_IO_PROTOCOL backend into PciCapLib, for config
> -  #                  space access.
> -  PciCapPciIoLib|Include/Library/PciCapPciIoLib.h
> -
> -  ##  @libraryclass  Layered on top of PciCapLib, allows clients to plug a
> -  #                  PciSegmentLib backend into PciCapLib, for config space
> -  #                  access.
> -  PciCapPciSegmentLib|Include/Library/PciCapPciSegmentLib.h
> -
> -  ##  @libraryclass  Register a status code handler for printing the Boot
> -  #                  Manager's LoadImage() and StartImage() preparations, and
> -  #                  return codes, to the UEFI console.
> -  PlatformBmPrintScLib|Include/Library/PlatformBmPrintScLib.h
> -
> -  ##  @libraryclass  Serialize (and deserialize) variables
> -  #
> -  SerializeVariablesLib|Include/Library/SerializeVariablesLib.h
> -
> -  ##  @libraryclass  Access bhyve's firmware control interface
> -  #
> -  BhyveFwCtlLib|Include/Library/BhyveFwCtlLib.h
> -
> -[Guids]
> -  gUefiOvmfPkgTokenSpaceGuid          = {0x93bb96af, 0xb9f2, 0x4eb8, {0x94, 0x62, 0xe0, 0xba, 0x74, 0x56, 0x42, 0x36}}
> -  gOvmfPlatformConfigGuid             = {0x7235c51c, 0x0c80, 0x4cab, {0x87, 0xac, 0x3b, 0x08, 0x4a, 0x63, 0x04, 0xb1}}
> -  gVirtioMmioTransportGuid            = {0x837dca9e, 0xe874, 0x4d82, {0xb2, 0x9a, 0x23, 0xfe, 0x0e, 0x23, 0xd1, 0xe2}}
> -  gRootBridgesConnectedEventGroupGuid = {0x24a2d66f, 0xeedd, 0x4086, {0x90, 0x42, 0xf2, 0x6e, 0x47, 0x97, 0xee, 0x69}}
> -
> -[Protocols]
> -  gVirtioDeviceProtocolGuid           = {0xfa920010, 0x6785, 0x4941, {0xb6, 0xec, 0x49, 0x8c, 0x57, 0x9f, 0x16, 0x0a}}
> -  gIoMmuAbsentProtocolGuid            = {0xf8775d50, 0x8abd, 0x4adf, {0x92, 0xac, 0x85, 0x3e, 0x51, 0xf6, 0xc8, 0xdc}}
> -
> -[PcdsFixedAtBuild]
> -  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvBase|0x0|UINT32|0
> -  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvSize|0x0|UINT32|1
> -  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDxeMemFvBase|0x0|UINT32|0x15
> -  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDxeMemFvSize|0x0|UINT32|0x16
> -
> -  ## This flag is used to control the destination port for PlatformDebugLibIoPort
> -  gUefiOvmfPkgTokenSpaceGuid.PcdDebugIoPort|0x2F8|UINT16|4
> -
> -  ## When VirtioScsiDxe is instantiated for a HBA, the numbers of targets and
> -  #  LUNs are retrieved from the host during virtio-scsi setup.
> -  #  MdeModulePkg/Bus/Scsi/ScsiBusDxe then scans all MaxTarget * MaxLun
> -  #  possible devices. This can take extremely long, for example with
> -  #  MaxTarget=255 and MaxLun=16383. The *inclusive* constants below limit
> -  #  MaxTarget and MaxLun, independently, should the host report higher values,
> -  #  so that scanning the number of devices given by their product is still
> -  #  acceptably fast.
> -  gUefiOvmfPkgTokenSpaceGuid.PcdVirtioScsiMaxTargetLimit|31|UINT16|6
> -  gUefiOvmfPkgTokenSpaceGuid.PcdVirtioScsiMaxLunLimit|7|UINT32|7
> -
> -  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageEventLogBase|0x0|UINT32|0x8
> -  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageEventLogSize|0x0|UINT32|0x9
> -  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareFdSize|0x0|UINT32|0xa
> -  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareBlockSize|0|UINT32|0xb
> -  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageVariableBase|0x0|UINT32|0xc
> -  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageFtwSpareBase|0x0|UINT32|0xd
> -  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashNvStorageFtwWorkingBase|0x0|UINT32|0xe
> -  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFdBaseAddress|0x0|UINT32|0xf
> -  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesBase|0x0|UINT32|0x11
> -  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPageTablesSize|0x0|UINT32|0x12
> -  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase|0x0|UINT32|0x13
> -  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize|0x0|UINT32|0x14
> -  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfLockBoxStorageBase|0x0|UINT32|0x18
> -  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfLockBoxStorageSize|0x0|UINT32|0x19
> -  gUefiOvmfPkgTokenSpaceGuid.PcdGuidedExtractHandlerTableSize|0x0|UINT32|0x1a
> -  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDecompressionScratchEnd|0x0|UINT32|0x1f
> -
> -  ## Pcd8259LegacyModeMask defines the default mask value for platform. This
> -  #  value is determined.
> -  #  1) If platform only support pure UEFI, value should be set to 0xFFFF or
> -  #     0xFFFE; Because only clock interrupt is allowed in legacy mode in pure
> -  #     UEFI platform.
> -  #  2) If platform install CSM and use thunk module:
> -  #     a) If thunk call provided by CSM binary requires some legacy interrupt
> -  #        support, the corresponding bit should be opened as 0.
> -  #        For example, if keyboard interfaces provided CSM binary use legacy
> -  #        keyboard interrupt in 8259 bit 1, then the value should be set to
> -  #        0xFFFC.
> -  #     b) If all thunk call provied by CSM binary do not require legacy
> -  #        interrupt support, value should be set to 0xFFFF or 0xFFFE.
> -  #
> -  #  The default value of legacy mode mask could be changed by
> -  #  EFI_LEGACY_8259_PROTOCOL->SetMask(). But it is rarely need change it
> -  #  except some special cases such as when initializing the CSM binary, it
> -  #  should be set to 0xFFFF to mask all legacy interrupt. Please restore the
> -  #  original legacy mask value if changing is made for these special case.
> -  gUefiOvmfPkgTokenSpaceGuid.Pcd8259LegacyModeMask|0xFFFF|UINT16|0x3
> -
> -  ## Pcd8259LegacyModeEdgeLevel defines the default edge level for legacy
> -  #  mode's interrrupt controller.
> -  #  For the corresponding bits, 0 = Edge triggered and 1 = Level triggered.
> -  gUefiOvmfPkgTokenSpaceGuid.Pcd8259LegacyModeEdgeLevel|0x0000|UINT16|0x5
> -
> -
> -
> -[PcdsDynamic, PcdsDynamicEx]
> -  gUefiOvmfPkgTokenSpaceGuid.PcdEmuVariableEvent|0|UINT64|2
> -  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFlashVariablesEnable|FALSE|BOOLEAN|0x10
> -  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId|0|UINT16|0x1b
> -  gUefiOvmfPkgTokenSpaceGuid.PcdQemuSmbiosValidated|FALSE|BOOLEAN|0x21
> -
> -  ## The IO port aperture shared by all PCI root bridges.
> -  #
> -  gUefiOvmfPkgTokenSpaceGuid.PcdPciIoBase|0x0|UINT64|0x22
> -  gUefiOvmfPkgTokenSpaceGuid.PcdPciIoSize|0x0|UINT64|0x23
> -
> -  ## The 32-bit MMIO aperture shared by all PCI root bridges.
> -  #
> -  gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Base|0x0|UINT64|0x24
> -  gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio32Size|0x0|UINT64|0x25
> -
> -  ## The 64-bit MMIO aperture shared by all PCI root bridges.
> -  #
> -  gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio64Base|0x0|UINT64|0x26
> -  gUefiOvmfPkgTokenSpaceGuid.PcdPciMmio64Size|0x0|UINT64|0x27
> -
> -  ## The following setting controls how many megabytes we configure as TSEG on
> -  #  Q35, for SMRAM purposes. Permitted defaults are: 1, 2, 8. Other defaults
> -  #  cause undefined behavior. During boot, the PCD is updated by PlatformPei
> -  #  to reflect the extended TSEG size, if one is advertized by QEMU.
> -  #
> -  #  This PCD is only accessed if PcdSmmSmramRequire is TRUE (see below).
> -  gUefiOvmfPkgTokenSpaceGuid.PcdQ35TsegMbytes|8|UINT16|0x20
> -
> -[PcdsFeatureFlag]
> -  gUefiOvmfPkgTokenSpaceGuid.PcdQemuBootOrderPciTranslation|TRUE|BOOLEAN|0x1c
> -  gUefiOvmfPkgTokenSpaceGuid.PcdQemuBootOrderMmioTranslation|FALSE|BOOLEAN|0x1d
> -
> -  ## This feature flag enables SMM/SMRAM support. Note that it also requires
> -  #  such support from the underlying QEMU instance; if that support is not
> -  #  present, the firmware will reject continuing after a certain point.
> -  #
> -  #  The flag also acts as a general "security switch"; when TRUE, many
> -  #  components will change behavior, with the goal of preventing a malicious
> -  #  runtime OS from tampering with firmware structures (special memory ranges
> -  #  used by OVMF, the varstore pflash chip, LockBox etc).
> -  gUefiOvmfPkgTokenSpaceGuid.PcdSmmSmramRequire|FALSE|BOOLEAN|0x1e
> -
> -[Protocols]
> -gEfiLegacyBiosProtocolGuid          = {0xdb9a1e3d, 0x45cb, 0x4abb, {0x85, 0x3b, 0xe5, 0x38, 0x7f, 0xdb, 0x2e, 0x2d}}
> diff --git a/OvmfPkg/OvmfPkg.dec b/OvmfPkg/OvmfPkg.dec
> index f16c00ad5b99..55bb8ea91a00 100644
> --- a/OvmfPkg/OvmfPkg.dec
> +++ b/OvmfPkg/OvmfPkg.dec
> @@ -1,7 +1,9 @@
>  ## @file
>  #  EFI/Framework Open Virtual Machine Firmware (OVMF) platform
>  #
> +#  Copyright (c) 2020, Rebecca Cran <rebecca@bsdio.com>
>  #  Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
> +#  Copyright (c) 2014, Pluribus Networks, Inc.
>  #
>  #  SPDX-License-Identifier: BSD-2-Clause-Patent
>  #
> @@ -18,6 +20,9 @@ [Includes]
>    Csm/Include
>  
>  [LibraryClasses]
> +  ##  @libraryclass  Access bhyve's firmware control interface.
> +  BhyveFwCtlLib|Include/Library/BhyveFwCtlLib.h
> +
>    ##  @libraryclass  Loads and boots a Linux kernel image
>    #
>    LoadLinuxLib|Include/Library/LoadLinuxLib.h
> diff --git a/OvmfPkg/Bhyve/BhyvePkgX64.dsc b/OvmfPkg/Bhyve/BhyvePkgX64.dsc
> index 8eba48d109a3..99e214619be0 100644
> --- a/OvmfPkg/Bhyve/BhyvePkgX64.dsc
> +++ b/OvmfPkg/Bhyve/BhyvePkgX64.dsc
> @@ -158,7 +158,7 @@ [LibraryClasses]
>    SerializeVariablesLib|OvmfPkg/Library/SerializeVariablesLib/SerializeVariablesLib.inf
>    QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgLibNull.inf
>    QemuFwCfgS3Lib|OvmfPkg/Library/QemuFwCfgS3Lib/BaseQemuFwCfgS3LibNull.inf
> -  BhyveFwCtlLib|OvmfPkg/Bhyve/Library/BhyveFwCtlLib/BhyveFwCtlLib.inf
> +  BhyveFwCtlLib|OvmfPkg/Library/BhyveFwCtlLib/BhyveFwCtlLib.inf
>    VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf
>    MemEncryptSevLib|OvmfPkg/Library/BaseMemEncryptSevLib/BaseMemEncryptSevLib.inf
>    LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxBaseLib.inf
> @@ -343,7 +343,7 @@ [LibraryClasses.common.DXE_DRIVER]
>  !else
>    DebugLib|OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf
>  !endif
> -  PlatformBootManagerLib|OvmfPkg/Bhyve/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
> +  PlatformBootManagerLib|OvmfPkg/Library/PlatformBootManagerLibBhyve/PlatformBootManagerLibBhyve.inf
>    PlatformBmPrintScLib|OvmfPkg/Library/PlatformBmPrintScLib/PlatformBmPrintScLib.inf
>    CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
>    LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxDxeLib.inf
> @@ -498,6 +498,7 @@ [PcdsFixedAtBuild]
>    gEfiMdeModulePkgTokenSpaceGuid.PcdConInConnectOnDemand|FALSE
>  
>    gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVendor|L"BHYVE"
> +  gUefiOvmfPkgTokenSpaceGuid.PcdDebugIoPort|0x2F8
>  
>  ################################################################################
>  #
> diff --git a/OvmfPkg/Bhyve/BhyvePkgX64.fdf b/OvmfPkg/Bhyve/BhyvePkgX64.fdf
> index e2852aa5e12f..d40344d523e4 100644
> --- a/OvmfPkg/Bhyve/BhyvePkgX64.fdf
> +++ b/OvmfPkg/Bhyve/BhyvePkgX64.fdf
> @@ -459,7 +459,7 @@ [Rule.Common.UEFI_APPLICATION.BINARY]
>    }
>  
>  [Rule.Common.USER_DEFINED.ACPITABLE]
> -  FILE FREEFORM = $(NAMED_GUID) {
> +  FILE FREEFORM = 7E374E25-8E01-4FEE-87F2-390C23C606CD {
>      RAW ACPI               |.acpi
>      RAW ASL                |.aml
>    }
> diff --git a/OvmfPkg/Bhyve/Include/Library/BhyveFwCtlLib.h b/OvmfPkg/Include/Library/BhyveFwCtlLib.h
> similarity index 100%
> rename from OvmfPkg/Bhyve/Include/Library/BhyveFwCtlLib.h
> rename to OvmfPkg/Include/Library/BhyveFwCtlLib.h
> diff --git a/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf b/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf
> index bf0f4877f01e..eec5a42f41e3 100644
> --- a/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf
> +++ b/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf
> @@ -31,7 +31,7 @@ [Sources]
>  [Packages]
>    MdePkg/MdePkg.dec
>    MdeModulePkg/MdeModulePkg.dec
> -  OvmfPkg/Bhyve/BhyvePkg.dec
> +  OvmfPkg/OvmfPkg.dec
>    UefiCpuPkg/UefiCpuPkg.dec
>  
>  [LibraryClasses]
> diff --git a/OvmfPkg/Bhyve/AcpiTables/AcpiTables.inf b/OvmfPkg/Bhyve/AcpiTables/AcpiTables.inf
> index 18a9e2aa78b2..3aab42419ca7 100644
> --- a/OvmfPkg/Bhyve/AcpiTables/AcpiTables.inf
> +++ b/OvmfPkg/Bhyve/AcpiTables/AcpiTables.inf
> @@ -14,7 +14,7 @@
>  [Defines]
>    INF_VERSION                    = 0x00010005
>    BASE_NAME                      = PlatformAcpiTables
> -  FILE_GUID                      = 7E374E25-8E01-4FEE-87F2-390C23C606CD
> +  FILE_GUID                      = B4BA6241-936C-4485-A483-9FA832C758CA
>    MODULE_TYPE                    = USER_DEFINED
>    VERSION_STRING                 = 1.0
>  
> diff --git a/OvmfPkg/Bhyve/BhyveRfbDxe/BhyveRfbDxe.inf b/OvmfPkg/Bhyve/BhyveRfbDxe/BhyveRfbDxe.inf
> index 8fd72cb78d46..5d6e41f0575a 100644
> --- a/OvmfPkg/Bhyve/BhyveRfbDxe/BhyveRfbDxe.inf
> +++ b/OvmfPkg/Bhyve/BhyveRfbDxe/BhyveRfbDxe.inf
> @@ -37,7 +37,7 @@ [Sources]
>  
>  [Packages]
>    MdePkg/MdePkg.dec
> -  OvmfPkg/Bhyve/BhyvePkg.dec
> +  OvmfPkg/OvmfPkg.dec
>    MdeModulePkg/MdeModulePkg.dec
>  
>  
> diff --git a/OvmfPkg/Bhyve/Library/BhyveFwCtlLib/BhyveFwCtlLib.inf b/OvmfPkg/Library/BhyveFwCtlLib/BhyveFwCtlLib.inf
> similarity index 92%
> rename from OvmfPkg/Bhyve/Library/BhyveFwCtlLib/BhyveFwCtlLib.inf
> rename to OvmfPkg/Library/BhyveFwCtlLib/BhyveFwCtlLib.inf
> index e9819f4f96bf..4643de381e04 100644
> --- a/OvmfPkg/Bhyve/Library/BhyveFwCtlLib/BhyveFwCtlLib.inf
> +++ b/OvmfPkg/Library/BhyveFwCtlLib/BhyveFwCtlLib.inf
> @@ -29,7 +29,7 @@ [Sources]
>  
>  [Packages]
>    MdePkg/MdePkg.dec
> -  OvmfPkg/Bhyve/BhyvePkg.dec
> +  OvmfPkg/OvmfPkg.dec
>  
>  [LibraryClasses]
>    BaseLib
> diff --git a/OvmfPkg/Bhyve/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf b/OvmfPkg/Library/PlatformBootManagerLibBhyve/PlatformBootManagerLibBhyve.inf
> similarity index 93%
> rename from OvmfPkg/Bhyve/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
> rename to OvmfPkg/Library/PlatformBootManagerLibBhyve/PlatformBootManagerLibBhyve.inf
> index 105123b5e2d0..c1fb5119ef7f 100644
> --- a/OvmfPkg/Bhyve/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf
> +++ b/OvmfPkg/Library/PlatformBootManagerLibBhyve/PlatformBootManagerLibBhyve.inf
> @@ -10,7 +10,7 @@
>  
>  [Defines]
>    INF_VERSION                    = 0x00010005
> -  BASE_NAME                      = PlatformBootManagerLib
> +  BASE_NAME                      = PlatformBootManagerLibBhyve
>    FILE_GUID                      = b0de5f0d-f676-42da-8d00-86997ee0dbb4
>    MODULE_TYPE                    = DXE_DRIVER
>    VERSION_STRING                 = 1.0
> diff --git a/OvmfPkg/Bhyve/Library/PlatformBootManagerLib/BdsPlatform.h b/OvmfPkg/Library/PlatformBootManagerLibBhyve/BdsPlatform.h
> similarity index 100%
> rename from OvmfPkg/Bhyve/Library/PlatformBootManagerLib/BdsPlatform.h
> rename to OvmfPkg/Library/PlatformBootManagerLibBhyve/BdsPlatform.h
> diff --git a/OvmfPkg/Bhyve/Library/BhyveFwCtlLib/BhyveFwCtlLib.c b/OvmfPkg/Library/BhyveFwCtlLib/BhyveFwCtlLib.c
> similarity index 100%
> rename from OvmfPkg/Bhyve/Library/BhyveFwCtlLib/BhyveFwCtlLib.c
> rename to OvmfPkg/Library/BhyveFwCtlLib/BhyveFwCtlLib.c
> diff --git a/OvmfPkg/Bhyve/Library/PlatformBootManagerLib/BdsPlatform.c b/OvmfPkg/Library/PlatformBootManagerLibBhyve/BdsPlatform.c
> similarity index 100%
> rename from OvmfPkg/Bhyve/Library/PlatformBootManagerLib/BdsPlatform.c
> rename to OvmfPkg/Library/PlatformBootManagerLibBhyve/BdsPlatform.c
> diff --git a/OvmfPkg/Bhyve/Library/PlatformBootManagerLib/PlatformData.c b/OvmfPkg/Library/PlatformBootManagerLibBhyve/PlatformData.c
> similarity index 100%
> rename from OvmfPkg/Bhyve/Library/PlatformBootManagerLib/PlatformData.c
> rename to OvmfPkg/Library/PlatformBootManagerLibBhyve/PlatformData.c
> 


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#63621): https://edk2.groups.io/g/devel/message/63621
Mute This Topic: https://groups.io/mt/75929326/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [PATCH] OvmfPkg: fix DEC spec violation introduced by Bhyve addition
Posted by Rebecca Cran 3 years, 8 months ago
On 8/1/20 9:50 AM, Laszlo Ersek wrote:

>      - Repo:   https://github.com/lersek/edk2.git
>        Branch: bhyve_dec_fix
>      
>      - Personal CI build: https://github.com/tianocore/edk2/pull/846
>      
>      - Because the DEC spec violation is breaking CI, I'm going to push this
>        as soon as Rebecca (and hopefully Sean) confirm the change is OK.
>      
>      - Rebecca, please account for the movements / renames in the present
>        patch in your upcoming patch for "Maintainers.txt". Thanks!


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


Thanks! And sorry for the disruption.


-- 
Rebecca Cran



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#63624): https://edk2.groups.io/g/devel/message/63624
Mute This Topic: https://groups.io/mt/75929326/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [PATCH] OvmfPkg: fix DEC spec violation introduced by Bhyve addition
Posted by Laszlo Ersek 3 years, 8 months ago
On 08/01/20 17:50, Laszlo Ersek wrote:
> Sean reports that having two DEC files under OvmfPkg violates the DEC
> spec:
> 
>> An EDK II Package (directory) is a directory that contains an EDK II
>> package declaration (DEC) file. Only one DEC file is permitted per
>> directory. EDK II Packages cannot be nested within other EDK II
>> Packages.

Thanks to Sean for the problem report, and to Phil and Rebecca for the
fast reviews.

Merged as commit e557442e3f7e, via
<https://github.com/tianocore/edk2/pull/847>.

The badges at <https://github.com/tianocore/edk2/#core-ci-build-status>
are back to green.

Sorry about the regression.
Laszlo


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#63627): https://edk2.groups.io/g/devel/message/63627
Mute This Topic: https://groups.io/mt/75929326/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-