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

Ard Biesheuvel ardb at kernel.org
Thu May 27 07:34:13 UTC 2021


On Wed, 26 May 2021 at 22:15, Laszlo Ersek <lersek at redhat.com> wrote:
>
> 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
>

Thanks for taking this on.

For the series,

Reviewed-by: Ard Biesheuvel <ardb at kernel.org>


>  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 (#75753): https://edk2.groups.io/g/devel/message/75753
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