public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* Re: [edk2-devel] [PATCH 00/43] OvmfPkg: remove Xen support from OvmfPkg*.dsc, in favor of OvmfXen.dsc
@ 2022-05-12 16:06 Laszlo Ersek
  0 siblings, 0 replies; 5+ messages in thread
From: Laszlo Ersek @ 2022-05-12 16:06 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/html, Size: 963 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread
* [PATCH 00/43] OvmfPkg: remove Xen support from OvmfPkg*.dsc, in favor of OvmfXen.dsc
@ 2021-05-26 20:14 Laszlo Ersek
  2021-06-02  8:36 ` [edk2-devel] " Laszlo Ersek
  0 siblings, 1 reply; 5+ messages in thread
From: Laszlo Ersek @ 2021-05-26 20:14 UTC (permalink / raw)
  To: devel
  Cc: Andrew Fish, Anthony Perard, Ard Biesheuvel, Brijesh Singh,
	Erdem Aktas, James Bottomley, Jiewen Yao, Jordan Justen,
	Julien Grall, Leif Lindholm, Michael D Kinney, Min Xu,
	Peter Grehan, Philippe Mathieu-Daudé, Rebecca Cran,
	Tom Lendacky

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


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

end of thread, other threads:[~2022-05-12 16:06 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-05-12 16:06 [edk2-devel] [PATCH 00/43] OvmfPkg: remove Xen support from OvmfPkg*.dsc, in favor of OvmfXen.dsc Laszlo Ersek
  -- strict thread matches above, loose matches on Subject: below --
2021-05-26 20:14 Laszlo Ersek
2021-06-02  8:36 ` [edk2-devel] " Laszlo Ersek
2021-06-04 14:02   ` Anthony PERARD
2021-06-04 14:19     ` Laszlo Ersek
2021-06-04 16:05     ` Laszlo Ersek

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