public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Laszlo Ersek" <lersek@redhat.com>
To: devel@edk2.groups.io
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Jiewen Yao <jiewen.yao@intel.com>
Subject: [edk2-devel] [PATCH 22/37] OvmfPkg: remove CsmSupportLib
Date: Sat, 11 Nov 2023 00:58:05 +0100	[thread overview]
Message-ID: <20231110235820.644381-23-lersek@redhat.com> (raw)
In-Reply-To: <20231110235820.644381-1-lersek@redhat.com>

CsmSupportLib is not used by any platform at this point, remove it.

This patch removes mentions of the following CSM resources from the source
code [*]:

- GUIDs (protocols or otherwise):
  - SYSTEM_ROM_FILE_GUID (1547B4F3-3E8A-4FEF-81C8-328ED647AB1A)
  - gEfiFirmwareVolumeProtocolGuid (by cutting the
    <Protocol/FirmwareVolume.h> link)
  - gEfiLegacyBiosPlatformProtocolGuid
  - gEfiLegacyBiosProtocolGuid
  - gEfiLegacyInterruptProtocolGuid

- headers:
  - FrameworkDxe.h
  - Protocol/FirmwareVolume.h
  - Protocol/LegacyBiosPlatform.h
  - Protocol/LegacyInterrupt.h

which extends the list of resources scheduled for removal to:

- GUIDs (protocols or otherwise):
  - SYSTEM_ROM_FILE_GUID (1547B4F3-3E8A-4FEF-81C8-328ED647AB1A)
  - gEfiFirmwareVolumeProtocolGuid
  - gEfiLegacy8259ProtocolGuid
  - gEfiLegacyBiosPlatformProtocolGuid
  - gEfiLegacyBiosProtocolGuid
  - gEfiLegacyInterruptProtocolGuid

- headers:
  - FrameworkDxe.h
  - Protocol/FirmwareVolume.h
  - Protocol/Legacy8259.h
  - Protocol/LegacyBios.h
  - Protocol/LegacyBiosPlatform.h
  - Protocol/LegacyInterrupt.h

[*] Note that gEfiLegacyRegion2ProtocolGuid, while a CSM-related protocol,
cannot be scheduled for removal, because the protocol GUID is defined in
"MdePkg.dec", and it's not only "OvmfPkg/Csm/CsmSupportLib" that produces
it in all of edk2, but also "MdeModulePkg/Universal/LegacyRegion2Dxe" (not
used by OVMF). For the same reason, the "Protocol/LegacyRegion2.h" header
(from MdePkg) cannot be scheduled for removal.

Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=4588
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
---
 OvmfPkg/Csm/CsmSupportLib/CsmSupportLib.inf |   55 -
 OvmfPkg/Csm/CsmSupportLib/CsmSupportLib.h   |   48 -
 OvmfPkg/Csm/CsmSupportLib/LegacyInterrupt.h |  115 ---
 OvmfPkg/Csm/CsmSupportLib/LegacyPlatform.h  |   97 --
 OvmfPkg/Csm/CsmSupportLib/LegacyRegion.h    |  202 ----
 OvmfPkg/Csm/CsmSupportLib/CsmSupportLib.c   |   31 -
 OvmfPkg/Csm/CsmSupportLib/LegacyInterrupt.c |  212 ----
 OvmfPkg/Csm/CsmSupportLib/LegacyPlatform.c  | 1086 --------------------
 OvmfPkg/Csm/CsmSupportLib/LegacyRegion.c    |  506 ---------
 9 files changed, 2352 deletions(-)

diff --git a/OvmfPkg/Csm/CsmSupportLib/CsmSupportLib.inf b/OvmfPkg/Csm/CsmSupportLib/CsmSupportLib.inf
deleted file mode 100644
index 45f201f07b5f..000000000000
--- a/OvmfPkg/Csm/CsmSupportLib/CsmSupportLib.inf
+++ /dev/null
@@ -1,55 +0,0 @@
-## @file
-#  Platform CSM Support Library
-#
-#  Copyright (c) 2008 - 2019, Intel Corporation. All rights reserved.<BR>
-#  SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-##
-
-[Defines]
-  INF_VERSION                    = 0x00010005
-  BASE_NAME                      = CsmSupportLib
-  FILE_GUID                      = 04e03541-4663-417d-93f6-976378247d61
-  MODULE_TYPE                    = BASE
-  VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = CsmSupportLib
-
-  CONSTRUCTOR                    = CsmSupportLibConstructor
-
-#
-# The following information is for reference only and not required by the build tools.
-#
-#  VALID_ARCHITECTURES           = IA32 X64 EBC
-#
-
-[Sources]
-  CsmSupportLib.c
-  CsmSupportLib.h
-  LegacyInterrupt.c
-  LegacyInterrupt.h
-  LegacyPlatform.c
-  LegacyPlatform.h
-  LegacyRegion.c
-  LegacyRegion.h
-
-[Packages]
-  MdePkg/MdePkg.dec
-  OvmfPkg/OvmfPkg.dec
-
-[Pcd]
-  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId
-
-[Protocols]
-  gEfiDevicePathProtocolGuid                    # PROTOCOL ALWAYS_CONSUMED
-  gEfiDiskInfoProtocolGuid                      # PROTOCOL ALWAYS_CONSUMED
-  gEfiLegacyBiosPlatformProtocolGuid            # PROTOCOL ALWAYS_CONSUMED
-  gEfiLegacyBiosProtocolGuid                    # PROTOCOL ALWAYS_CONSUMED
-  gEfiLegacyInterruptProtocolGuid               # PROTOCOL ALWAYS_PRODUCED
-  gEfiLegacyRegion2ProtocolGuid                 # PROTOCOL ALWAYS_PRODUCED
-  gEfiPciIoProtocolGuid                         # PROTOCOL ALWAYS_CONSUMED
-
-[LibraryClasses]
-  BaseLib
-  PciLib
-  IoLib
-
diff --git a/OvmfPkg/Csm/CsmSupportLib/CsmSupportLib.h b/OvmfPkg/Csm/CsmSupportLib/CsmSupportLib.h
deleted file mode 100644
index a6ee93f16739..000000000000
--- a/OvmfPkg/Csm/CsmSupportLib/CsmSupportLib.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/** @file
-  Platform CSM Support Library
-
-  Copyright (c) 2008 - 2011, Intel Corporation. All rights reserved.<BR>
-
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#ifndef _CSM_SUPPORT_LIB_H_
-#define _CSM_SUPPORT_LIB_H_
-
-#include <Uefi.h>
-
-/**
-  Initialize Legacy Region support
-
-  @retval EFI_SUCCESS   Successfully initialized
-
-**/
-EFI_STATUS
-LegacyRegionInit (
-  VOID
-  );
-
-/**
-  Initialize Legacy Interrupt support
-
-  @retval EFI_SUCCESS   Successfully initialized
-
-**/
-EFI_STATUS
-LegacyInterruptInstall (
-  VOID
-  );
-
-/**
-  Initialize Legacy Platform support
-
-  @retval EFI_SUCCESS   Successfully initialized
-
-**/
-EFI_STATUS
-LegacyBiosPlatformInstall (
-  VOID
-  );
-
-#endif
diff --git a/OvmfPkg/Csm/CsmSupportLib/LegacyInterrupt.h b/OvmfPkg/Csm/CsmSupportLib/LegacyInterrupt.h
deleted file mode 100644
index 132365b9cc0e..000000000000
--- a/OvmfPkg/Csm/CsmSupportLib/LegacyInterrupt.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/** @file
-  Legacy Region Support
-
-  Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
-
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#ifndef _LEGACY_INTERRUPT_H_
-#define _LEGACY_INTERRUPT_H_
-
-#include <PiDxe.h>
-
-#include <Protocol/LegacyInterrupt.h>
-
-#include <Library/PcdLib.h>
-#include <Library/PciLib.h>
-#include <Library/DebugLib.h>
-#include <Library/UefiBootServicesTableLib.h>
-#include <OvmfPlatforms.h>
-
-#define LEGACY_INT_BUS        0
-#define LEGACY_INT_DEV_PIIX4  0x01
-#define LEGACY_INT_DEV_Q35    0x1f
-#define LEGACY_INT_FUNC       0
-
-#define PIRQN  0x00           // PIRQ Null
-#define PIRQA  0x60
-#define PIRQB  0x61
-#define PIRQC  0x62
-#define PIRQD  0x63
-#define PIRQE  0x68
-#define PIRQF  0x69
-#define PIRQG  0x6A
-#define PIRQH  0x6B
-
-#define MAX_PIRQ_NUMBER  8
-
-/**
-  Return the number of PIRQs supported by this chipset.
-
-  @param[in]  This         Pointer to LegacyInterrupt Protocol
-  @param[out] NumberPirqs  The pointer to return the max IRQ number supported
-
-  @retval EFI_SUCCESS   Max PIRQs successfully returned
-
-**/
-EFI_STATUS
-EFIAPI
-GetNumberPirqs (
-  IN  EFI_LEGACY_INTERRUPT_PROTOCOL  *This,
-  OUT UINT8                          *NumberPirqs
-  );
-
-/**
-  Return PCI location of this device.
-  $PIR table requires this info.
-
-  @param[in]   This                - Protocol instance pointer.
-  @param[out]  Bus                 - PCI Bus
-  @param[out]  Device              - PCI Device
-  @param[out]  Function            - PCI Function
-
-  @retval  EFI_SUCCESS   Bus/Device/Function returned
-
-**/
-EFI_STATUS
-EFIAPI
-GetLocation (
-  IN  EFI_LEGACY_INTERRUPT_PROTOCOL  *This,
-  OUT UINT8                          *Bus,
-  OUT UINT8                          *Device,
-  OUT UINT8                          *Function
-  );
-
-/**
-  Read the given PIRQ register
-
-  @param[in]  This        Protocol instance pointer
-  @param[in]  PirqNumber  The Pirq register 0 = A, 1 = B etc
-  @param[out] PirqData    Value read
-
-  @retval EFI_SUCCESS   Decoding change affected.
-  @retval EFI_INVALID_PARAMETER   Invalid PIRQ number
-
-**/
-EFI_STATUS
-EFIAPI
-ReadPirq (
-  IN  EFI_LEGACY_INTERRUPT_PROTOCOL  *This,
-  IN  UINT8                          PirqNumber,
-  OUT UINT8                          *PirqData
-  );
-
-/**
-  Write the given PIRQ register
-
-  @param[in]  This        Protocol instance pointer
-  @param[in]  PirqNumber  The Pirq register 0 = A, 1 = B etc
-  @param[out] PirqData    Value to write
-
-  @retval EFI_SUCCESS   Decoding change affected.
-  @retval EFI_INVALID_PARAMETER   Invalid PIRQ number
-
-**/
-EFI_STATUS
-EFIAPI
-WritePirq (
-  IN  EFI_LEGACY_INTERRUPT_PROTOCOL  *This,
-  IN  UINT8                          PirqNumber,
-  IN  UINT8                          PirqData
-  );
-
-#endif
diff --git a/OvmfPkg/Csm/CsmSupportLib/LegacyPlatform.h b/OvmfPkg/Csm/CsmSupportLib/LegacyPlatform.h
deleted file mode 100644
index 7dddd5200f43..000000000000
--- a/OvmfPkg/Csm/CsmSupportLib/LegacyPlatform.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/** @file
-  Legacy BIOS Platform support
-
-  Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
-
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#ifndef LEGACY_BIOS_PLATFORM_H_
-#define LEGACY_BIOS_PLATFORM_H_
-
-#include <FrameworkDxe.h>
-
-#include <Protocol/PciIo.h>
-#include <Protocol/PciRootBridgeIo.h>
-#include <Protocol/DevicePath.h>
-#include <Protocol/LegacyInterrupt.h>
-#include <Protocol/LegacyRegion2.h>
-#include <Protocol/LegacyBiosPlatform.h>
-#include <Protocol/FirmwareVolume.h>
-#include <Protocol/DiskInfo.h>
-
-#include <Library/UefiDriverEntryPoint.h>
-#include <Library/UefiBootServicesTableLib.h>
-#include <Library/UefiRuntimeServicesTableLib.h>
-#include <Library/DebugLib.h>
-#include <Library/BaseMemoryLib.h>
-#include <Library/MemoryAllocationLib.h>
-#include <Library/IoLib.h>
-#include <Library/PciLib.h>
-#include <Library/PcdLib.h>
-#include <Library/DxeServicesLib.h>
-#include <Library/DevicePathLib.h>
-
-#include <IndustryStandard/Pci.h>
-
-//
-// PIRQ information constants.
-//
-#define MAX_IRQ_ROUTING_ENTRIES   6
-#define MAX_IRQ_PRIORITY_ENTRIES  7
-
-#define V_INTEL_VENDOR_ID      0x8086
-#define V_PIIX4_IDE_DEVICE_ID  0x7010
-
-//
-// Type declarations
-//
-typedef struct {
-  UINT8     SetupValue;
-  UINT16    DeviceType;
-  UINT8     Class;
-  UINT8     SubClass;
-} EFI_SETUP_BBS_MAP;
-
-typedef struct {
-  UINT8    Class;
-  UINT8    SubClass;
-} PCI_CLASS_RECORD;
-
-typedef struct {
-  EFI_LEGACY_PIRQ_TABLE_HEADER    PirqTable;
-  EFI_LEGACY_IRQ_ROUTING_ENTRY    IrqRoutingEntry[MAX_IRQ_ROUTING_ENTRIES];
-} EFI_LEGACY_PIRQ_TABLE;
-
-typedef struct {
-  EFI_HANDLE    Handle;
-  UINT16        Vid;
-  UINT16        Did;
-  UINT16        SvId;
-  UINT16        SysId;
-} DEVICE_STRUCTURE;
-
-typedef struct {
-  EFI_GUID    FileName;
-  UINTN       Valid;
-} SYSTEM_ROM_TABLE;
-
-typedef struct {
-  UINT32                               Signature;
-  EFI_HANDLE                           Handle;
-  EFI_LEGACY_BIOS_PLATFORM_PROTOCOL    LegacyBiosPlatform;
-  EFI_HANDLE                           ImageHandle;
-  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL      *PciRootBridgeIo;
-} LEGACY_BIOS_PLATFORM_INSTANCE;
-
-#define LEGACY_BIOS_PLATFORM_INSTANCE_SIGNATURE  SIGNATURE_32('P','B','I','O')
-
-#define LEGACY_BIOS_PLATFORM_INSTANCE_FROM_THIS(this) \
-  CR (this, \
-      LEGACY_BIOS_PLATFORM_INSTANCE, \
-      LegacyBiosPlatform, \
-      LEGACY_BIOS_PLATFORM_INSTANCE_SIGNATURE \
-      )
-
-#endif
diff --git a/OvmfPkg/Csm/CsmSupportLib/LegacyRegion.h b/OvmfPkg/Csm/CsmSupportLib/LegacyRegion.h
deleted file mode 100644
index 8ffe42a6a5e2..000000000000
--- a/OvmfPkg/Csm/CsmSupportLib/LegacyRegion.h
+++ /dev/null
@@ -1,202 +0,0 @@
-/** @file
-  Legacy Region Support
-
-  Copyright (c) 2008 - 2016, Intel Corporation. All rights reserved.<BR>
-
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#ifndef _LEGACY_REGION_DXE_H_
-#define _LEGACY_REGION_DXE_H_
-
-#include <PiDxe.h>
-
-#include <Protocol/LegacyRegion2.h>
-
-#include <IndustryStandard/Pci.h>
-#include <IndustryStandard/Q35MchIch9.h>
-#include <IndustryStandard/I440FxPiix4.h>
-
-#include <Library/PciLib.h>
-#include <Library/PcdLib.h>
-#include <Library/DebugLib.h>
-#include <Library/MemoryAllocationLib.h>
-#include <Library/UefiBootServicesTableLib.h>
-
-#define PAM_BASE_ADDRESS   0xc0000
-#define PAM_LIMIT_ADDRESS  BASE_1MB
-
-//
-// Describes Legacy Region blocks and status.
-//
-typedef struct {
-  UINT32     Start;
-  UINT32     Length;
-  BOOLEAN    ReadEnabled;
-  BOOLEAN    WriteEnabled;
-} LEGACY_MEMORY_SECTION_INFO;
-
-//
-// Provides a map of the PAM registers and bits used to set Read/Write access.
-//
-typedef struct {
-  UINTN    PAMRegPciLibAddress;
-  UINT8    ReadEnableData;
-  UINT8    WriteEnableData;
-} PAM_REGISTER_VALUE;
-
-/**
-  Modify the hardware to allow (decode) or disallow (not decode) memory reads in a region.
-
-  If the On parameter evaluates to TRUE, this function enables memory reads in the address range
-  Start to (Start + Length - 1).
-  If the On parameter evaluates to FALSE, this function disables memory reads in the address range
-  Start to (Start + Length - 1).
-
-  @param  This[in]              Indicates the EFI_LEGACY_REGION_PROTOCOL instance.
-  @param  Start[in]             The beginning of the physical address of the region whose attributes
-                                should be modified.
-  @param  Length[in]            The number of bytes of memory whose attributes should be modified.
-                                The actual number of bytes modified may be greater than the number
-                                specified.
-  @param  Granularity[out]      The number of bytes in the last region affected. This may be less
-                                than the total number of bytes affected if the starting address
-                                was not aligned to a region's starting address or if the length
-                                was greater than the number of bytes in the first region.
-  @param  On[in]                Decode / Non-Decode flag.
-
-  @retval EFI_SUCCESS           The region's attributes were successfully modified.
-  @retval EFI_INVALID_PARAMETER If Start or Length describe an address not in the Legacy Region.
-
-**/
-EFI_STATUS
-EFIAPI
-LegacyRegion2Decode (
-  IN  EFI_LEGACY_REGION2_PROTOCOL  *This,
-  IN  UINT32                       Start,
-  IN  UINT32                       Length,
-  OUT UINT32                       *Granularity,
-  IN  BOOLEAN                      *On
-  );
-
-/**
-  Modify the hardware to disallow memory writes in a region.
-
-  This function changes the attributes of a memory range to not allow writes.
-
-  @param  This[in]              Indicates the EFI_LEGACY_REGION_PROTOCOL instance.
-  @param  Start[in]             The beginning of the physical address of the region whose
-                                attributes should be modified.
-  @param  Length[in]            The number of bytes of memory whose attributes should be modified.
-                                The actual number of bytes modified may be greater than the number
-                                specified.
-  @param  Granularity[out]      The number of bytes in the last region affected. This may be less
-                                than the total number of bytes affected if the starting address was
-                                not aligned to a region's starting address or if the length was
-                                greater than the number of bytes in the first region.
-
-  @retval EFI_SUCCESS           The region's attributes were successfully modified.
-  @retval EFI_INVALID_PARAMETER If Start or Length describe an address not in the Legacy Region.
-
-**/
-EFI_STATUS
-EFIAPI
-LegacyRegion2Lock (
-  IN  EFI_LEGACY_REGION2_PROTOCOL  *This,
-  IN  UINT32                       Start,
-  IN  UINT32                       Length,
-  OUT UINT32                       *Granularity
-  );
-
-/**
-  Modify the hardware to disallow memory attribute changes in a region.
-
-  This function makes the attributes of a region read only. Once a region is boot-locked with this
-  function, the read and write attributes of that region cannot be changed until a power cycle has
-  reset the boot-lock attribute. Calls to Decode(), Lock() and Unlock() will have no effect.
-
-  @param  This[in]              Indicates the EFI_LEGACY_REGION_PROTOCOL instance.
-  @param  Start[in]             The beginning of the physical address of the region whose
-                                attributes should be modified.
-  @param  Length[in]            The number of bytes of memory whose attributes should be modified.
-                                The actual number of bytes modified may be greater than the number
-                                specified.
-  @param  Granularity[out]      The number of bytes in the last region affected. This may be less
-                                than the total number of bytes affected if the starting address was
-                                not aligned to a region's starting address or if the length was
-                                greater than the number of bytes in the first region.
-
-  @retval EFI_SUCCESS           The region's attributes were successfully modified.
-  @retval EFI_INVALID_PARAMETER If Start or Length describe an address not in the Legacy Region.
-  @retval EFI_UNSUPPORTED       The chipset does not support locking the configuration registers in
-                                a way that will not affect memory regions outside the legacy memory
-                                region.
-
-**/
-EFI_STATUS
-EFIAPI
-LegacyRegion2BootLock (
-  IN EFI_LEGACY_REGION2_PROTOCOL  *This,
-  IN  UINT32                      Start,
-  IN  UINT32                      Length,
-  OUT UINT32                      *Granularity
-  );
-
-/**
-  Modify the hardware to allow memory writes in a region.
-
-  This function changes the attributes of a memory range to allow writes.
-
-  @param  This[in]              Indicates the EFI_LEGACY_REGION_PROTOCOL instance.
-  @param  Start[in]             The beginning of the physical address of the region whose
-                                attributes should be modified.
-  @param  Length[in]            The number of bytes of memory whose attributes should be modified.
-                                The actual number of bytes modified may be greater than the number
-                                specified.
-  @param  Granularity[out]      The number of bytes in the last region affected. This may be less
-                                than the total number of bytes affected if the starting address was
-                                not aligned to a region's starting address or if the length was
-                                greater than the number of bytes in the first region.
-
-  @retval EFI_SUCCESS           The region's attributes were successfully modified.
-  @retval EFI_INVALID_PARAMETER If Start or Length describe an address not in the Legacy Region.
-
-**/
-EFI_STATUS
-EFIAPI
-LegacyRegion2Unlock (
-  IN  EFI_LEGACY_REGION2_PROTOCOL  *This,
-  IN  UINT32                       Start,
-  IN  UINT32                       Length,
-  OUT UINT32                       *Granularity
-  );
-
-/**
-  Get region information for the attributes of the Legacy Region.
-
-  This function is used to discover the granularity of the attributes for the memory in the legacy
-  region. Each attribute may have a different granularity and the granularity may not be the same
-  for all memory ranges in the legacy region.
-
-  @param  This[in]              Indicates the EFI_LEGACY_REGION_PROTOCOL instance.
-  @param  DescriptorCount[out]  The number of region descriptor entries returned in the Descriptor
-                                buffer.
-  @param  Descriptor[out]       A pointer to a pointer used to return a buffer where the legacy
-                                region information is deposited. This buffer will contain a list of
-                                DescriptorCount number of region descriptors.  This function will
-                                provide the memory for the buffer.
-
-  @retval EFI_SUCCESS           The region's attributes were successfully modified.
-  @retval EFI_INVALID_PARAMETER If Start or Length describe an address not in the Legacy Region.
-
-**/
-EFI_STATUS
-EFIAPI
-LegacyRegionGetInfo (
-  IN  EFI_LEGACY_REGION2_PROTOCOL   *This,
-  OUT UINT32                        *DescriptorCount,
-  OUT EFI_LEGACY_REGION_DESCRIPTOR  **Descriptor
-  );
-
-#endif
diff --git a/OvmfPkg/Csm/CsmSupportLib/CsmSupportLib.c b/OvmfPkg/Csm/CsmSupportLib/CsmSupportLib.c
deleted file mode 100644
index 3ffd6e92b282..000000000000
--- a/OvmfPkg/Csm/CsmSupportLib/CsmSupportLib.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/** @file
-  Platform CSM Support Library
-
-  Copyright (c) 2008 - 2011, Intel Corporation. All rights reserved.<BR>
-
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#include "CsmSupportLib.h"
-
-/**
-  The constructor function for the platform CSM support library
-
-  @retval EFI_SUCCESS   The constructor always returns RETURN_SUCCESS.
-
-**/
-RETURN_STATUS
-EFIAPI
-CsmSupportLibConstructor (
-  VOID
-  )
-{
-  LegacyRegionInit ();
-
-  LegacyInterruptInstall ();
-
-  LegacyBiosPlatformInstall ();
-
-  return EFI_SUCCESS;
-}
diff --git a/OvmfPkg/Csm/CsmSupportLib/LegacyInterrupt.c b/OvmfPkg/Csm/CsmSupportLib/LegacyInterrupt.c
deleted file mode 100644
index 410e4e457d9c..000000000000
--- a/OvmfPkg/Csm/CsmSupportLib/LegacyInterrupt.c
+++ /dev/null
@@ -1,212 +0,0 @@
-/** @file
-  Legacy Interrupt Support
-
-  Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
-
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#include "LegacyInterrupt.h"
-
-//
-// Handle for the Legacy Interrupt Protocol instance produced by this driver
-//
-STATIC EFI_HANDLE  mLegacyInterruptHandle = NULL;
-
-//
-// Legacy Interrupt Device number (0x01 on piix4, 0x1f on q35/mch)
-//
-STATIC UINT8  mLegacyInterruptDevice;
-
-//
-// The Legacy Interrupt Protocol instance produced by this driver
-//
-STATIC EFI_LEGACY_INTERRUPT_PROTOCOL  mLegacyInterrupt = {
-  GetNumberPirqs,
-  GetLocation,
-  ReadPirq,
-  WritePirq
-};
-
-STATIC UINT8  PirqReg[MAX_PIRQ_NUMBER] = { PIRQA, PIRQB, PIRQC, PIRQD, PIRQE, PIRQF, PIRQG, PIRQH };
-
-/**
-  Return the number of PIRQs supported by this chipset.
-
-  @param[in]  This         Pointer to LegacyInterrupt Protocol
-  @param[out] NumberPirqs  The pointer to return the max IRQ number supported
-
-  @retval EFI_SUCCESS   Max PIRQs successfully returned
-
-**/
-EFI_STATUS
-EFIAPI
-GetNumberPirqs (
-  IN  EFI_LEGACY_INTERRUPT_PROTOCOL  *This,
-  OUT UINT8                          *NumberPirqs
-  )
-{
-  *NumberPirqs = MAX_PIRQ_NUMBER;
-
-  return EFI_SUCCESS;
-}
-
-/**
-  Return PCI location of this device.
-  $PIR table requires this info.
-
-  @param[in]   This                - Protocol instance pointer.
-  @param[out]  Bus                 - PCI Bus
-  @param[out]  Device              - PCI Device
-  @param[out]  Function            - PCI Function
-
-  @retval  EFI_SUCCESS   Bus/Device/Function returned
-
-**/
-EFI_STATUS
-EFIAPI
-GetLocation (
-  IN  EFI_LEGACY_INTERRUPT_PROTOCOL  *This,
-  OUT UINT8                          *Bus,
-  OUT UINT8                          *Device,
-  OUT UINT8                          *Function
-  )
-{
-  *Bus      = LEGACY_INT_BUS;
-  *Device   = mLegacyInterruptDevice;
-  *Function = LEGACY_INT_FUNC;
-
-  return EFI_SUCCESS;
-}
-
-/**
-  Builds the PCI configuration address for the register specified by PirqNumber
-
-  @param[in]  PirqNumber - The PIRQ number to build the PCI configuration address for
-
-  @return  The PCI Configuration address for the PIRQ
-**/
-UINTN
-GetAddress (
-  UINT8  PirqNumber
-  )
-{
-  return PCI_LIB_ADDRESS (
-           LEGACY_INT_BUS,
-           mLegacyInterruptDevice,
-           LEGACY_INT_FUNC,
-           PirqReg[PirqNumber]
-           );
-}
-
-/**
-  Read the given PIRQ register
-
-  @param[in]  This        Protocol instance pointer
-  @param[in]  PirqNumber  The Pirq register 0 = A, 1 = B etc
-  @param[out] PirqData    Value read
-
-  @retval EFI_SUCCESS   Decoding change affected.
-  @retval EFI_INVALID_PARAMETER   Invalid PIRQ number
-
-**/
-EFI_STATUS
-EFIAPI
-ReadPirq (
-  IN  EFI_LEGACY_INTERRUPT_PROTOCOL  *This,
-  IN  UINT8                          PirqNumber,
-  OUT UINT8                          *PirqData
-  )
-{
-  if (PirqNumber >= MAX_PIRQ_NUMBER) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  *PirqData = PciRead8 (GetAddress (PirqNumber));
-  *PirqData = (UINT8)(*PirqData & 0x7f);
-
-  return EFI_SUCCESS;
-}
-
-/**
-  Write the given PIRQ register
-
-  @param[in]  This        Protocol instance pointer
-  @param[in]  PirqNumber  The Pirq register 0 = A, 1 = B etc
-  @param[out] PirqData    Value to write
-
-  @retval EFI_SUCCESS   Decoding change affected.
-  @retval EFI_INVALID_PARAMETER   Invalid PIRQ number
-
-**/
-EFI_STATUS
-EFIAPI
-WritePirq (
-  IN  EFI_LEGACY_INTERRUPT_PROTOCOL  *This,
-  IN  UINT8                          PirqNumber,
-  IN  UINT8                          PirqData
-  )
-{
-  if (PirqNumber >= MAX_PIRQ_NUMBER) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  PciWrite8 (GetAddress (PirqNumber), PirqData);
-  return EFI_SUCCESS;
-}
-
-/**
-  Initialize Legacy Interrupt support
-
-  @retval EFI_SUCCESS   Successfully initialized
-
-**/
-EFI_STATUS
-LegacyInterruptInstall (
-  VOID
-  )
-{
-  UINT16      HostBridgeDevId;
-  EFI_STATUS  Status;
-
-  //
-  // Make sure the Legacy Interrupt Protocol is not already installed in the system
-  //
-  ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gEfiLegacyInterruptProtocolGuid);
-
-  //
-  // Query Host Bridge DID to determine platform type, then set device number
-  //
-  HostBridgeDevId = PcdGet16 (PcdOvmfHostBridgePciDevId);
-  switch (HostBridgeDevId) {
-    case INTEL_82441_DEVICE_ID:
-      mLegacyInterruptDevice = LEGACY_INT_DEV_PIIX4;
-      break;
-    case INTEL_Q35_MCH_DEVICE_ID:
-      mLegacyInterruptDevice = LEGACY_INT_DEV_Q35;
-      break;
-    default:
-      DEBUG ((
-        DEBUG_ERROR,
-        "%a: Unknown Host Bridge Device ID: 0x%04x\n",
-        __func__,
-        HostBridgeDevId
-        ));
-      ASSERT (FALSE);
-      return EFI_UNSUPPORTED;
-  }
-
-  //
-  // Make a new handle and install the protocol
-  //
-  Status = gBS->InstallMultipleProtocolInterfaces (
-                  &mLegacyInterruptHandle,
-                  &gEfiLegacyInterruptProtocolGuid,
-                  &mLegacyInterrupt,
-                  NULL
-                  );
-  ASSERT_EFI_ERROR (Status);
-
-  return Status;
-}
diff --git a/OvmfPkg/Csm/CsmSupportLib/LegacyPlatform.c b/OvmfPkg/Csm/CsmSupportLib/LegacyPlatform.c
deleted file mode 100644
index 491897adbdf2..000000000000
--- a/OvmfPkg/Csm/CsmSupportLib/LegacyPlatform.c
+++ /dev/null
@@ -1,1086 +0,0 @@
-/** @file
-  Legacy BIOS Platform support
-
-  Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
-
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#include "LegacyPlatform.h"
-
-EFI_SETUP_BBS_MAP  mSetupBbsMap[] = {
-  { 1, 2,    1, 1 },      // ATA HardDrive
-  { 2, 3,    1, 1 },      // ATAPI CDROM
-  { 3, 0x80, 2, 0 },      // PXE
-  { 4, 1,    0, 6 },      // USB Floppy
-  { 4, 2,    0, 6 },      // USB HDD
-  { 4, 3,    0, 6 },      // USB CD
-  { 4, 1,    0, 0 },      // USB ZIP Bugbug since Class/SubClass code is uninitialized
-  { 4, 2,    0, 0 }       // USB ZIP Bugbug since Class/SubClass code is uninitialized
-};
-
-//
-// Global variables for System ROMs
-//
-#define SYSTEM_ROM_FILE_GUID \
-{ 0x1547B4F3, 0x3E8A, 0x4FEF, { 0x81, 0xC8, 0x32, 0x8E, 0xD6, 0x47, 0xAB, 0x1A } }
-
-#define NULL_ROM_FILE_GUID \
-{ 0x00000000, 0x0000, 0x0000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }
-
-SYSTEM_ROM_TABLE  mSystemRomTable[] = {
-  { SYSTEM_ROM_FILE_GUID, 1 },
-  { NULL_ROM_FILE_GUID,   0 }
-};
-
-EFI_HANDLE  mVgaHandles[0x20];
-EFI_HANDLE  mDiskHandles[0x20];
-EFI_HANDLE  mIsaHandles[0x20];
-
-EFI_LEGACY_IRQ_PRIORITY_TABLE_ENTRY  IrqPriorityTable[MAX_IRQ_PRIORITY_ENTRIES] = {
-  { 0x0B, 0 },
-  { 0x09, 0 },
-  { 0x0A, 0 },
-  { 0x05, 0 },
-  { 0x07, 0 },
-  { 0x00, 0 },
-  { 0x00, 0 }
-};
-
-//
-// PIRQ Table
-// - Slot numbering will be used to update the bus number and determine bridge
-//   to check to get bus number.  The Slot number - 1 is an index into a decode
-//   table to get the bridge information.
-//
-EFI_LEGACY_PIRQ_TABLE  PirqTableHead = {
-  {
-    EFI_LEGACY_PIRQ_TABLE_SIGNATURE, // UINT32  Signature
-    0x00,                            // UINT8   MinorVersion
-    0x01,                            // UINT8   MajorVersion
-    0x0000,                          // UINT16  TableSize
-    0x00,                            // UINT8   Bus
-    0x08,                            // UINT8   DevFun
-    0x0000,                          // UINT16  PciOnlyIrq
-    0x8086,                          // UINT16  CompatibleVid
-    0x122e,                          // UINT16  CompatibleDid
-    0x00000000,                      // UINT32  Miniport
-    {                 // UINT8   Reserved[11]
-      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-      0x00, 0x00, 0x00
-    },
-    0x00,             // UINT8   Checksum
-  },
-  {
-    //           -- Pin 1 --   -- Pin 2 --   -- Pin 3 --   -- Pin 4 --
-    // Bus  Dev   Reg   Map     Reg   Map     Reg   Map     Reg   Map
-    //
-    { 0x00, 0x08, {
-            { 0x60, 0xDEB8 }, { 0x61, 0xDEB8 }, { 0x62, 0xDEB8 }, { 0x63, 0xDEB8 }
-          }, 0x00, 0x00 },
-    { 0x00, 0x10, {
-            { 0x61, 0xDEB8 }, { 0x62, 0xDEB8 }, { 0x63, 0xDEB8 }, { 0x60, 0xDEB8 }
-          }, 0x01, 0x00 },
-    { 0x00, 0x18, {
-            { 0x62, 0xDEB8 }, { 0x63, 0xDEB8 }, { 0x60, 0xDEB8 }, { 0x61, 0xDEB8 }
-          }, 0x02, 0x00 },
-    { 0x00, 0x20, {
-            { 0x63, 0xDEB8 }, { 0x60, 0xDEB8 }, { 0x61, 0xDEB8 }, { 0x62, 0xDEB8 }
-          }, 0x03, 0x00 },
-    { 0x00, 0x28, {
-            { 0x60, 0xDEB8 }, { 0x61, 0xDEB8 }, { 0x62, 0xDEB8 }, { 0x63, 0xDEB8 }
-          }, 0x04, 0x00 },
-    { 0x00, 0x30, {
-            { 0x61, 0xDEB8 }, { 0x62, 0xDEB8 }, { 0x63, 0xDEB8 }, { 0x60, 0xDEB8 }
-          }, 0x05, 0x00 },
-  }
-};
-
-LEGACY_BIOS_PLATFORM_INSTANCE  mPrivateData;
-EFI_HANDLE                     mImageHandle = NULL;
-
-/**
-  Return the handles and assorted information for the specified PCI Class code
-
-  @param[in]     PciClasses    Array of PCI_CLASS_RECORD to find terminated with ClassCode 0xff
-  @param[in,out] DeviceTable   Table to place handles etc in.
-  @param[in,out] DeviceIndex   Number of devices found
-  @param[in]     DeviceFlags   FALSE if a valid legacy ROM is required, TRUE otherwise.
-
-  @retval EFI_SUCCESS     One or more devices found
-  @retval EFI_NOT_FOUND   No device found
-
-**/
-EFI_STATUS
-FindAllDeviceTypes (
-  IN       PCI_CLASS_RECORD  *PciClasses,
-  IN OUT   DEVICE_STRUCTURE  *DeviceTable,
-  IN OUT   UINT16            *DeviceIndex,
-  IN       BOOLEAN           DeviceFlags
-  )
-{
-  UINTN                     HandleCount;
-  EFI_HANDLE                *HandleBuffer;
-  UINTN                     Index;
-  UINTN                     StartIndex;
-  PCI_TYPE00                PciConfigHeader;
-  EFI_PCI_IO_PROTOCOL       *PciIo;
-  EFI_LEGACY_BIOS_PROTOCOL  *LegacyBios;
-  UINTN                     Flags;
-  EFI_STATUS                Status;
-  UINTN                     Index2;
-
-  //
-  // Get legacy BIOS protocol as it is required to deal with Option ROMs.
-  //
-  StartIndex = *DeviceIndex;
-  Status     = gBS->LocateProtocol (
-                      &gEfiLegacyBiosProtocolGuid,
-                      NULL,
-                      (VOID **)&LegacyBios
-                      );
-  ASSERT_EFI_ERROR (Status);
-
-  //
-  // Get all PCI handles and check them to generate a list of matching devices.
-  //
-  gBS->LocateHandleBuffer (
-         ByProtocol,
-         &gEfiPciIoProtocolGuid,
-         NULL,
-         &HandleCount,
-         &HandleBuffer
-         );
-  for (Index = 0; Index < HandleCount; Index++) {
-    gBS->HandleProtocol (
-           HandleBuffer[Index],
-           &gEfiPciIoProtocolGuid,
-           (VOID **)&PciIo
-           );
-    PciIo->Pci.Read (
-                 PciIo,
-                 EfiPciIoWidthUint32,
-                 0,
-                 sizeof (PciConfigHeader) / sizeof (UINT32),
-                 &PciConfigHeader
-                 );
-    for (Index2 = 0; PciClasses[Index2].Class != 0xff; Index2++) {
-      if ((PciConfigHeader.Hdr.ClassCode[2] == PciClasses[Index2].Class) &&
-          (PciConfigHeader.Hdr.ClassCode[1] == PciClasses[Index2].SubClass))
-      {
-        LegacyBios->CheckPciRom (
-                      LegacyBios,
-                      HandleBuffer[Index],
-                      NULL,
-                      NULL,
-                      &Flags
-                      );
-
-        //
-        // Verify that results of OPROM check match request.
-        // The two valid requests are:
-        //   DeviceFlags = 0 require a valid legacy ROM
-        //   DeviceFlags = 1 require either no ROM or a valid legacy ROM
-        //
-        if (
-            ((DeviceFlags != 0) && (Flags == NO_ROM)) ||
-            ((Flags & (ROM_FOUND | VALID_LEGACY_ROM)) == (ROM_FOUND | VALID_LEGACY_ROM))
-            )
-        {
-          DeviceTable->Handle = HandleBuffer[Index];
-          DeviceTable->Vid    = PciConfigHeader.Hdr.VendorId;
-          DeviceTable->Did    = PciConfigHeader.Hdr.DeviceId;
-          DeviceTable->SvId   = PciConfigHeader.Device.SubsystemVendorID;
-          DeviceTable->SysId  = PciConfigHeader.Device.SubsystemID;
-          ++*DeviceIndex;
-          DeviceTable++;
-        }
-      }
-    }
-  }
-
-  //
-  // Free any allocated buffers
-  //
-  gBS->FreePool (HandleBuffer);
-
-  if (*DeviceIndex != StartIndex) {
-    return EFI_SUCCESS;
-  } else {
-    return EFI_NOT_FOUND;
-  }
-}
-
-/**
-  Load and initialize the Legacy BIOS SMM handler.
-
-  @param  This                   The protocol instance pointer.
-  @param  EfiToLegacy16BootTable A pointer to Legacy16 boot table.
-
-  @retval EFI_SUCCESS           SMM code loaded.
-  @retval EFI_DEVICE_ERROR      SMM code failed to load
-
-**/
-EFI_STATUS
-EFIAPI
-SmmInit (
-  IN  EFI_LEGACY_BIOS_PLATFORM_PROTOCOL  *This,
-  IN  VOID                               *EfiToLegacy16BootTable
-  )
-{
-  return EFI_SUCCESS;
-}
-
-/**
-  Finds the device path that should be used as the primary display adapter.
-
-  @param  VgaHandle - The handle of the video device
-
-**/
-VOID
-GetSelectedVgaDeviceInfo (
-  OUT EFI_HANDLE  *VgaHandle
-  )
-{
-  EFI_STATUS           Status;
-  UINTN                HandleCount;
-  EFI_HANDLE           *HandleBuffer;
-  UINTN                Index;
-  EFI_PCI_IO_PROTOCOL  *PciIo;
-  PCI_TYPE00           Pci;
-  UINT8                MinBus;
-  UINT8                MaxBus;
-  UINTN                Segment;
-  UINTN                Bus;
-  UINTN                Device;
-  UINTN                Function;
-  UINTN                SelectedAddress;
-  UINTN                CurrentAddress;
-
-  //
-  // Initialize return to 'not found' state
-  //
-  *VgaHandle = NULL;
-
-  //
-  // Initialize variable states.  This is important for selecting the VGA
-  // device if multiple devices exist behind a single bridge.
-  //
-  HandleCount     = 0;
-  HandleBuffer    = NULL;
-  SelectedAddress = PCI_LIB_ADDRESS (0xff, 0x1f, 0x7, 0);
-
-  //
-  // The bus range to search for a VGA device in.
-  //
-  MinBus = MaxBus = 0;
-
-  //
-  // Start to check all the pci io to find all possible VGA device
-  //
-  HandleCount  = 0;
-  HandleBuffer = NULL;
-  Status       = gBS->LocateHandleBuffer (
-                        ByProtocol,
-                        &gEfiPciIoProtocolGuid,
-                        NULL,
-                        &HandleCount,
-                        &HandleBuffer
-                        );
-  if (EFI_ERROR (Status)) {
-    return;
-  }
-
-  for (Index = 0; Index < HandleCount; Index++) {
-    Status = gBS->HandleProtocol (HandleBuffer[Index], &gEfiPciIoProtocolGuid, (VOID **)&PciIo);
-    if (!EFI_ERROR (Status)) {
-      //
-      // Determine if this is in the correct bus range.
-      //
-      Status = PciIo->GetLocation (PciIo, &Segment, &Bus, &Device, &Function);
-      if (EFI_ERROR (Status) || ((Bus < MinBus) || (Bus > MaxBus))) {
-        continue;
-      }
-
-      //
-      // Read device information.
-      //
-      Status = PciIo->Pci.Read (
-                            PciIo,
-                            EfiPciIoWidthUint32,
-                            0,
-                            sizeof (Pci) / sizeof (UINT32),
-                            &Pci
-                            );
-      if (EFI_ERROR (Status)) {
-        continue;
-      }
-
-      //
-      // Make sure the device is a VGA device.
-      //
-      if (!IS_PCI_VGA (&Pci)) {
-        continue;
-      }
-
-      DEBUG ((
-        DEBUG_INFO,
-        "PCI VGA: 0x%04x:0x%04x\n",
-        Pci.Hdr.VendorId,
-        Pci.Hdr.DeviceId
-        ));
-
-      //
-      // Currently we use the lowest numbered bus/device/function if multiple
-      // devices are found in the target bus range.
-      //
-      CurrentAddress = PCI_LIB_ADDRESS (Bus, Device, Function, 0);
-      if (CurrentAddress < SelectedAddress) {
-        SelectedAddress = CurrentAddress;
-        *VgaHandle      = HandleBuffer[Index];
-      }
-    }
-  }
-
-  FreePool (HandleBuffer);
-}
-
-/**
-  Returns a buffer of handles for the requested subfunction.
-
-  @param  This                  The protocol instance pointer.
-  @param  Mode                  Specifies what handle to return. See EFI_GET_PLATFORM_HANDLE_MODE enum.
-  @param  Type                  Mode specific. See EFI_GET_PLATFORM_HANDLE_MODE enum.
-  @param  HandleBuffer          Mode specific. See EFI_GET_PLATFORM_HANDLE_MODE enum.
-  @param  HandleCount           Mode specific. See EFI_GET_PLATFORM_HANDLE_MODE enum.
-  @param  AdditionalData        Mode specific. See EFI_GET_PLATFORM_HANDLE_MODE enum.
-
-  @retval EFI_SUCCESS           Handle is valid.
-  @retval EFI_UNSUPPORTED       Mode is not supported on the platform.
-  @retval EFI_NOT_FOUND         Handle is not known.
-
-**/
-EFI_STATUS
-EFIAPI
-GetPlatformHandle (
-  IN  EFI_LEGACY_BIOS_PLATFORM_PROTOCOL  *This,
-  IN  EFI_GET_PLATFORM_HANDLE_MODE       Mode,
-  IN  UINT16                             Type,
-  OUT EFI_HANDLE                         **HandleBuffer,
-  OUT UINTN                              *HandleCount,
-  OUT VOID                               **AdditionalData OPTIONAL
-  )
-{
-  DEVICE_STRUCTURE          LocalDevice[0x40];
-  UINT32                    LocalIndex;
-  UINT32                    Index;
-  DEVICE_STRUCTURE          TempDevice;
-  EFI_STATUS                Status;
-  EFI_PCI_IO_PROTOCOL       *PciIo;
-  UINTN                     Segment;
-  UINTN                     Bus;
-  UINTN                     Device;
-  UINTN                     Function;
-  HDD_INFO                  *HddInfo;
-  PCI_TYPE00                PciConfigHeader;
-  UINT32                    HddIndex;
-  EFI_HANDLE                IdeHandle;
-  EFI_LEGACY_BIOS_PROTOCOL  *LegacyBios;
-  PCI_CLASS_RECORD          ClassLists[10];
-  UINTN                     PriorityIndex;
-
-  static BOOLEAN  bConnected = FALSE;
-
-  LocalIndex = 0x00;
-  HddInfo    = NULL;
-  HddIndex   = 0;
-
-  Status = gBS->LocateProtocol (
-                  &gEfiLegacyBiosProtocolGuid,
-                  NULL,
-                  (VOID **)&LegacyBios
-                  );
-
-  //
-  // Process mode specific operations
-  //
-  switch (Mode) {
-    case EfiGetPlatformVgaHandle:
-      //
-      // Get the handle for the currently selected VGA device.
-      //
-      GetSelectedVgaDeviceInfo (&mVgaHandles[0]);
-      *HandleBuffer = &mVgaHandles[0];
-      *HandleCount  = (mVgaHandles[0] != NULL) ? 1 : 0;
-      return EFI_SUCCESS;
-    case EfiGetPlatformIdeHandle:
-      IdeHandle = NULL;
-      if (AdditionalData != NULL) {
-        HddInfo = (HDD_INFO *)*AdditionalData;
-      }
-
-      //
-      // Locate all found block io devices
-      //
-      ClassLists[0].Class    = PCI_CLASS_MASS_STORAGE;
-      ClassLists[0].SubClass = PCI_CLASS_MASS_STORAGE_SCSI;
-      ClassLists[1].Class    = PCI_CLASS_MASS_STORAGE;
-      ClassLists[1].SubClass = PCI_CLASS_MASS_STORAGE_IDE;
-      ClassLists[2].Class    = PCI_CLASS_MASS_STORAGE;
-      ClassLists[2].SubClass = PCI_CLASS_MASS_STORAGE_RAID;
-      ClassLists[3].Class    = PCI_CLASS_MASS_STORAGE;
-      ClassLists[3].SubClass = PCI_CLASS_MASS_STORAGE_SATADPA;
-      ClassLists[4].Class    = 0xff;
-      FindAllDeviceTypes (ClassLists, LocalDevice, (UINT16 *)&LocalIndex, TRUE);
-      if (LocalIndex == 0) {
-        return EFI_NOT_FOUND;
-      }
-
-      //
-      // Make sure all IDE controllers are connected. This is necessary
-      // in NO_CONFIG_CHANGE boot path to ensure IDE controller is correctly
-      // initialized and all IDE drives are enumerated
-      //
-      if (!bConnected) {
-        for (Index = 0; Index < LocalIndex; Index++) {
-          gBS->ConnectController (LocalDevice[Index].Handle, NULL, NULL, TRUE);
-        }
-      }
-
-      //
-      // Locate onboard controllers.
-      //
-      for (Index = 0; Index < LocalIndex; Index++) {
-        if (LocalDevice[Index].Vid == V_INTEL_VENDOR_ID) {
-          if (LocalDevice[Index].Did == V_PIIX4_IDE_DEVICE_ID) {
-            IdeHandle = LocalDevice[Index].Handle;
-          }
-        }
-      }
-
-      //
-      // Set the IDE contorller as primary devices.
-      //
-      PriorityIndex = 0;
-      for (Index = 0; Index < LocalIndex; Index++) {
-        if ((LocalDevice[Index].Handle == IdeHandle) && (PriorityIndex == 0)) {
-          TempDevice                 = LocalDevice[PriorityIndex];
-          LocalDevice[PriorityIndex] = LocalDevice[Index];
-          LocalDevice[Index]         = TempDevice;
-          PriorityIndex++;
-          break;
-        }
-      }
-
-      //
-      // Copy over handles and update return values.
-      //
-      for (Index = 0; Index < LocalIndex; Index++) {
-        mDiskHandles[Index] = LocalDevice[Index].Handle;
-      }
-
-      *HandleBuffer = &mDiskHandles[0];
-      *HandleCount  = LocalIndex;
-
-      //
-      // We have connected all IDE controllers once. No more needed
-      //
-      bConnected = TRUE;
-
-      //
-      // Log all onboard controllers.
-      //
-      for (Index = 0; (Index < LocalIndex) && (AdditionalData != NULL); Index++) {
-        if ((LocalDevice[Index].Handle != NULL) &&
-            (LocalDevice[Index].Handle == IdeHandle))
-        {
-          Status = gBS->HandleProtocol (
-                          LocalDevice[Index].Handle,
-                          &gEfiPciIoProtocolGuid,
-                          (VOID **)&PciIo
-                          );
-          PciIo->Pci.Read (
-                       PciIo,
-                       EfiPciIoWidthUint32,
-                       0,
-                       sizeof (PciConfigHeader) / sizeof (UINT32),
-                       &PciConfigHeader
-                       );
-          if (!EFI_ERROR (Status)) {
-            PciIo->GetLocation (
-                     PciIo,
-                     &Segment,
-                     &Bus,
-                     &Device,
-                     &Function
-                     );
-
-            //
-            // Be sure to only fill out correct information based on platform
-            // configuration.
-            //
-            HddInfo[HddIndex].Status      |= HDD_PRIMARY;
-            HddInfo[HddIndex].Bus          = (UINT32)Bus;
-            HddInfo[HddIndex].Device       = (UINT32)Device;
-            HddInfo[HddIndex].Function     = (UINT32)Function;
-            HddInfo[HddIndex + 1].Status  |= HDD_SECONDARY;
-            HddInfo[HddIndex + 1].Bus      = (UINT32)Bus;
-            HddInfo[HddIndex + 1].Device   = (UINT32)Device;
-            HddInfo[HddIndex + 1].Function = (UINT32)Function;
-
-            //
-            // Primary controller data
-            //
-            if ((PciConfigHeader.Hdr.ClassCode[0] & 0x01) != 0) {
-              HddInfo[HddIndex].CommandBaseAddress =
-                (UINT16)(PciConfigHeader.Device.Bar[0] & 0xfffc);
-              HddInfo[HddIndex].ControlBaseAddress =
-                (UINT16)((PciConfigHeader.Device.Bar[1] & 0xfffc)+2);
-              HddInfo[HddIndex].BusMasterAddress =
-                (UINT16)(PciConfigHeader.Device.Bar[4] & 0xfffc);
-              HddInfo[HddIndex].HddIrq = PciConfigHeader.Device.InterruptLine;
-            } else {
-              HddInfo[HddIndex].HddIrq             = 14;
-              HddInfo[HddIndex].CommandBaseAddress = 0x1f0;
-              HddInfo[HddIndex].ControlBaseAddress = 0x3f6;
-              HddInfo[HddIndex].BusMasterAddress   = 0;
-            }
-
-            HddIndex++;
-
-            //
-            // Secondary controller data
-            //
-            if ((PciConfigHeader.Hdr.ClassCode[0] & 0x04) != 0) {
-              HddInfo[HddIndex].CommandBaseAddress =
-                (UINT16)(PciConfigHeader.Device.Bar[2] & 0xfffc);
-              HddInfo[HddIndex].ControlBaseAddress =
-                (UINT16)((PciConfigHeader.Device.Bar[3] & 0xfffc)+2);
-              HddInfo[HddIndex].BusMasterAddress =
-                (UINT16)(HddInfo[HddIndex].BusMasterAddress + 8);
-              HddInfo[HddIndex].HddIrq = PciConfigHeader.Device.InterruptLine;
-            } else {
-              HddInfo[HddIndex].HddIrq             = 15;
-              HddInfo[HddIndex].CommandBaseAddress = 0x170;
-              HddInfo[HddIndex].ControlBaseAddress = 0x376;
-              HddInfo[HddIndex].BusMasterAddress   = 0;
-            }
-
-            HddIndex++;
-          }
-        }
-      }
-
-      return EFI_SUCCESS;
-    case EfiGetPlatformIsaBusHandle:
-      ClassLists[0].Class    = (UINT8)PCI_CLASS_BRIDGE;
-      ClassLists[0].SubClass = (UINT8)PCI_CLASS_BRIDGE_ISA_PDECODE;
-      ClassLists[1].Class    = (UINT8)PCI_CLASS_BRIDGE;
-      ClassLists[1].SubClass = (UINT8)PCI_CLASS_BRIDGE_ISA;
-      ClassLists[2].Class    = 0xff;
-
-      //
-      // Locate all found block io devices
-      //
-      FindAllDeviceTypes (ClassLists, LocalDevice, (UINT16 *)(&LocalIndex), TRUE);
-      if (LocalIndex == 0) {
-        return EFI_NOT_FOUND;
-      }
-
-      //
-      // Find our ISA bridge.
-      //
-      for (Index = 0; Index < LocalIndex; Index++) {
-        if (LocalDevice[Index].Vid == V_INTEL_VENDOR_ID) {
-          TempDevice         = LocalDevice[0];
-          LocalDevice[0]     = LocalDevice[Index];
-          LocalDevice[Index] = TempDevice;
-        }
-      }
-
-      //
-      // Perform copy and update return values.
-      //
-      for (Index = 0; Index < LocalIndex; Index++) {
-        mIsaHandles[Index] = LocalDevice[Index].Handle;
-      }
-
-      *HandleBuffer = &mIsaHandles[0];
-      *HandleCount  = LocalIndex;
-      return EFI_SUCCESS;
-    case EfiGetPlatformUsbHandle:
-    default:
-      return EFI_UNSUPPORTED;
-  }
-}
-
-/**
-  Allows platform to perform any required action after a LegacyBios operation.
-  Invokes the specific sub function specified by Mode.
-
-  @param  This                  The protocol instance pointer.
-  @param  Mode                  Specifies what handle to return. See EFI_GET_PLATFORM_HOOK_MODE enum.
-  @param  Type                  Mode specific.  See EFI_GET_PLATFORM_HOOK_MODE enum.
-  @param  DeviceHandle          Mode specific.  See EFI_GET_PLATFORM_HOOK_MODE enum.
-  @param  ShadowAddress         Mode specific.  See EFI_GET_PLATFORM_HOOK_MODE enum.
-  @param  Compatibility16Table  Mode specific.  See EFI_GET_PLATFORM_HOOK_MODE enum.
-  @param  AdditionalData        Mode specific.  See EFI_GET_PLATFORM_HOOK_MODE enum.
-
-  @retval EFI_SUCCESS           The operation performed successfully. Mode specific.
-  @retval EFI_UNSUPPORTED       Mode is not supported on the platform.
-
-**/
-EFI_STATUS
-EFIAPI
-PlatformHooks (
-  IN       EFI_LEGACY_BIOS_PLATFORM_PROTOCOL  *This,
-  IN       EFI_GET_PLATFORM_HOOK_MODE         Mode,
-  IN       UINT16                             Type,
-  OUT   EFI_HANDLE                            DeviceHandle  OPTIONAL,
-  IN OUT   UINTN                              *Shadowaddress  OPTIONAL,
-  IN       EFI_COMPATIBILITY16_TABLE          *Compatibility16Table  OPTIONAL,
-  OUT   VOID                                  **AdditionalData OPTIONAL
-  )
-{
-  EFI_IA32_REGISTER_SET     Regs;
-  EFI_LEGACY_BIOS_PROTOCOL  *LegacyBios;
-  EFI_STATUS                Status;
-
-  switch (Mode) {
-    case EfiPlatformHookPrepareToScanRom:
-      Status = gBS->LocateProtocol (
-                      &gEfiLegacyBiosProtocolGuid,
-                      NULL,
-                      (VOID **)&LegacyBios
-                      );
-
-      //
-      // Set the 80x25 Text VGA Mode
-      //
-      Regs.H.AH = 0x00;
-      Regs.H.AL = 0x03;
-      Status    = LegacyBios->Int86 (LegacyBios, 0x10, &Regs);
-      return Status;
-    case EfiPlatformHookShadowServiceRoms:
-      return EFI_SUCCESS;
-    case EfiPlatformHookAfterRomInit:
-    default:
-      return EFI_UNSUPPORTED;
-  }
-}
-
-/**
-  Returns information associated with PCI IRQ routing.
-  This function returns the following information associated with PCI IRQ routing:
-    * An IRQ routing table and number of entries in the table.
-    * The $PIR table and its size.
-    * A list of PCI IRQs and the priority order to assign them.
-
-  @param  This                    The protocol instance pointer.
-  @param  RoutingTable            The pointer to PCI IRQ Routing table.
-                                  This location is the $PIR table minus the header.
-  @param  RoutingTableEntries     The number of entries in table.
-  @param  LocalPirqTable          $PIR table.
-  @param  PirqTableSize           $PIR table size.
-  @param  LocalIrqPriorityTable   A list of interrupts in priority order to assign.
-  @param  IrqPriorityTableEntries The number of entries in the priority table.
-
-  @retval EFI_SUCCESS           Data was successfully returned.
-
-**/
-EFI_STATUS
-EFIAPI
-GetRoutingTable (
-  IN  EFI_LEGACY_BIOS_PLATFORM_PROTOCOL  *This,
-  OUT VOID                               **RoutingTable,
-  OUT UINTN                              *RoutingTableEntries,
-  OUT VOID                               **LocalPirqTable  OPTIONAL,
-  OUT UINTN                              *PirqTableSize  OPTIONAL,
-  OUT VOID                               **LocalIrqPriorityTable  OPTIONAL,
-  OUT UINTN                              *IrqPriorityTableEntries OPTIONAL
-  )
-{
-  UINT16                         PTableSize;
-  UINT32                         Index;
-  UINT8                          Bus;
-  UINT8                          Device;
-  UINT8                          Function;
-  UINT8                          Checksum;
-  UINT8                          *Ptr;
-  EFI_STATUS                     Status;
-  EFI_LEGACY_INTERRUPT_PROTOCOL  *LegacyInterrupt;
-
-  Checksum = 0;
-
-  if (LocalPirqTable != NULL) {
-    PTableSize = sizeof (EFI_LEGACY_PIRQ_TABLE_HEADER) +
-                 sizeof (EFI_LEGACY_IRQ_ROUTING_ENTRY) * MAX_IRQ_ROUTING_ENTRIES;
-
-    Status = gBS->LocateProtocol (
-                    &gEfiLegacyInterruptProtocolGuid,
-                    NULL,
-                    (VOID **)&LegacyInterrupt
-                    );
-    ASSERT_EFI_ERROR (Status);
-    LegacyInterrupt->GetLocation (
-                       LegacyInterrupt,
-                       &Bus,
-                       &Device,
-                       &Function
-                       );
-
-    //
-    // Update fields in $PIR table header
-    //
-    PirqTableHead.PirqTable.TableSize = PTableSize;
-    PirqTableHead.PirqTable.Bus       = Bus;
-    PirqTableHead.PirqTable.DevFun    = (UINT8)((Device << 3) + Function);
-    Ptr                               = (UINT8 *)(&PirqTableHead);
-
-    //
-    // Calculate checksum.
-    //
-    for (Index = 0; Index < PTableSize; Index++) {
-      Checksum = (UINT8)(Checksum + (UINT8)*Ptr);
-      Ptr     += 1;
-    }
-
-    Checksum                         = (UINT8)(0x00 - Checksum);
-    PirqTableHead.PirqTable.Checksum = Checksum;
-
-    //
-    // Update return values.
-    //
-    *LocalPirqTable = (VOID *)(&PirqTableHead);
-    *PirqTableSize  = PTableSize;
-  }
-
-  //
-  // More items to return.
-  //
-  *RoutingTable        = PirqTableHead.IrqRoutingEntry;
-  *RoutingTableEntries = MAX_IRQ_ROUTING_ENTRIES;
-  if (LocalIrqPriorityTable != NULL) {
-    *LocalIrqPriorityTable   = IrqPriorityTable;
-    *IrqPriorityTableEntries = MAX_IRQ_PRIORITY_ENTRIES;
-  }
-
-  return EFI_SUCCESS;
-}
-
-/**
-  Finds the binary data or other platform information.
-
-  @param  This                  The protocol instance pointer.
-  @param  Mode                  Specifies what data to return. See See EFI_GET_PLATFORM_INFO_MODE enum.
-  @param  Table                 Mode specific.  See EFI_GET_PLATFORM_INFO_MODE enum.
-  @param  TableSize             Mode specific.  See EFI_GET_PLATFORM_INFO_MODE enum.
-  @param  Location              Mode specific.  See EFI_GET_PLATFORM_INFO_MODE enum.
-  @param  Alignment             Mode specific.  See EFI_GET_PLATFORM_INFO_MODE enum.
-  @param  LegacySegment         Mode specific.  See EFI_GET_PLATFORM_INFO_MODE enum.
-  @param  LegacyOffset          Mode specific.  See EFI_GET_PLATFORM_INFO_MODE enum.
-
-  @retval EFI_SUCCESS           Data returned successfully.
-  @retval EFI_UNSUPPORTED       Mode is not supported on the platform.
-  @retval EFI_NOT_FOUND         Binary image or table not found.
-
-**/
-EFI_STATUS
-EFIAPI
-GetPlatformInfo (
-  IN  EFI_LEGACY_BIOS_PLATFORM_PROTOCOL  *This,
-  IN  EFI_GET_PLATFORM_INFO_MODE         Mode,
-  OUT VOID                               **Table,
-  OUT UINTN                              *TableSize,
-  OUT UINTN                              *Location,
-  OUT UINTN                              *Alignment,
-  IN  UINT16                             LegacySegment,
-  IN  UINT16                             LegacyOffset
-  )
-{
-  EFI_STATUS  Status;
-  UINTN       Index;
-
-  switch (Mode) {
-    case EfiGetPlatformBinarySystemRom:
-      //
-      // Loop through table of System rom descriptions
-      //
-      for (Index = 0; mSystemRomTable[Index].Valid != 0; Index++) {
-        Status = GetSectionFromFv (
-                   &mSystemRomTable[Index].FileName,
-                   EFI_SECTION_RAW,
-                   0,
-                   Table,
-                   (UINTN *)TableSize
-                   );
-        if (EFI_ERROR (Status)) {
-          continue;
-        }
-
-        return EFI_SUCCESS;
-      }
-
-      return EFI_NOT_FOUND;
-    case EfiGetPlatformBinaryOem16Data:
-    case EfiGetPlatformBinaryMpTable:
-    case EfiGetPlatformBinaryOemIntData:
-    case EfiGetPlatformBinaryOem32Data:
-    case EfiGetPlatformBinaryTpmBinary:
-    case EfiGetPlatformPciExpressBase:
-    default:
-      return EFI_UNSUPPORTED;
-  }
-}
-
-/**
-  Translates the given PIRQ accounting for bridge.
-  This function translates the given PIRQ back through all buses, if required,
-  and returns the true PIRQ and associated IRQ.
-
-  @param  This                  The protocol instance pointer.
-  @param  PciBus                The PCI bus number for this device.
-  @param  PciDevice             The PCI device number for this device.
-  @param  PciFunction           The PCI function number for this device.
-  @param  Pirq                  Input is PIRQ reported by device, and output is true PIRQ.
-  @param  PciIrq                The IRQ already assigned to the PIRQ, or the IRQ to be
-                                assigned to the PIRQ.
-
-  @retval EFI_SUCCESS           The PIRQ was translated.
-
-**/
-EFI_STATUS
-EFIAPI
-TranslatePirq (
-  IN        EFI_LEGACY_BIOS_PLATFORM_PROTOCOL  *This,
-  IN        UINTN                              PciBus,
-  IN        UINTN                              PciDevice,
-  IN        UINTN                              PciFunction,
-  IN  OUT   UINT8                              *Pirq,
-  OUT   UINT8                                  *PciIrq
-  )
-{
-  EFI_LEGACY_INTERRUPT_PROTOCOL  *LegacyInterrupt;
-  EFI_STATUS                     Status;
-  UINTN                          Index;
-  UINTN                          Index1;
-  UINT8                          LocalPirq;
-  UINT8                          PirqData;
-  UINT8                          MatchData;
-
-  Status = gBS->LocateProtocol (
-                  &gEfiLegacyInterruptProtocolGuid,
-                  NULL,
-                  (VOID **)&LegacyInterrupt
-                  );
-  ASSERT_EFI_ERROR (Status);
-  LocalPirq = (UINT8)(*Pirq);
-
-  for (Index = 0; Index < MAX_IRQ_ROUTING_ENTRIES; Index++) {
-    if ((PirqTableHead.IrqRoutingEntry[Index].Bus == PciBus) &&
-        (PirqTableHead.IrqRoutingEntry[Index].Device == PciDevice))
-    {
-      LocalPirq = (UINT8)(PirqTableHead.IrqRoutingEntry[Index].PirqEntry[LocalPirq].Pirq & 0x0f);
-      if (LocalPirq > 4) {
-        LocalPirq -= 4;
-      }
-
-      LegacyInterrupt->ReadPirq (LegacyInterrupt, LocalPirq, &PirqData);
-      MatchData = PCI_UNUSED;
-      while (PirqData == 0) {
-        for (Index1 = 0; Index1 < MAX_IRQ_PRIORITY_ENTRIES; Index1++) {
-          if ((IrqPriorityTable[Index1].Used == MatchData) &&
-              (IrqPriorityTable[Index1].Irq != 0))
-          {
-            PirqData                      = IrqPriorityTable[Index1].Irq;
-            IrqPriorityTable[Index1].Used = 0xff;
-            LegacyInterrupt->WritePirq (
-                               LegacyInterrupt,
-                               LocalPirq,
-                               PirqData
-                               );
-            break;
-          }
-        }
-
-        if (PirqData == 0) {
-          //
-          // No unused interrupts, so start reusing them.
-          //
-          MatchData = (UINT8)(~MatchData);
-        }
-      }
-
-      *PciIrq = PirqData;
-      *Pirq   = LocalPirq;
-    }
-  }
-
-  return EFI_SUCCESS;
-}
-
-/**
-  Attempt to legacy boot the BootOption. If the EFI contexted has been
-  compromised this function will not return.
-
-  @param  This                   The protocol instance pointer.
-  @param  BbsDevicePath          The EFI Device Path from BootXXXX variable.
-  @param  BbsTable               The Internal BBS table.
-  @param  LoadOptionSize         The size of LoadOption in size.
-  @param  LoadOption             The LoadOption from BootXXXX variable
-  @param  EfiToLegacy16BootTable A pointer to BootTable structure
-
-  @retval EFI_SUCCESS           Ready to boot.
-
-**/
-EFI_STATUS
-EFIAPI
-PrepareToBoot (
-  IN  EFI_LEGACY_BIOS_PLATFORM_PROTOCOL  *This,
-  IN  BBS_BBS_DEVICE_PATH                *BbsDevicePath,
-  IN  VOID                               *BbsTable,
-  IN  UINT32                             LoadOptionsSize,
-  IN  VOID                               *LoadOptions,
-  IN  VOID                               *EfiToLegacy16BootTable
-  )
-{
-  BBS_TABLE                          *LocalBbsTable;
-  EFI_TO_COMPATIBILITY16_BOOT_TABLE  *Legacy16BootTable;
-  DEVICE_PRODUCER_DATA_HEADER        *SioPtr;
-  UINT16                             DevicePathType;
-  UINT16                             Index;
-  UINT16                             Priority;
-
-  //
-  // Initialize values
-  //
-  Priority          = 0;
-  Legacy16BootTable = (EFI_TO_COMPATIBILITY16_BOOT_TABLE *)EfiToLegacy16BootTable;
-
-  //
-  // Set how Gate A20 is gated by hardware
-  //
-  SioPtr                  = &Legacy16BootTable->SioData;
-  SioPtr->Flags.A20Kybd   = 1;
-  SioPtr->Flags.A20Port90 = 1;
-  SioPtr->MousePresent    = 1;
-
-  LocalBbsTable = BbsTable;
-
-  //
-  // There are 2 cases that must be covered.
-  // Case 1: Booting to a legacy OS - BbsDevicePath is non-NULL.
-  // Case 2: Booting to an EFI aware OS - BbsDevicePath is NULL.
-  //         We need to perform the PrepareToBoot function to assign
-  //         drive numbers to HDD devices to allow the shell or EFI
-  //         to access them.
-  //
-  if (BbsDevicePath != NULL) {
-    DevicePathType = BbsDevicePath->DeviceType;
-  } else {
-    DevicePathType = BBS_HARDDISK;
-  }
-
-  //
-  // Skip the boot devices where priority is set by BDS and set the next one
-  //
-  for (Index = 0; Index < Legacy16BootTable->NumberBbsEntries; Index++) {
-    if ((LocalBbsTable[Index].BootPriority != BBS_UNPRIORITIZED_ENTRY) &&
-        (LocalBbsTable[Index].BootPriority != BBS_IGNORE_ENTRY) &&
-        (LocalBbsTable[Index].BootPriority != BBS_LOWEST_PRIORITY) &&
-        (Priority <= LocalBbsTable[Index].BootPriority))
-    {
-      Priority = (UINT16)(LocalBbsTable[Index].BootPriority + 1);
-    }
-  }
-
-  switch (DevicePathType) {
-    case BBS_FLOPPY:
-    case BBS_HARDDISK:
-    case BBS_CDROM:
-    case BBS_EMBED_NETWORK:
-      for (Index = 0; Index < Legacy16BootTable->NumberBbsEntries; Index++) {
-        if ((LocalBbsTable[Index].BootPriority == BBS_UNPRIORITIZED_ENTRY) &&
-            (LocalBbsTable[Index].DeviceType == DevicePathType))
-        {
-          LocalBbsTable[Index].BootPriority = Priority;
-          ++Priority;
-        }
-      }
-
-      break;
-    case BBS_BEV_DEVICE:
-      for (Index = 0; Index < Legacy16BootTable->NumberBbsEntries; Index++) {
-        if ((LocalBbsTable[Index].BootPriority == BBS_UNPRIORITIZED_ENTRY) &&
-            (LocalBbsTable[Index].Class == 01) &&
-            (LocalBbsTable[Index].SubClass == 01))
-        {
-          LocalBbsTable[Index].BootPriority = Priority;
-          ++Priority;
-        }
-      }
-
-      break;
-    case BBS_USB:
-    case BBS_PCMCIA:
-    case BBS_UNKNOWN:
-    default:
-      break;
-  }
-
-  //
-  // Set priority for rest of devices
-  //
-  for (Index = 0; Index < Legacy16BootTable->NumberBbsEntries; Index++) {
-    if (LocalBbsTable[Index].BootPriority == BBS_UNPRIORITIZED_ENTRY) {
-      LocalBbsTable[Index].BootPriority = Priority;
-      ++Priority;
-    }
-  }
-
-  return EFI_SUCCESS;
-}
-
-/**
-  Initialize Legacy Platform support
-
-  @retval EFI_SUCCESS   Successfully initialized
-
-**/
-EFI_STATUS
-LegacyBiosPlatformInstall (
-  VOID
-  )
-{
-  EFI_STATUS                     Status;
-  LEGACY_BIOS_PLATFORM_INSTANCE  *Private;
-
-  mImageHandle = gImageHandle;
-  Private      = &mPrivateData;
-
-  //
-  // Grab a copy of all the protocols we depend on.
-  //
-  Private->Signature                            = LEGACY_BIOS_PLATFORM_INSTANCE_SIGNATURE;
-  Private->LegacyBiosPlatform.GetPlatformInfo   = GetPlatformInfo;
-  Private->LegacyBiosPlatform.GetPlatformHandle = GetPlatformHandle;
-  Private->LegacyBiosPlatform.SmmInit           = SmmInit;
-  Private->LegacyBiosPlatform.PlatformHooks     = PlatformHooks;
-  Private->LegacyBiosPlatform.GetRoutingTable   = GetRoutingTable;
-  Private->LegacyBiosPlatform.TranslatePirq     = TranslatePirq;
-  Private->LegacyBiosPlatform.PrepareToBoot     = PrepareToBoot;
-  Private->ImageHandle                          = gImageHandle;
-
-  //
-  // Make a new handle and install the protocol
-  //
-  Private->Handle = NULL;
-  Status          = gBS->InstallProtocolInterface (
-                           &Private->Handle,
-                           &gEfiLegacyBiosPlatformProtocolGuid,
-                           EFI_NATIVE_INTERFACE,
-                           &Private->LegacyBiosPlatform
-                           );
-  return Status;
-}
diff --git a/OvmfPkg/Csm/CsmSupportLib/LegacyRegion.c b/OvmfPkg/Csm/CsmSupportLib/LegacyRegion.c
deleted file mode 100644
index 3c32b75bd692..000000000000
--- a/OvmfPkg/Csm/CsmSupportLib/LegacyRegion.c
+++ /dev/null
@@ -1,506 +0,0 @@
-/** @file
-  Legacy Region Support
-
-  Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
-
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#include "LegacyRegion.h"
-
-//
-// 440/Q35 PAM map.
-//
-// PAM Range          Offset    Bits  Operation
-//                  440   Q35
-// ===============  ====  ====  ====  ===============================================================
-// 0xC0000-0xC3FFF  0x5a  0x91  1:0   00 = DRAM Disabled, 01= Read Only, 10 = Write Only, 11 = Normal
-// 0xC4000-0xC7FFF  0x5a  0x91  5:4   00 = DRAM Disabled, 01= Read Only, 10 = Write Only, 11 = Normal
-// 0xC8000-0xCBFFF  0x5b  0x92  1:0   00 = DRAM Disabled, 01= Read Only, 10 = Write Only, 11 = Normal
-// 0xCC000-0xCFFFF  0x5b  0x92  5:4   00 = DRAM Disabled, 01= Read Only, 10 = Write Only, 11 = Normal
-// 0xD0000-0xD3FFF  0x5c  0x93  1:0   00 = DRAM Disabled, 01= Read Only, 10 = Write Only, 11 = Normal
-// 0xD4000-0xD7FFF  0x5c  0x93  5:4   00 = DRAM Disabled, 01= Read Only, 10 = Write Only, 11 = Normal
-// 0xD8000-0xDBFFF  0x5d  0x94  1:0   00 = DRAM Disabled, 01= Read Only, 10 = Write Only, 11 = Normal
-// 0xDC000-0xDFFFF  0x5d  0x94  5:4   00 = DRAM Disabled, 01= Read Only, 10 = Write Only, 11 = Normal
-// 0xE0000-0xE3FFF  0x5e  0x95  1:0   00 = DRAM Disabled, 01= Read Only, 10 = Write Only, 11 = Normal
-// 0xE4000-0xE7FFF  0x5e  0x95  5:4   00 = DRAM Disabled, 01= Read Only, 10 = Write Only, 11 = Normal
-// 0xE8000-0xEBFFF  0x5f  0x96  1:0   00 = DRAM Disabled, 01= Read Only, 10 = Write Only, 11 = Normal
-// 0xEC000-0xEFFFF  0x5f  0x96  5:4   00 = DRAM Disabled, 01= Read Only, 10 = Write Only, 11 = Normal
-// 0xF0000-0xFFFFF  0x59  0x90  5:4   00 = DRAM Disabled, 01= Read Only, 10 = Write Only, 11 = Normal
-//
-STATIC LEGACY_MEMORY_SECTION_INFO  mSectionArray[] = {
-  { 0xC0000, SIZE_16KB, FALSE, FALSE },
-  { 0xC4000, SIZE_16KB, FALSE, FALSE },
-  { 0xC8000, SIZE_16KB, FALSE, FALSE },
-  { 0xCC000, SIZE_16KB, FALSE, FALSE },
-  { 0xD0000, SIZE_16KB, FALSE, FALSE },
-  { 0xD4000, SIZE_16KB, FALSE, FALSE },
-  { 0xD8000, SIZE_16KB, FALSE, FALSE },
-  { 0xDC000, SIZE_16KB, FALSE, FALSE },
-  { 0xE0000, SIZE_16KB, FALSE, FALSE },
-  { 0xE4000, SIZE_16KB, FALSE, FALSE },
-  { 0xE8000, SIZE_16KB, FALSE, FALSE },
-  { 0xEC000, SIZE_16KB, FALSE, FALSE },
-  { 0xF0000, SIZE_64KB, FALSE, FALSE }
-};
-
-STATIC PAM_REGISTER_VALUE  mRegisterValues440[] = {
-  { PMC_REGISTER_PIIX4 (PIIX4_PAM1), 0x01, 0x02 },
-  { PMC_REGISTER_PIIX4 (PIIX4_PAM1), 0x10, 0x20 },
-  { PMC_REGISTER_PIIX4 (PIIX4_PAM2), 0x01, 0x02 },
-  { PMC_REGISTER_PIIX4 (PIIX4_PAM2), 0x10, 0x20 },
-  { PMC_REGISTER_PIIX4 (PIIX4_PAM3), 0x01, 0x02 },
-  { PMC_REGISTER_PIIX4 (PIIX4_PAM3), 0x10, 0x20 },
-  { PMC_REGISTER_PIIX4 (PIIX4_PAM4), 0x01, 0x02 },
-  { PMC_REGISTER_PIIX4 (PIIX4_PAM4), 0x10, 0x20 },
-  { PMC_REGISTER_PIIX4 (PIIX4_PAM5), 0x01, 0x02 },
-  { PMC_REGISTER_PIIX4 (PIIX4_PAM5), 0x10, 0x20 },
-  { PMC_REGISTER_PIIX4 (PIIX4_PAM6), 0x01, 0x02 },
-  { PMC_REGISTER_PIIX4 (PIIX4_PAM6), 0x10, 0x20 },
-  { PMC_REGISTER_PIIX4 (PIIX4_PAM0), 0x10, 0x20 }
-};
-
-STATIC PAM_REGISTER_VALUE  mRegisterValuesQ35[] = {
-  { DRAMC_REGISTER_Q35 (MCH_PAM1), 0x01, 0x02 },
-  { DRAMC_REGISTER_Q35 (MCH_PAM1), 0x10, 0x20 },
-  { DRAMC_REGISTER_Q35 (MCH_PAM2), 0x01, 0x02 },
-  { DRAMC_REGISTER_Q35 (MCH_PAM2), 0x10, 0x20 },
-  { DRAMC_REGISTER_Q35 (MCH_PAM3), 0x01, 0x02 },
-  { DRAMC_REGISTER_Q35 (MCH_PAM3), 0x10, 0x20 },
-  { DRAMC_REGISTER_Q35 (MCH_PAM4), 0x01, 0x02 },
-  { DRAMC_REGISTER_Q35 (MCH_PAM4), 0x10, 0x20 },
-  { DRAMC_REGISTER_Q35 (MCH_PAM5), 0x01, 0x02 },
-  { DRAMC_REGISTER_Q35 (MCH_PAM5), 0x10, 0x20 },
-  { DRAMC_REGISTER_Q35 (MCH_PAM6), 0x01, 0x02 },
-  { DRAMC_REGISTER_Q35 (MCH_PAM6), 0x10, 0x20 },
-  { DRAMC_REGISTER_Q35 (MCH_PAM0), 0x10, 0x20 }
-};
-
-STATIC PAM_REGISTER_VALUE  *mRegisterValues;
-
-//
-// Handle used to install the Legacy Region Protocol
-//
-STATIC EFI_HANDLE  mHandle = NULL;
-
-//
-// Instance of the Legacy Region Protocol to install into the handle database
-//
-STATIC EFI_LEGACY_REGION2_PROTOCOL  mLegacyRegion2 = {
-  LegacyRegion2Decode,
-  LegacyRegion2Lock,
-  LegacyRegion2BootLock,
-  LegacyRegion2Unlock,
-  LegacyRegionGetInfo
-};
-
-STATIC
-EFI_STATUS
-LegacyRegionManipulationInternal (
-  IN  UINT32   Start,
-  IN  UINT32   Length,
-  IN  BOOLEAN  *ReadEnable,
-  IN  BOOLEAN  *WriteEnable,
-  OUT UINT32   *Granularity
-  )
-{
-  UINT32  EndAddress;
-  UINTN   Index;
-  UINTN   StartIndex;
-
-  //
-  // Validate input parameters.
-  //
-  if ((Length == 0) || (Granularity == NULL)) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  EndAddress = Start + Length - 1;
-  if ((Start < PAM_BASE_ADDRESS) || (EndAddress > PAM_LIMIT_ADDRESS)) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  //
-  // Loop to find the start PAM.
-  //
-  StartIndex = 0;
-  for (Index = 0; Index < ARRAY_SIZE (mSectionArray); Index++) {
-    if ((Start >= mSectionArray[Index].Start) && (Start < (mSectionArray[Index].Start + mSectionArray[Index].Length))) {
-      StartIndex = Index;
-      break;
-    }
-  }
-
-  ASSERT (Index < ARRAY_SIZE (mSectionArray));
-
-  //
-  // Program PAM until end PAM is encountered
-  //
-  for (Index = StartIndex; Index < ARRAY_SIZE (mSectionArray); Index++) {
-    if (ReadEnable != NULL) {
-      if (*ReadEnable) {
-        PciOr8 (
-          mRegisterValues[Index].PAMRegPciLibAddress,
-          mRegisterValues[Index].ReadEnableData
-          );
-      } else {
-        PciAnd8 (
-          mRegisterValues[Index].PAMRegPciLibAddress,
-          (UINT8)(~mRegisterValues[Index].ReadEnableData)
-          );
-      }
-    }
-
-    if (WriteEnable != NULL) {
-      if (*WriteEnable) {
-        PciOr8 (
-          mRegisterValues[Index].PAMRegPciLibAddress,
-          mRegisterValues[Index].WriteEnableData
-          );
-      } else {
-        PciAnd8 (
-          mRegisterValues[Index].PAMRegPciLibAddress,
-          (UINT8)(~mRegisterValues[Index].WriteEnableData)
-          );
-      }
-    }
-
-    //
-    // If the end PAM is encountered, record its length as granularity and jump out.
-    //
-    if ((EndAddress >= mSectionArray[Index].Start) && (EndAddress < (mSectionArray[Index].Start + mSectionArray[Index].Length))) {
-      *Granularity = mSectionArray[Index].Length;
-      break;
-    }
-  }
-
-  ASSERT (Index < ARRAY_SIZE (mSectionArray));
-
-  return EFI_SUCCESS;
-}
-
-STATIC
-EFI_STATUS
-LegacyRegionGetInfoInternal (
-  OUT UINT32                      *DescriptorCount,
-  OUT LEGACY_MEMORY_SECTION_INFO  **Descriptor
-  )
-{
-  UINTN  Index;
-  UINT8  PamValue;
-
-  //
-  // Check input parameters
-  //
-  if ((DescriptorCount == NULL) || (Descriptor == NULL)) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  //
-  // Fill in current status of legacy region.
-  //
-  *DescriptorCount = sizeof (mSectionArray) / sizeof (mSectionArray[0]);
-  for (Index = 0; Index < *DescriptorCount; Index++) {
-    PamValue                         = PciRead8 (mRegisterValues[Index].PAMRegPciLibAddress);
-    mSectionArray[Index].ReadEnabled = FALSE;
-    if ((PamValue & mRegisterValues[Index].ReadEnableData) != 0) {
-      mSectionArray[Index].ReadEnabled = TRUE;
-    }
-
-    mSectionArray[Index].WriteEnabled = FALSE;
-    if ((PamValue & mRegisterValues[Index].WriteEnableData) != 0) {
-      mSectionArray[Index].WriteEnabled = TRUE;
-    }
-  }
-
-  *Descriptor = mSectionArray;
-  return EFI_SUCCESS;
-}
-
-/**
-  Modify the hardware to allow (decode) or disallow (not decode) memory reads in a region.
-
-  If the On parameter evaluates to TRUE, this function enables memory reads in the address range
-  Start to (Start + Length - 1).
-  If the On parameter evaluates to FALSE, this function disables memory reads in the address range
-  Start to (Start + Length - 1).
-
-  @param  This[in]              Indicates the EFI_LEGACY_REGION_PROTOCOL instance.
-  @param  Start[in]             The beginning of the physical address of the region whose attributes
-                                should be modified.
-  @param  Length[in]            The number of bytes of memory whose attributes should be modified.
-                                The actual number of bytes modified may be greater than the number
-                                specified.
-  @param  Granularity[out]      The number of bytes in the last region affected. This may be less
-                                than the total number of bytes affected if the starting address
-                                was not aligned to a region's starting address or if the length
-                                was greater than the number of bytes in the first region.
-  @param  On[in]                Decode / Non-Decode flag.
-
-  @retval EFI_SUCCESS           The region's attributes were successfully modified.
-  @retval EFI_INVALID_PARAMETER If Start or Length describe an address not in the Legacy Region.
-
-**/
-EFI_STATUS
-EFIAPI
-LegacyRegion2Decode (
-  IN  EFI_LEGACY_REGION2_PROTOCOL  *This,
-  IN  UINT32                       Start,
-  IN  UINT32                       Length,
-  OUT UINT32                       *Granularity,
-  IN  BOOLEAN                      *On
-  )
-{
-  return LegacyRegionManipulationInternal (Start, Length, On, NULL, Granularity);
-}
-
-/**
-  Modify the hardware to disallow memory attribute changes in a region.
-
-  This function makes the attributes of a region read only. Once a region is boot-locked with this
-  function, the read and write attributes of that region cannot be changed until a power cycle has
-  reset the boot-lock attribute. Calls to Decode(), Lock() and Unlock() will have no effect.
-
-  @param  This[in]              Indicates the EFI_LEGACY_REGION_PROTOCOL instance.
-  @param  Start[in]             The beginning of the physical address of the region whose
-                                attributes should be modified.
-  @param  Length[in]            The number of bytes of memory whose attributes should be modified.
-                                The actual number of bytes modified may be greater than the number
-                                specified.
-  @param  Granularity[out]      The number of bytes in the last region affected. This may be less
-                                than the total number of bytes affected if the starting address was
-                                not aligned to a region's starting address or if the length was
-                                greater than the number of bytes in the first region.
-
-  @retval EFI_SUCCESS           The region's attributes were successfully modified.
-  @retval EFI_INVALID_PARAMETER If Start or Length describe an address not in the Legacy Region.
-  @retval EFI_UNSUPPORTED       The chipset does not support locking the configuration registers in
-                                a way that will not affect memory regions outside the legacy memory
-                                region.
-
-**/
-EFI_STATUS
-EFIAPI
-LegacyRegion2BootLock (
-  IN  EFI_LEGACY_REGION2_PROTOCOL  *This,
-  IN  UINT32                       Start,
-  IN  UINT32                       Length,
-  OUT UINT32                       *Granularity
-  )
-{
-  if ((Start < 0xC0000) || ((Start + Length - 1) > 0xFFFFF)) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  return EFI_UNSUPPORTED;
-}
-
-/**
-  Modify the hardware to disallow memory writes in a region.
-
-  This function changes the attributes of a memory range to not allow writes.
-
-  @param  This[in]              Indicates the EFI_LEGACY_REGION_PROTOCOL instance.
-  @param  Start[in]             The beginning of the physical address of the region whose
-                                attributes should be modified.
-  @param  Length[in]            The number of bytes of memory whose attributes should be modified.
-                                The actual number of bytes modified may be greater than the number
-                                specified.
-  @param  Granularity[out]      The number of bytes in the last region affected. This may be less
-                                than the total number of bytes affected if the starting address was
-                                not aligned to a region's starting address or if the length was
-                                greater than the number of bytes in the first region.
-
-  @retval EFI_SUCCESS           The region's attributes were successfully modified.
-  @retval EFI_INVALID_PARAMETER If Start or Length describe an address not in the Legacy Region.
-
-**/
-EFI_STATUS
-EFIAPI
-LegacyRegion2Lock (
-  IN  EFI_LEGACY_REGION2_PROTOCOL  *This,
-  IN  UINT32                       Start,
-  IN  UINT32                       Length,
-  OUT UINT32                       *Granularity
-  )
-{
-  BOOLEAN  WriteEnable;
-
-  WriteEnable = FALSE;
-  return LegacyRegionManipulationInternal (Start, Length, NULL, &WriteEnable, Granularity);
-}
-
-/**
-  Modify the hardware to allow memory writes in a region.
-
-  This function changes the attributes of a memory range to allow writes.
-
-  @param  This[in]              Indicates the EFI_LEGACY_REGION_PROTOCOL instance.
-  @param  Start[in]             The beginning of the physical address of the region whose
-                                attributes should be modified.
-  @param  Length[in]            The number of bytes of memory whose attributes should be modified.
-                                The actual number of bytes modified may be greater than the number
-                                specified.
-  @param  Granularity[out]      The number of bytes in the last region affected. This may be less
-                                than the total number of bytes affected if the starting address was
-                                not aligned to a region's starting address or if the length was
-                                greater than the number of bytes in the first region.
-
-  @retval EFI_SUCCESS           The region's attributes were successfully modified.
-  @retval EFI_INVALID_PARAMETER If Start or Length describe an address not in the Legacy Region.
-
-**/
-EFI_STATUS
-EFIAPI
-LegacyRegion2Unlock (
-  IN  EFI_LEGACY_REGION2_PROTOCOL  *This,
-  IN  UINT32                       Start,
-  IN  UINT32                       Length,
-  OUT UINT32                       *Granularity
-  )
-{
-  BOOLEAN  WriteEnable;
-
-  WriteEnable = TRUE;
-  return LegacyRegionManipulationInternal (Start, Length, NULL, &WriteEnable, Granularity);
-}
-
-/**
-  Get region information for the attributes of the Legacy Region.
-
-  This function is used to discover the granularity of the attributes for the memory in the legacy
-  region. Each attribute may have a different granularity and the granularity may not be the same
-  for all memory ranges in the legacy region.
-
-  @param  This[in]              Indicates the EFI_LEGACY_REGION_PROTOCOL instance.
-  @param  DescriptorCount[out]  The number of region descriptor entries returned in the Descriptor
-                                buffer.
-  @param  Descriptor[out]       A pointer to a pointer used to return a buffer where the legacy
-                                region information is deposited. This buffer will contain a list of
-                                DescriptorCount number of region descriptors.  This function will
-                                provide the memory for the buffer.
-
-  @retval EFI_SUCCESS           The region's attributes were successfully modified.
-  @retval EFI_INVALID_PARAMETER If Start or Length describe an address not in the Legacy Region.
-
-**/
-EFI_STATUS
-EFIAPI
-LegacyRegionGetInfo (
-  IN  EFI_LEGACY_REGION2_PROTOCOL   *This,
-  OUT UINT32                        *DescriptorCount,
-  OUT EFI_LEGACY_REGION_DESCRIPTOR  **Descriptor
-  )
-{
-  LEGACY_MEMORY_SECTION_INFO    *SectionInfo;
-  UINT32                        SectionCount;
-  EFI_LEGACY_REGION_DESCRIPTOR  *DescriptorArray;
-  UINTN                         Index;
-  UINTN                         DescriptorIndex;
-
-  //
-  // Get section numbers and information
-  //
-  LegacyRegionGetInfoInternal (&SectionCount, &SectionInfo);
-
-  //
-  // Each section has 3 descriptors, corresponding to readability, writeability, and lock status.
-  //
-  DescriptorArray = AllocatePool (sizeof (EFI_LEGACY_REGION_DESCRIPTOR) * SectionCount * 3);
-  if (DescriptorArray == NULL) {
-    return EFI_OUT_OF_RESOURCES;
-  }
-
-  DescriptorIndex = 0;
-  for (Index = 0; Index < SectionCount; Index++) {
-    DescriptorArray[DescriptorIndex].Start       = SectionInfo[Index].Start;
-    DescriptorArray[DescriptorIndex].Length      = SectionInfo[Index].Length;
-    DescriptorArray[DescriptorIndex].Granularity = SectionInfo[Index].Length;
-    if (SectionInfo[Index].ReadEnabled) {
-      DescriptorArray[DescriptorIndex].Attribute = LegacyRegionDecoded;
-    } else {
-      DescriptorArray[DescriptorIndex].Attribute = LegacyRegionNotDecoded;
-    }
-
-    DescriptorIndex++;
-
-    //
-    // Create descriptor for writeability, according to lock status
-    //
-    DescriptorArray[DescriptorIndex].Start       = SectionInfo[Index].Start;
-    DescriptorArray[DescriptorIndex].Length      = SectionInfo[Index].Length;
-    DescriptorArray[DescriptorIndex].Granularity = SectionInfo[Index].Length;
-    if (SectionInfo[Index].WriteEnabled) {
-      DescriptorArray[DescriptorIndex].Attribute = LegacyRegionWriteEnabled;
-    } else {
-      DescriptorArray[DescriptorIndex].Attribute = LegacyRegionWriteDisabled;
-    }
-
-    DescriptorIndex++;
-
-    //
-    // Chipset does not support bootlock.
-    //
-    DescriptorArray[DescriptorIndex].Start       = SectionInfo[Index].Start;
-    DescriptorArray[DescriptorIndex].Length      = SectionInfo[Index].Length;
-    DescriptorArray[DescriptorIndex].Granularity = SectionInfo[Index].Length;
-    DescriptorArray[DescriptorIndex].Attribute   = LegacyRegionNotLocked;
-    DescriptorIndex++;
-  }
-
-  *DescriptorCount = (UINT32)DescriptorIndex;
-  *Descriptor      = DescriptorArray;
-
-  return EFI_SUCCESS;
-}
-
-/**
-  Initialize Legacy Region support
-
-  @retval EFI_SUCCESS   Successfully initialized
-
-**/
-EFI_STATUS
-LegacyRegionInit (
-  VOID
-  )
-{
-  EFI_STATUS  Status;
-  UINT16      HostBridgeDevId;
-
-  //
-  // Query Host Bridge DID to determine platform type
-  //
-  HostBridgeDevId = PcdGet16 (PcdOvmfHostBridgePciDevId);
-  switch (HostBridgeDevId) {
-    case INTEL_82441_DEVICE_ID:
-      mRegisterValues = mRegisterValues440;
-      break;
-    case INTEL_Q35_MCH_DEVICE_ID:
-      mRegisterValues = mRegisterValuesQ35;
-      break;
-    default:
-      DEBUG ((
-        DEBUG_ERROR,
-        "%a: Unknown Host Bridge Device ID: 0x%04x\n",
-        __func__,
-        HostBridgeDevId
-        ));
-      ASSERT (FALSE);
-      return RETURN_UNSUPPORTED;
-  }
-
-  //
-  // Install the Legacy Region Protocol on a new handle
-  //
-  Status = gBS->InstallMultipleProtocolInterfaces (
-                  &mHandle,
-                  &gEfiLegacyRegion2ProtocolGuid,
-                  &mLegacyRegion2,
-                  NULL
-                  );
-  ASSERT_EFI_ERROR (Status);
-
-  return Status;
-}



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#111093): https://edk2.groups.io/g/devel/message/111093
Mute This Topic: https://groups.io/mt/102518662/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/leave/12367111/7686176/1913456212/xyzzy [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



  parent reply	other threads:[~2023-11-10 23:59 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-10 23:57 [edk2-devel] [PATCH 00/37] OvmfPkg: remove the CSM (after edk2-stable202311) Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 01/37] OvmfPkg: cripple CSM_ENABLE macro Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 02/37] OvmfPkg: remove PcdCsmEnable Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 03/37] OvmfPkg: unplug LegacyBootManagerLib from BdsDxe and UiApp Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 04/37] OvmfPkg: remove LegacyBootManagerLib Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 05/37] OvmfPkg: unplug LegacyBootMaintUiLib from UiApp Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 06/37] OvmfPkg: remove LegacyBootMaintUiLib Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 07/37] OvmfPkg: remove gEfiLegacyDevOrderVariableGuid Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 08/37] OvmfPkg: exclude the CSM-based VideoDxe driver Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 09/37] OvmfPkg: remove Csm/BiosThunk/VideoDxe Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 10/37] OvmfPkg: remove gEfiVgaMiniPortProtocolGuid Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 11/37] OvmfPkg: remove Bios Video PCDs Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 12/37] OvmfPkg: exclude LegacyBiosDxe Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 13/37] OvmfPkg/IncompatiblePciDeviceSupportDxe: ignore CSM presence Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 14/37] Revert "OvmfPkg: don't assign PCI BARs above 4GiB when CSM enabled" Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 15/37] OvmfPkg: remove LegacyBiosDxe Laszlo Ersek
2023-11-10 23:57 ` [edk2-devel] [PATCH 16/37] OvmfPkg: exclude NullMemoryTestDxe driver Laszlo Ersek
2024-04-24 11:02   ` Corvin Köhne
2023-11-10 23:58 ` [edk2-devel] [PATCH 17/37] OvmfPkg: remove gEfiIsaIoProtocolGuid Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 18/37] OvmfPkg: remove gEfiIsaAcpiProtocolGuid Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 19/37] OvmfPkg: remove gEfiLegacyBiosGuid Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 20/37] OvmfPkg: remove LegacyBiosDxe PCDs Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 21/37] OvmfPkg: unplug CsmSupportLib from BdsDxe Laszlo Ersek
2023-11-10 23:58 ` Laszlo Ersek [this message]
2023-11-10 23:58 ` [edk2-devel] [PATCH 23/37] OvmfPkg: remove gEfiFirmwareVolumeProtocolGuid Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 24/37] OvmfPkg: remove gEfiLegacyBiosPlatformProtocolGuid Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 25/37] OvmfPkg: remove gEfiLegacyBiosProtocolGuid Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 26/37] OvmfPkg: remove gEfiLegacyInterruptProtocolGuid Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 27/37] OvmfPkg: remove <FrameworkDxe.h> Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 28/37] OvmfPkg: exclude Csm16.inf / Csm16.bin Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 29/37] OvmfPkg: remove Rule.Common.USER_DEFINED.CSM from all FDF files Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 30/37] OvmfPkg: remove Csm16 Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 31/37] OvmfPkg: exclude 8254TimerDxe Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 32/37] OvmfPkg: remove 8254TimerDxe Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 33/37] OvmfPkg: exclude 8259InterruptControllerDxe Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 34/37] OvmfPkg: remove 8259InterruptControllerDxe Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 35/37] OvmfPkg: remove gEfiLegacy8259ProtocolGuid Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 36/37] OvmfPkg: remove Pcd8259LegacyModeEdgeLevel and Pcd8259LegacyModeMask Laszlo Ersek
2023-11-10 23:58 ` [edk2-devel] [PATCH 37/37] OvmfPkg: remove CSM_ENABLE build macro Laszlo Ersek
2023-11-11  2:12 ` [edk2-devel] [PATCH 00/37] OvmfPkg: remove the CSM (after edk2-stable202311) Yao, Jiewen
2023-11-11 10:54   ` Ard Biesheuvel
2023-11-13  7:52     ` Corvin Köhne
2023-11-13 10:44 ` Gerd Hoffmann
2023-12-07 18:10 ` Laszlo Ersek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231110235820.644381-23-lersek@redhat.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox