Acidanthera UEFI Development Kit based on EDK II edk2-stable202311
Go to file
Laszlo Ersek 6a744d40d0 OvmfPkg: introduce PciCapPciSegmentLib
Add a library class, and a BASE lib instance, that are layered on top of
PciCapLib, and allow clients to plug a PciSegmentLib backend into
PciCapLib, for config space access.

(Side note:

The "MaxDomain" parameter is provided because, in practice, platforms
exist where a PCI Express device may show up on a root bridge such that
the root bridge doesn't support access to extended config space. Earlier
the same issue was handled for MdeModulePkg/PciHostBridgeDxe in commit
014b472053. However, that solution does not apply to the PciSegmentLib
class, because:

(1) The config space accessor functions of the PciSegmentLib class, such
    as PciSegmentReadBuffer(), have no way of informing the caller whether
    access to extended config space actually succeeds.

    (For example, in the UefiPciSegmentLibPciRootBridgeIo instace, which
    could in theory benefit from commit 014b472053, the
    EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Read() status code is explicitly
    ignored, because there's no way for the lib instance to propagate it
    to the PciSegmentLib caller. If the
    EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.Pci.Read() call fails, then
    DxePciSegmentLibPciRootBridgeIoReadWorker() returns Data with
    indeterminate value.)

(2) There is no *general* way for any firmware platform to provide, or
    use, a PciSegmentLib instance in which access to extended config space
    always succeeds.

In brief, on a platform where config space may be limited to 256 bytes,
access to extended config space through PciSegmentLib may invoke undefined
behavior; therefore PciCapPciSegmentLib must give platforms a way to
prevent such access.)

Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
2018-05-24 21:13:11 +02:00
AppPkg
ArmPkg ArmPkg: Fix bug in Generic Watchdog driver 2018-04-30 11:38:54 +02:00
ArmPlatformPkg ArmPlatformPkg: New DP500/DP550/DP650 GOP driver 2018-04-23 12:08:51 +01:00
ArmVirtPkg ArmVirtPkg/PlatformBootManagerLib: connect Virtio RNG devices again 2018-05-18 13:51:04 +02:00
BaseTools BaseTools/tools_def: add "-fno-unwind-tables" to GCC_AARCH64_CC_FLAGS 2018-05-23 16:54:18 +02:00
BeagleBoardPkg BeagleBoardPkg: drop unused PcdCacheEnabled dependency 2018-02-09 09:40:11 +00:00
Conf
CorebootModulePkg
CorebootPayloadPkg CorebootPayloadPkg: Conditionally add DebugAgentLib for DXE drivers 2018-03-30 07:28:18 +08:00
CryptoPkg CryptoPkg/CrtLibSupport: add secure_getenv() stub function 2018-05-08 13:29:06 +02:00
DuetPkg DuetPkg: Add SafeIntLib and BmpSupportLib to DSC files 2018-02-11 16:06:31 -08:00
EdkCompatibilityPkg
EdkShellBinPkg
EdkShellPkg
EmbeddedPkg EmbeddedPkg/Drivers: add virtual keyboard driver 2018-04-30 17:58:14 +01:00
EmulatorPkg EmulatorPkg: Undefine CR3 macro in Host.h 2018-02-27 18:33:51 +08:00
FatBinPkg
FatPkg FatPkg/EnhancedFatDxe: Ensure traverse of subtasks is delete-safe 2018-04-18 15:08:14 +08:00
IntelFrameworkModulePkg IntelFrameworkModule/LegacyBios: Use reserved memory for legacy data 2018-05-09 12:09:36 +08:00
IntelFrameworkPkg IntelFrameworkPkg UefiLib: Fix XCODE5 varargs warning 2018-05-23 10:37:48 +08:00
IntelFsp2Pkg
IntelFsp2WrapperPkg IntelFsp2WrapperPkg: Update BaseFspWrapperApiLib to pass XCODE5 build 2018-01-18 15:39:54 +08:00
IntelFspPkg
IntelFspWrapperPkg
IntelSiliconPkg IntelSiliconPkg MicrocodeUpdateDxe: Honor FIT table 2018-05-09 16:27:30 +08:00
MdeModulePkg MdeModulePkg Variable: Fix XCODE5 varargs warning 2018-05-23 10:37:49 +08:00
MdePkg MdePkg/TcgStorage*.h: Fixed ECC reported issues. 2018-05-24 10:48:32 +08:00
NetworkPkg NetworkPkg/NetworkPkg.dsc: Add the instance of library class [SafeIntLib]. 2018-05-07 11:39:32 +08:00
Nt32Pkg Nt32Pkg/NtGopInput: ReadKeyStrokeEx always return key state 2018-04-20 12:56:41 +08:00
Omap35xxPkg Omap35xxPkg/InterruptDxe: replace CPU Arch Protocol depex with notify 2018-04-12 21:24:12 +02:00
OptionRomPkg
OvmfPkg OvmfPkg: introduce PciCapPciSegmentLib 2018-05-24 21:13:11 +02:00
PcAtChipsetPkg PcAtChipsetPkg PeiAcpiTimerLib: Add the missing DebugLib header file 2018-02-07 09:16:15 +08:00
QuarkPlatformPkg QuarkPlatformPkg: remove TrEE reference. 2018-03-16 14:19:43 +08:00
QuarkSocPkg
SecurityPkg SecurityPkg/TcgStorage*Lib.h: Fix ECC reported issues. 2018-05-24 10:48:32 +08:00
ShellBinPkg ShellBinPkg: Update ReadMe.txt 2018-03-19 14:39:02 +08:00
ShellPkg ShellPkg: Add acpiview tool to dump ACPI tables 2018-04-23 17:52:44 +08:00
SignedCapsulePkg SignedCapsulePkg SystemFirmwareUpdate: Fix typo EFI_SECURITY_VIOLATIO 2018-04-25 16:36:44 +08:00
SourceLevelDebugPkg SourceLevelDebugPkg DebugCommUsb3: Return error when debug cap is reset 2018-03-20 20:23:53 +08:00
StdLib
StdLibPrivateInternalFiles
UefiCpuPkg UefiCpuPkg/SecMain: Add NORETURN decorator to SecStartup(). 2018-05-08 19:45:45 +08:00
UnixPkg
Vlv2DeviceRefCodePkg
Vlv2TbltDevicePkg Vlv2TbltDevicePkg: Sync FLASH libraries from UDK2017 branch 2018-03-28 09:00:49 -07:00
.gitignore
.gitmodules CryptoPkg: Adding OpenSSL as one submodule of EDKII repo 2018-01-18 14:06:15 +08:00
BuildNotes2.txt
Contributions.txt
License.txt
Maintainers.txt Maintainers.txt: add Laszlo Ersek to stewards 2018-04-24 09:56:59 +01:00
Readme.md
StandaloneMmPkg Maintainers.txt: Add StandaloneMmPkg and maintainers 2018-03-21 01:13:40 +00:00
edksetup.bat
edksetup.sh

Readme.md

EDK II Project

A modern, feature-rich, cross-platform firmware development environment for the UEFI and PI specifications from www.uefi.org.

Contributions to the EDK II open source project are covered by the TianoCore Contribution Agreement 1.1

The majority of the content in the EDK II open source project uses a BSD 2-Clause License. The EDK II open source project contains the following components that are covered by additional licenses:

The EDK II Project is composed of packages. The maintainers for each package are listed in Maintainers.txt.

Resources