[edk2-devel] [PATCH 00/43] OvmfPkg: remove Xen support from OvmfPkg*.dsc, in favor of OvmfXen.dsc

Laszlo Ersek lersek at redhat.com
Wed May 26 20:14:03 UTC 2021


Bugzilla: https://bugzilla.tianocore.org/show_bug.cgi?id=2122
Repo:     https://pagure.io/lersek/edk2.git
Branch:   xen_split_bz_2122

This patch set removes dynamic Xen enlightenment from the following
platforms:

  OvmfPkg/OvmfPkgIa32.dsc
  OvmfPkg/OvmfPkgIa32X64.dsc
  OvmfPkg/OvmfPkgX64.dsc

In Xen guests, the following platform should be used:

  OvmfPkg/OvmfXen.dsc

Please see more details / references in the bugzilla ticket.

NOOPT build savings:

- Ia32:    PEIFV 1536 bytes, DXEFV 130288 bytes
- Ia32X64: PEIFV 1536 bytes, DXEFV 140912 bytes
- X64:     PEIFV 1664 bytes, DXEFV 140912 bytes
- Xen:     PEIFV  256 bytes, DXEFV  69504 bytes

Functional testing:

- Booted a Fedora guest on OvmfPkgIa32X64 on QEMU/KVM, compared verbose
  logs before-after. Memory allocations were satisfied at different
  addresses, as expected, plus the Xen drivers were absent. No
  differences otherwise.

- Booted a RHEL guest on ArmVirtQemu on AARCH64. Memory allocations were
  satisfied at different addresses, as expected.

- Xen regression-testing was not done; I'm requesting feedback.

Build testing / bisectability: at every stage, the series builds with
the following script:

> #!/bin/bash
> set -e -u -C
>
> build -b DEBUG -t GCC5 -p ArmVirtPkg/ArmVirtKvmTool.dsc            -a AARCH64
> build -b DEBUG -t GCC5 -p ArmVirtPkg/ArmVirtKvmTool.dsc    -a ARM
> build -b NOOPT -t GCC5 -p ArmVirtPkg/ArmVirtQemu.dsc               -a AARCH64
> build -b NOOPT -t GCC5 -p ArmVirtPkg/ArmVirtQemu.dsc       -a ARM
> build -b NOOPT -t GCC5 -p ArmVirtPkg/ArmVirtQemuKernel.dsc         -a AARCH64
> build -b NOOPT -t GCC5 -p ArmVirtPkg/ArmVirtQemuKernel.dsc -a ARM
> build -b NOOPT -t GCC5 -p ArmVirtPkg/ArmVirtXen.dsc                -a AARCH64
> build -b NOOPT -t GCC5 -p ArmVirtPkg/ArmVirtXen.dsc        -a ARM
> build -b NOOPT -t GCC5 -p OvmfPkg/AmdSev/AmdSevX64.dsc             -a X64
> build -b NOOPT -t GCC5 -p OvmfPkg/Bhyve/BhyveX64.dsc               -a X64
> build -b NOOPT -t GCC5 -p OvmfPkg/OvmfPkgIa32.dsc          -a IA32
> build -b NOOPT -t GCC5 -p OvmfPkg/OvmfPkgIa32X64.dsc       -a IA32 -a X64
> build -b NOOPT -t GCC5 -p OvmfPkg/OvmfPkgX64.dsc                   -a X64
> build -b NOOPT -t GCC5 -p OvmfPkg/OvmfXen.dsc                      -a X64

The patches in the series were formatted with the following options, for
posting:

  --stat=1000 --stat-graph-width=20 --find-copies-harder -U6

(The option "--find-copies-harder" is not the best for presenting every
single patch in the series, in isolation, but taken globally for the
entire series, it is the most helpful option.)

Some patches advance with really small steps, in order to cut down on a
subsequent "meaty" patch. Personally I don't like reviewing code
movement patches, so I did my best to (a) keep that to a minimum, and
(b) present it as unintrusively as possible.

The CC list is a bit long; the reason is that I kept touching up
"Maintainers.txt", and the "OvmfPkg/Bhyve" and "OvmfPkg/AmdSev"
platforms as well (whenever it made sense).

Cc: Andrew Fish <afish at apple.com>
Cc: Anthony Perard <anthony.perard at citrix.com>
Cc: Ard Biesheuvel <ardb+tianocore at kernel.org>
Cc: Brijesh Singh <brijesh.singh at amd.com>
Cc: Erdem Aktas <erdemaktas at google.com>
Cc: James Bottomley <jejb at linux.ibm.com>
Cc: Jiewen Yao <jiewen.yao at intel.com>
Cc: Jordan Justen <jordan.l.justen at intel.com>
Cc: Julien Grall <julien at xen.org>
Cc: Leif Lindholm <leif at nuviainc.com>
Cc: Michael D Kinney <michael.d.kinney at intel.com>
Cc: Min Xu <min.m.xu at intel.com>
Cc: Peter Grehan <grehan at freebsd.org>
Cc: Philippe Mathieu-Daudé <philmd at redhat.com>
Cc: Rebecca Cran <rebecca at bsdio.com>
Cc: Tom Lendacky <thomas.lendacky at amd.com>

Thanks,
Laszlo

Laszlo Ersek (43):
  OvmfPkg: remove the Xen drivers from the IA32, IA32X64, and X64
    platforms
  OvmfPkg: remove the Xen drivers from the AmdSev platform
  OvmfPkg: switch IA32, IA32X64, X64 to the fw_cfg-only ACPI platform
    driver
  OvmfPkg: switch the AmdSev platform to the fw_cfg-only ACPI platform
    driver
  OvmfPkg/README: bump minimum QEMU version to 1.7.1, machine types to
    1.7
  OvmfPkg/AcpiPlatformDxe: fix header file warts
  OvmfPkg/AcpiPlatformDxe: sort #includes and [LibraryClasses]
  OvmfPkg/AcpiPlatformDxe/QemuLoader.h: remove QemuFwCfgLib class
    dependency
  OvmfPkg/AcpiPlatformDxe: move "QemuLoader.h" to IndustryStandard
  OvmfPkg/AcpiPlatformDxe: consolidate #includes and [LibraryClasses]
  OvmfPkg/XenAcpiPlatformDxe: create from AcpiPlatformDxe
  OvmfPkg/AcpiPlatformDxe: remove the "AcpiPlatformDxe.inf" driver
  OvmfPkg/XenAcpiPlatformDxe: remove the QEMU ACPI linker/loader client
  OvmfPkg/XenAcpiPlatformDxe: remove QEMU fw_cfg dependency
  OvmfPkg/XenAcpiPlatformDxe: remove the InstallAcpiTable() helper
    function
  OvmfPkg/XenAcpiPlatformDxe: remove OVMF's built-in ACPI tables
  OvmfPkg/Bhyve/AcpiPlatformDxe: fix file path typo in comment
  OvmfPkg/AcpiTables: remove unused module
  OvmfPkg/OvmfXen: make "PcdPciDisableBusEnumeration" Fixed-at-Build
  OvmfPkg/XenAcpiPlatformDxe: remove delayed ACPI table installation
  OvmfPkg/PlatformPei: remove Xen support
  OvmfPkg: drop PcdPciDisableBusEnumeration from the IA32, IA32X64, X64
    DSCs
  OvmfPkg: drop PcdPciDisableBusEnumeration from the AmdSev platform
  OvmfPkg/Bhyve: make "PcdPciDisableBusEnumeration" Fixed-at-Build
  OvmfPkg/OvmfXen: remove IncompatiblePciDeviceSupport DXE driver
  OvmfPkg/Bhyve: remove IncompatiblePciDeviceSupport DXE driver
  OvmfPkg/IncompatiblePciDeviceSupportDxe: remove
    PcdPciDisableBusEnumeration
  OvmfPkg/PciHostBridgeLib: consolidate #includes and INF file sections
  OvmfPkg/PciHostBridgeLibScan: create from PciHostBridgeLib
  OvmfPkg/Bhyve: consume PciHostBridgeLibScan
  OvmfPkg/OvmfXen: consume PciHostBridgeLibScan
  OvmfPkg/PciHostBridgeLib: remove Bhyve and Xen support
  OvmfPkg/PciHostBridgeLibScan: remove QEMU (fw_cfg) support
  OvmfPkg/PciHostBridgeLibScan: remove PcdOvmfHostBridgePciDevId
  OvmfPkg/PciHostBridgeLibScan: clean up file names and file-top
    comments
  OvmfPkg/SmbiosPlatformDxe: clean up #includes and INF
  OvmfPkg/SmbiosPlatformDxe: return EFI_NOT_FOUND if there is no SMBIOS
    data
  OvmfPkg/SmbiosPlatformDxe: locate SMBIOS protocol in
    InstallAllStructures()
  OvmfPkg/SmbiosPlatformDxe: split GetXenSmbiosTables() decl. to new
    header
  OvmfPkg/SmbiosPlatformDxe: declare InstallAllStructures() in header
    file
  OvmfPkg/SmbiosPlatformDxe: create Xen-specific module INF file
  OvmfPkg/SmbiosPlatformDxe: split Xen entry point from QEMU entry point
  OvmfPkg: restrict XenPlatformLib to BdsDxe in the IA32, IA32X64, X64
    DSCs

 Maintainers.txt                                                                                          |  10 +-
 OvmfPkg/AcpiPlatformDxe/AcpiPlatform.c                                                                   | 262 --------
 OvmfPkg/AcpiPlatformDxe/AcpiPlatform.h                                                                   |  50 +-
 OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf                                                              |  71 --
 OvmfPkg/AcpiPlatformDxe/BootScript.c                                                                     |   7 +-
 OvmfPkg/AcpiPlatformDxe/EntryPoint.c                                                                     |   7 +-
 OvmfPkg/AcpiPlatformDxe/PciDecoding.c                                                                    |   4 +-
 OvmfPkg/AcpiPlatformDxe/Qemu.c                                                                           | 511 ---------------
 OvmfPkg/AcpiPlatformDxe/QemuFwCfgAcpi.c                                                                  |  21 +-
 OvmfPkg/AcpiPlatformDxe/QemuFwCfgAcpiPlatformDxe.inf                                                     |   5 +-
 OvmfPkg/AcpiTables/AcpiTables.inf                                                                        |  38 --
 OvmfPkg/AcpiTables/Dsdt.asl                                                                              | 692 --------------------
 OvmfPkg/AcpiTables/Facp.aslc                                                                             |  89 ---
 OvmfPkg/AcpiTables/Facs.aslc                                                                             |  78 ---
 OvmfPkg/AcpiTables/Madt.aslc                                                                             | 153 -----
 OvmfPkg/AcpiTables/Platform.h                                                                            |  68 --
 OvmfPkg/AcpiTables/Ssdt.asl                                                                              |  13 -
 OvmfPkg/AmdSev/AmdSevX64.dsc                                                                             |   9 +-
 OvmfPkg/AmdSev/AmdSevX64.fdf                                                                             |  12 +-
 OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatform.c                                                             |   2 +-
 OvmfPkg/Bhyve/BhyveX64.dsc                                                                               |   5 +-
 OvmfPkg/Bhyve/BhyveX64.fdf                                                                               |   1 -
 OvmfPkg/Bhyve/PlatformPei/PlatformPei.inf                                                                |   1 -
 OvmfPkg/{AcpiPlatformDxe => Include/IndustryStandard}/QemuLoader.h                                       |   8 +-
 OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.c                                   |  10 +-
 OvmfPkg/IncompatiblePciDeviceSupportDxe/IncompatiblePciDeviceSupport.inf                                 |   2 -
 OvmfPkg/Library/PciHostBridgeLib/PciHostBridgeLib.c                                                      |  28 +-
 OvmfPkg/Library/PciHostBridgeLib/PciHostBridgeLib.inf                                                    |   8 +-
 OvmfPkg/Library/{PciHostBridgeLib => PciHostBridgeLibScan}/PciHostBridge.h                               |   4 +-
 OvmfPkg/Library/PciHostBridgeLibScan/PciHostBridgeLib.c                                                  |  74 +++
 OvmfPkg/Library/{PciHostBridgeLib/PciHostBridgeLib.inf => PciHostBridgeLibScan/PciHostBridgeLibScan.inf} |  24 +-
 OvmfPkg/Library/{PciHostBridgeLib/XenSupport.c => PciHostBridgeLibScan/ScanForRootBridges.c}             |  27 +-
 OvmfPkg/OvmfPkgIa32.dsc                                                                                  |  10 +-
 OvmfPkg/OvmfPkgIa32.fdf                                                                                  |  12 +-
 OvmfPkg/OvmfPkgIa32X64.dsc                                                                               |  10 +-
 OvmfPkg/OvmfPkgIa32X64.fdf                                                                               |  12 +-
 OvmfPkg/OvmfPkgX64.dsc                                                                                   |  10 +-
 OvmfPkg/OvmfPkgX64.fdf                                                                                   |  12 +-
 OvmfPkg/OvmfXen.dsc                                                                                      |  10 +-
 OvmfPkg/OvmfXen.fdf                                                                                      |  12 +-
 OvmfPkg/PlatformPei/MemDetect.c                                                                          |  10 +-
 OvmfPkg/PlatformPei/Platform.c                                                                           | 162 +++--
 OvmfPkg/PlatformPei/Platform.h                                                                           |  17 -
 OvmfPkg/PlatformPei/PlatformPei.inf                                                                      |   4 -
 OvmfPkg/PlatformPei/Xen.c                                                                                | 222 -------
 OvmfPkg/PlatformPei/Xen.h                                                                                |  39 --
 OvmfPkg/README                                                                                           |  43 +-
 OvmfPkg/SmbiosPlatformDxe/ArmXen.c                                                                       |   2 +-
 OvmfPkg/SmbiosPlatformDxe/Qemu.c                                                                         |  41 +-
 OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.c                                                            |  79 +--
 OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.h                                                            |  37 +-
 OvmfPkg/SmbiosPlatformDxe/SmbiosPlatformDxe.inf                                                          |  23 +-
 OvmfPkg/SmbiosPlatformDxe/X86Xen.c                                                                       |   8 +-
 OvmfPkg/SmbiosPlatformDxe/Xen.c                                                                          |  49 ++
 OvmfPkg/SmbiosPlatformDxe/{ArmXen.c => XenSmbiosPlatformDxe.h}                                           |  20 +-
 OvmfPkg/SmbiosPlatformDxe/{SmbiosPlatformDxe.inf => XenSmbiosPlatformDxe.inf}                            |  32 +-
 OvmfPkg/XenAcpiPlatformDxe/AcpiPlatform.c                                                                |  41 ++
 OvmfPkg/XenAcpiPlatformDxe/AcpiPlatform.h                                                                |  28 +
 OvmfPkg/XenAcpiPlatformDxe/EntryPoint.c                                                                  |  43 ++
 OvmfPkg/{AcpiPlatformDxe => XenAcpiPlatformDxe}/Xen.c                                                    |  66 +-
 OvmfPkg/XenAcpiPlatformDxe/XenAcpiPlatformDxe.inf                                                        |  45 ++
 OvmfPkg/XenPlatformPei/Platform.c                                                                        |   1 -
 OvmfPkg/XenPlatformPei/Platform.h                                                                        |   5 -
 OvmfPkg/XenPlatformPei/Xen.c                                                                             |  20 -
 OvmfPkg/XenPlatformPei/XenPlatformPei.inf                                                                |   1 -
 65 files changed, 593 insertions(+), 2827 deletions(-)
 delete mode 100644 OvmfPkg/AcpiPlatformDxe/AcpiPlatform.c
 delete mode 100644 OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf
 delete mode 100644 OvmfPkg/AcpiPlatformDxe/Qemu.c
 delete mode 100644 OvmfPkg/AcpiTables/AcpiTables.inf
 delete mode 100644 OvmfPkg/AcpiTables/Dsdt.asl
 delete mode 100644 OvmfPkg/AcpiTables/Facp.aslc
 delete mode 100644 OvmfPkg/AcpiTables/Facs.aslc
 delete mode 100644 OvmfPkg/AcpiTables/Madt.aslc
 delete mode 100644 OvmfPkg/AcpiTables/Platform.h
 delete mode 100644 OvmfPkg/AcpiTables/Ssdt.asl
 rename OvmfPkg/{AcpiPlatformDxe => Include/IndustryStandard}/QemuLoader.h (94%)
 rename OvmfPkg/Library/{PciHostBridgeLib => PciHostBridgeLibScan}/PciHostBridge.h (57%)
 create mode 100644 OvmfPkg/Library/PciHostBridgeLibScan/PciHostBridgeLib.c
 copy OvmfPkg/Library/{PciHostBridgeLib/PciHostBridgeLib.inf => PciHostBridgeLibScan/PciHostBridgeLibScan.inf} (51%)
 rename OvmfPkg/Library/{PciHostBridgeLib/XenSupport.c => PciHostBridgeLibScan/ScanForRootBridges.c} (91%)
 delete mode 100644 OvmfPkg/PlatformPei/Xen.c
 delete mode 100644 OvmfPkg/PlatformPei/Xen.h
 create mode 100644 OvmfPkg/SmbiosPlatformDxe/Xen.c
 copy OvmfPkg/SmbiosPlatformDxe/{ArmXen.c => XenSmbiosPlatformDxe.h} (56%)
 copy OvmfPkg/SmbiosPlatformDxe/{SmbiosPlatformDxe.inf => XenSmbiosPlatformDxe.inf} (65%)
 create mode 100644 OvmfPkg/XenAcpiPlatformDxe/AcpiPlatform.c
 create mode 100644 OvmfPkg/XenAcpiPlatformDxe/AcpiPlatform.h
 create mode 100644 OvmfPkg/XenAcpiPlatformDxe/EntryPoint.c
 rename OvmfPkg/{AcpiPlatformDxe => XenAcpiPlatformDxe}/Xen.c (82%)
 create mode 100644 OvmfPkg/XenAcpiPlatformDxe/XenAcpiPlatformDxe.inf


base-commit: cfa6ffb113f2c0d922034cc77c0d6c52eea05497
-- 
2.19.1.3.g30247aa5d201



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#75669): https://edk2.groups.io/g/devel/message/75669
Mute This Topic: https://groups.io/mt/83110232/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-






More information about the edk2-devel-archive mailing list