Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni <[email protected]> Cc: Jeff Fan <[email protected]> Cc: Feng Tian <[email protected]> --- .../PciHostBridgeLibNull/PciHostBridgeLibNull.c | 104 +++++++++++++++++++++ .../PciHostBridgeLibNull/PciHostBridgeLibNull.inf | 36 +++++++ .../PciHostBridgeLibNull/PciHostBridgeLibNull.uni | Bin 0 -> 1836 bytes MdeModulePkg/MdeModulePkg.dsc | 3 +- 4 files changed, 142 insertions(+), 1 deletion(-) create mode 100644 MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.c create mode 100644 MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.inf create mode 100644 MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.uni
diff --git a/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.c b/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.c new file mode 100644 index 0000000..b70bdb5 --- /dev/null +++ b/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.c @@ -0,0 +1,104 @@ +/** @file + Null instance of PCI Host Bridge Library with empty functions. + + Copyright (c) 2016, 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. + +**/ +#include <PiDxe.h> +#include <Library/PciHostBridgeLib.h> +#include <Library/DebugLib.h> + +GLOBAL_REMOVE_IF_UNREFERENCED CHAR16 *mPciHostBridgeLibAcpiAddressSpaceTypeStr[] = { + L"Mem", L"I/O", L"Bus" +}; + +/** + Return all the root bridge instances in an array. + + @param Count Return the count of root bridge instances. + + @return All the root bridge instances in an array. + The array should be passed into PciHostBridgeFreeRootBridges() + when it's not used. +**/ +PCI_ROOT_BRIDGE * +EFIAPI +PciHostBridgeGetRootBridges ( + UINTN *Count + ) +{ + *Count = 0; + return NULL; +} + +/** + Free the root bridge instances array returned from PciHostBridgeGetRootBridges(). + + @param The root bridge instances array. + @param The count of the array. +**/ +VOID +EFIAPI +PciHostBridgeFreeRootBridges ( + PCI_ROOT_BRIDGE *Bridges, + UINTN Count + ) +{ + return; +} + +/** + Inform the platform that the resource conflict happens. + + @param HostBridgeHandle Handle of the Host Bridge. + @param Configuration Pointer to PCI I/O and PCI memory resource descriptors. + The Configuration contains the resources for all the + root bridges. The resource for each root bridge is + terminated with END descriptor and an additional END + is appended indicating the end of the entire resources. + The resource descriptor field values follow the description + in EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL.SubmitResources(). +**/ +VOID +EFIAPI +PciHostBridgeResourceConflict ( + EFI_HANDLE HostBridgeHandle, + VOID *Configuration + ) +{ + EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *Descriptor; + UINTN RootBridgeIndex; + DEBUG ((EFI_D_ERROR, "PciHostBridge: Resource conflict happens!\n")); + + RootBridgeIndex = 0; + Descriptor = (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *) Configuration; + while (Descriptor->Desc == ACPI_ADDRESS_SPACE_DESCRIPTOR) { + DEBUG ((EFI_D_INFO, "RootBridge[%d]:\n", RootBridgeIndex++)); + for (; Descriptor->Desc == ACPI_ADDRESS_SPACE_DESCRIPTOR; Descriptor++) { + ASSERT (Descriptor->ResType < + sizeof (mPciHostBridgeLibAcpiAddressSpaceTypeStr) / sizeof (mPciHostBridgeLibAcpiAddressSpaceTypeStr[0]) + ); + DEBUG ((EFI_D_ERROR, " %s: Length/Alignment = 0x%lx / 0x%lx\n", + mPciHostBridgeLibAcpiAddressSpaceTypeStr[Descriptor->ResType], Descriptor->AddrLen, Descriptor->AddrRangeMax)); + if (Descriptor->ResType == ACPI_ADDRESS_SPACE_TYPE_MEM) { + DEBUG ((EFI_D_ERROR, " Granularity/SpecificFlag = %ld / %02x%s\n", + Descriptor->AddrSpaceGranularity, Descriptor->SpecificFlag, + ((Descriptor->SpecificFlag & EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_PREFETCHABLE) != 0) ? L" (Prefetchable)" : L"" + )); + } + } + // + // Skip the END descriptor for root bridge + // + ASSERT (Descriptor->Desc == ACPI_END_TAG_DESCRIPTOR); + Descriptor = (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *) ((EFI_ACPI_END_TAG_DESCRIPTOR *) Descriptor + 1); + } +} diff --git a/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.inf b/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.inf new file mode 100644 index 0000000..6b30211 --- /dev/null +++ b/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.inf @@ -0,0 +1,36 @@ +## @file +# Null instance of PCI Host Bridge Library with empty functions. +# +# Copyright (c) 2016, 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 = PciHostBridgeLibNull + MODULE_UNI_FILE = PciHostBridgeLibNull.uni + FILE_GUID = A19A6C36-7053-4E2C-8BD0-E8286230E473 + MODULE_TYPE = DXE_DRIVER + VERSION_STRING = 1.0 + LIBRARY_CLASS = PciHostBridgeLib + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 IPF EBC +# + +[Sources] + PciHostBridgeLibNull.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec diff --git a/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.uni b/MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.uni new file mode 100644 index 0000000000000000000000000000000000000000..8a06bb720f625b8ce126e41a5092dd75ddfcc0cc GIT binary patch literal 1836 zcmdUvPjAye5XI+=#CKSw7eH+S9C|<qku(M@ppFtpg;Qn6O=`($E5}g!<)Oc~j_neP z#0h~S@1L33nKy6W=EwJe4b1U9;pgnNEiJdg&g`K*z$)LdeZf+&%I(57R$0QlAja7x z@y;f8WFhlA_VPO$SxIzeD<AcNb&4h7yTN<SzOr*xXSTL0*0L_Cqr4T~OJAwqqWD+Q z9D(!-^y+p+N9z3%Jv?T9Zcpu*9ojzYkbWw<6^lAka!O;;cH74@-16LI+h8p@x8W=8 zD`RGTdkMc&dvy;xF&J{99r;TttbC0%d)-;aEZ%i<2`Cpth=2KRICnw3!y;6wm$NF! z*0HY})ae4B6d*kaQ<q<-Gar+HHzBTIOc`}fH!N?-x<OLcT6@$DN+DCEbkeAyQCo9v zWHTF+N9yXZbXc!F7YoK;yUoEMmXxdJOSPn3b)AB<sjGX5x133#^-B=uZ^Z0k`k9xS zOKCgx-7o2?W<ZFlJG@Fc6*uw1zd32D=2r2g@2=0;lKUC#aKFKlf;_W>9Z#Pu=X@O_ zF)uU#%>?yC_LgyIAK8a6>EKdxj5S1Gb5?=pcg{b+nDvyHCPT-4h@Jx?W<GPoN;=lq zV^&^e?J<x1Uc3D}m`?C3Yve0BJ0WW7ksV_X$*LTYuRdib?6Rq5Osry5wT^m2tg3%z zeve1U_5OlwmAZ?-KDBwe>>*rCP?Ktod1Vc6&FuVt<iOiy)3?`ZrhYp$f2U-M$T25d zV5cAwUt)F$TQPWk_uJzR^#)eld%~zUBPAS=OGtZk)M)VU{~Pz(-v6v`sb)sUQq-iq Lsr!2WANsxpGLj(o literal 0 HcmV?d00001 diff --git a/MdeModulePkg/MdeModulePkg.dsc b/MdeModulePkg/MdeModulePkg.dsc index 0e3e5eb..4b093e4 100644 --- a/MdeModulePkg/MdeModulePkg.dsc +++ b/MdeModulePkg/MdeModulePkg.dsc @@ -2,7 +2,7 @@ # EFI/PI Reference Module Package for All Architectures # # (C) Copyright 2014 Hewlett-Packard Development Company, L.P.<BR> -# Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR> +# Copyright (c) 2007 - 2016, 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 @@ -96,6 +96,7 @@ S3BootScriptLib|MdeModulePkg/Library/PiDxeS3BootScriptLib/DxeS3BootScriptLib.inf CpuExceptionHandlerLib|MdeModulePkg/Library/CpuExceptionHandlerLibNull/CpuExceptionHandlerLibNull.inf PlatformBootManagerLib|MdeModulePkg/Library/PlatformBootManagerLibNull/PlatformBootManagerLibNull.inf + PciHostBridgeLib|MdeModulePkg/Library/PciHostBridgeLibNull/PciHostBridgeLibNull.inf TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf AuthVariableLib|MdeModulePkg/Library/AuthVariableLibNull/AuthVariableLibNull.inf VarCheckLib|MdeModulePkg/Library/VarCheckLib/VarCheckLib.inf -- 2.6.2.windows.1 _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

