OvmfPkg: add DxePciLibI440FxQ35

This library is a trivial unification of the following two PciLib
instances (and the result is easily diffable against each):
- MdePkg/Library/BasePciLibCf8
- MdePkg/Library/BasePciLibPciExpress

The PCI config access method is determined in the constructor function,
from the dynamic PCD "PcdOvmfHostBridgePciDevId" that is set by
PlatformPei.

The library instance is usable in DXE phase or later modules: the PciLib
instances being unified have no firmware phase / client module type
restrictions, and here the only PCD access is made in the constructor
function. That is, even before a given client executable's entry point is
invoked.

The library instance depends on PlatformPei both for setting the PCD
mentioned above, and also for enabling MMCONFIG on Q35. PEI and earlier
phase modules are not expected to need extended config access even on Q35.

Cc: Gabriel Somlo <somlo@cmu.edu>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Marcel Apfelbaum <marcel@redhat.com>
Cc: Micha Zegan <webczat_200@poczta.onet.pl>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Tested-by: Gabriel Somlo <somlo@cmu.edu>
Tested-by: Micha Zegan <webczat_200@poczta.onet.pl>
This commit is contained in:
Laszlo Ersek 2016-03-04 00:53:12 +01:00
parent 7b8fe63561
commit 7523788faa
2 changed files with 1276 additions and 0 deletions

View File

@ -0,0 +1,47 @@
## @file
# An instance of the PCI Library that is based on both the PCI CF8 Library and
# the PCI Express Library.
#
# This PciLib instance caches the OVMF platform type (I440FX vs. Q35) in
# its entry point function, then delegates function calls to one of the
# PciCf8Lib or PciExpressLib "backends" as appropriate.
#
# Copyright (C) 2016, Red Hat, Inc.
#
# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
#
# This program and the accompanying materials are licensed and made available
# under the terms and conditions of the BSD License which accompanies this
# distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php.
#
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR
# IMPLIED.
##
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = DxePciLibI440FxQ35
FILE_GUID = 5360bff6-3911-4495-ae3c-b02ff004b585
MODULE_TYPE = BASE
VERSION_STRING = 1.0
LIBRARY_CLASS = PciLib|DXE_DRIVER DXE_RUNTIME_DRIVER SMM_CORE DXE_SMM_DRIVER UEFI_DRIVER UEFI_APPLICATION
CONSTRUCTOR = InitializeConfigAccessMethod
# VALID_ARCHITECTURES = IA32 X64
[Sources]
PciLib.c
[Packages]
MdePkg/MdePkg.dec
OvmfPkg/OvmfPkg.dec
[LibraryClasses]
PcdLib
PciCf8Lib
PciExpressLib
[Pcd]
gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId

File diff suppressed because it is too large Load Diff