On 05/09/16 08:26, Ruiyu Ni wrote: > Some platform doesn't require PciBus driver to assign resource > to PCI devices which causes PciRootBridgeIo.Configuration() cannot > return correct resource information to caller. > > When resource assignment by PciBus is not mandatory, only light > version of PCI bus enumeration is performed, which only collects > the device resource consumption and publishes the PciIo instance. > The corresponding logic is in PciEnumeratorLight() in PciBus driver. > > But PciEnumeratorLight() still depends on > PciRootBridgeIo.Configuration() returns the starting bus number in > order to search down to find all PCI devices under the root bridge. > > When ResourceAssigned in PCI_ROOT_BRIDGE returned by > PciHostBridgeGetRootBridges() is TRUE, PciHostBridge driver treats > the Bus/Io/Mem/MemAbove4G/PMem/PMemAbove4G as the resource that are > *actually assigned* to the root bridge, instead of the resource that > *can be assigned* to the root bridge. > So that PciRootBridgeIo.Configuration() can return the correct > information. > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Ruiyu Ni <[email protected]> > Cc: Laszlo Ersek <[email protected]> > Cc: Jeff Fan <[email protected]> > --- > MdeModulePkg/Include/Library/PciHostBridgeLib.h | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/MdeModulePkg/Include/Library/PciHostBridgeLib.h > b/MdeModulePkg/Include/Library/PciHostBridgeLib.h > index eb45cfd..7ef5dd1 100644 > --- a/MdeModulePkg/Include/Library/PciHostBridgeLib.h > +++ b/MdeModulePkg/Include/Library/PciHostBridgeLib.h > @@ -38,6 +38,8 @@ typedef struct { > ///< Extended (4096-byte) > Configuration Space. > ///< When TRUE, the root > bridge supports > ///< 256-byte > Configuration Space only. > + BOOLEAN ResourceAssigned; ///< Resource assignment > status of the root bridge. > + ///< Set to TRUE when > Bus/IO/MMIO resources for root bridge are assigned.
Instead of when Bus/IO/MMIO resources for root bridge are assigned I propose if Bus/IO/MMIO resources for root bridge have been assigned With that: Reviewed-by: Laszlo Ersek <[email protected]> Thanks! Laszlo > UINT64 AllocationAttributes; ///< Allocation attributes. > ///< Refer to > EFI_PCI_HOST_BRIDGE_COMBINE_MEM_PMEM and > ///< > EFI_PCI_HOST_BRIDGE_MEM64_DECODE used by GetAllocAttributes() > _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

