Modified the SVN log:) -----Original Message----- From: [email protected] [mailto:[email protected]] Sent: Tuesday, November 3, 2015 10:41 AM To: Ni, Ruiyu <[email protected]> Cc: [email protected]; [email protected]; Leif Lindholm <[email protected]> Subject: Re: edk2[18717] Revert "MdeModulePkg: Fix a PciBusDxe hot plug bug"
> On Nov 2, 2015, at 6:38 PM, Ni, Ruiyu <[email protected]> wrote: > > Leif suggested to split the patch. > It would be good to capture that in the commit message. Thanks, Andrew Fish > -----Original Message----- > From: Andrew Fish [mailto:[email protected]] > Sent: Tuesday, November 3, 2015 10:35 AM > To: [email protected] > Cc: [email protected] > Subject: Re: edk2[18717] Revert "MdeModulePkg: Fix a PciBusDxe hot plug bug" > > >> On Nov 2, 2015, at 6:33 PM, [email protected] wrote: >> >> Revision: 18717 >> http://sourceforge.net/p/edk2/code/18717 >> Author: niruiyu >> Date: 2015-11-03 02:33:05 +0000 (Tue, 03 Nov 2015) >> Log Message: >> ----------- >> Revert "MdeModulePkg: Fix a PciBusDxe hot plug bug" >> >> This reverts commit 73b7f115c653c807b9d0be97bf516871d8aff7ba. >> > > Why was it reverted? > > Thanks, > > Andrew Fish > >> Contributed-under: TianoCore Contribution Agreement 1.0 >> Signed-off-by: Ruiyu Ni <[email protected]> >> Reviewed-by: Feng Tian <[email protected]> >> >> Modified Paths: >> -------------- >> trunk/edk2/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c >> trunk/edk2/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.h >> trunk/edk2/MdeModulePkg/Bus/Pci/PciBusDxe/PciLib.c >> trunk/edk2/MdeModulePkg/Bus/Pci/PciBusDxe/PciResourceSupport.c >> >> Modified: trunk/edk2/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c >> =================================================================== >> --- trunk/edk2/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c >> 2015-11-03 02:06:57 UTC (rev 18716) >> +++ trunk/edk2/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c >> 2015-11-03 02:33:05 UTC (rev 18717) >> @@ -325,81 +325,6 @@ >> } >> >> /** >> - Dump the PPB padding resource information. >> - >> - @param PciIoDevice PCI IO instance. >> - @param ResourceType The desired resource type to dump. >> - PciBarTypeUnknown means to dump all types of >> resources. >> -**/ >> -VOID >> -DumpPpbPaddingResource ( >> - IN PCI_IO_DEVICE *PciIoDevice, >> - IN PCI_BAR_TYPE ResourceType >> - ) >> -{ >> - EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *Descriptor; >> - PCI_BAR_TYPE Type; >> - >> - if (PciIoDevice->ResourcePaddingDescriptors == NULL) { >> - return; >> - } >> - >> - if (ResourceType == PciBarTypeIo16 || ResourceType == PciBarTypeIo32) { >> - ResourceType = PciBarTypeIo; >> - } >> - >> - for (Descriptor = PciIoDevice->ResourcePaddingDescriptors; >> Descriptor->Desc != ACPI_END_TAG_DESCRIPTOR; Descriptor++) { >> - >> - Type = PciBarTypeUnknown; >> - if (Descriptor->Desc == ACPI_ADDRESS_SPACE_DESCRIPTOR && >> Descriptor->ResType == ACPI_ADDRESS_SPACE_TYPE_IO) { >> - Type = PciBarTypeIo; >> - } else if (Descriptor->Desc == ACPI_ADDRESS_SPACE_DESCRIPTOR && >> Descriptor->ResType == ACPI_ADDRESS_SPACE_TYPE_MEM) { >> - >> - if (Descriptor->AddrSpaceGranularity == 32) { >> - // >> - // prefechable >> - // >> - if (Descriptor->SpecificFlag == >> EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_PREFETCHABLE) { >> - Type = PciBarTypePMem32; >> - } >> - >> - // >> - // Non-prefechable >> - // >> - if (Descriptor->SpecificFlag == 0) { >> - Type = PciBarTypeMem32; >> - } >> - } >> - >> - if (Descriptor->AddrSpaceGranularity == 64) { >> - // >> - // prefechable >> - // >> - if (Descriptor->SpecificFlag == >> EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_PREFETCHABLE) { >> - Type = PciBarTypePMem64; >> - } >> - >> - // >> - // Non-prefechable >> - // >> - if (Descriptor->SpecificFlag == 0) { >> - Type = PciBarTypeMem64; >> - } >> - } >> - } >> - >> - if ((Type != PciBarTypeUnknown) && ((ResourceType == PciBarTypeUnknown) >> || (ResourceType == Type))) { >> - DEBUG (( >> - EFI_D_INFO, >> - " Padding: Type = %s; Alignment = 0x%lx;\tLength = 0x%lx\n", >> - mBarTypeStr[Type], Descriptor->AddrRangeMax, Descriptor->AddrLen >> - )); >> - } >> - } >> - >> -} >> - >> -/** >> Dump the PCI BAR information. >> >> @param PciIoDevice PCI IO instance. >> @@ -661,10 +586,7 @@ >> >> GetResourcePaddingPpb (PciIoDevice); >> >> - DEBUG_CODE ( >> - DumpPpbPaddingResource (PciIoDevice, PciBarTypeUnknown); >> - DumpPciBars (PciIoDevice); >> - ); >> + DEBUG_CODE (DumpPciBars (PciIoDevice);); >> >> return PciIoDevice; >> } >> >> Modified: trunk/edk2/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.h >> =================================================================== >> --- trunk/edk2/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.h >> 2015-11-03 02:06:57 UTC (rev 18716) >> +++ trunk/edk2/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.h >> 2015-11-03 02:33:05 UTC (rev 18717) >> @@ -460,17 +460,4 @@ >> IN UINT8 StartBusNumber >> ); >> >> -/** >> - Dump the PPB padding resource information. >> - >> - @param PciIoDevice PCI IO instance. >> - @param ResourceType The desired resource type to dump. >> - PciBarTypeUnknown means to dump all types of >> resources. >> -**/ >> -VOID >> -DumpPpbPaddingResource ( >> - IN PCI_IO_DEVICE *PciIoDevice, >> - IN PCI_BAR_TYPE ResourceType >> - ); >> - >> #endif >> >> Modified: trunk/edk2/MdeModulePkg/Bus/Pci/PciBusDxe/PciLib.c >> =================================================================== >> --- trunk/edk2/MdeModulePkg/Bus/Pci/PciBusDxe/PciLib.c 2015-11-03 >> 02:06:57 UTC (rev 18716) >> +++ trunk/edk2/MdeModulePkg/Bus/Pci/PciBusDxe/PciLib.c 2015-11-03 >> 02:33:05 UTC (rev 18717) >> @@ -188,21 +188,19 @@ >> BridgeResource->PciDev->PciBar[BridgeResource->Bar].BaseAddress, >> BridgeResource->Length, BridgeResource->Alignment >> )); >> - for ( Link = GetFirstNode (&BridgeResource->ChildList) >> - ; !IsNull (&BridgeResource->ChildList, Link) >> - ; Link = GetNextNode (&BridgeResource->ChildList, Link) >> + for ( Link = BridgeResource->ChildList.ForwardLink >> + ; Link != &BridgeResource->ChildList >> + ; Link = Link->ForwardLink >> ) { >> Resource = RESOURCE_NODE_FROM_LINK (Link); >> if (Resource->ResourceUsage == PciResUsageTypical) { >> Bar = Resource->Virtual ? Resource->PciDev->VfPciBar : >> Resource->PciDev->PciBar; >> DEBUG (( >> - EFI_D_INFO, " Base = 0x%lx;\tLength = 0x%lx;\tAlignment = >> 0x%lx;\tOwner = %s [%02x|%02x|%02x:", >> + EFI_D_INFO, " Base = 0x%lx;\tLength = 0x%lx;\tAlignment = >> 0x%lx;\tOwner = %s ", >> Bar[Resource->Bar].BaseAddress, Resource->Length, >> Resource->Alignment, >> IS_PCI_BRIDGE (&Resource->PciDev->Pci) ? L"PPB" : >> IS_CARDBUS_BRIDGE (&Resource->PciDev->Pci) ? L"P2C" : >> - L"PCI", >> - Resource->PciDev->BusNumber, Resource->PciDev->DeviceNumber, >> - Resource->PciDev->FunctionNumber >> + L"PCI" >> )); >> >> if ((!IS_PCI_BRIDGE (&Resource->PciDev->Pci) && !IS_CARDBUS_BRIDGE >> (&Resource->PciDev->Pci)) || >> @@ -212,20 +210,24 @@ >> // >> // The resource requirement comes from the device itself. >> // >> - DEBUG ((EFI_D_INFO, "%02x]", Bar[Resource->Bar].Offset)); >> + DEBUG (( >> + EFI_D_INFO, " [%02x|%02x|%02x:%02x]\n", >> + Resource->PciDev->BusNumber, Resource->PciDev->DeviceNumber, >> + Resource->PciDev->FunctionNumber, Bar[Resource->Bar].Offset >> + )); >> } else { >> // >> // The resource requirement comes from the subordinate devices. >> // >> - DEBUG ((EFI_D_INFO, "**]")); >> + DEBUG (( >> + EFI_D_INFO, " [%02x|%02x|%02x:**]\n", >> + Resource->PciDev->BusNumber, Resource->PciDev->DeviceNumber, >> + Resource->PciDev->FunctionNumber >> + )); >> } >> } else { >> - DEBUG ((EFI_D_INFO, " Base = Padding;\tLength = 0x%lx;\tAlignment >> = 0x%lx", Resource->Length, Resource->Alignment)); >> + DEBUG ((EFI_D_INFO, " Padding:Length = 0x%lx;\tAlignment = >> 0x%lx\n", Resource->Length, Resource->Alignment)); >> } >> - if (BridgeResource->ResType != Resource->ResType) { >> - DEBUG ((EFI_D_INFO, "; Type = %s", mBarTypeStr[MIN >> (Resource->ResType, PciBarTypeMaxType)])); >> - } >> - DEBUG ((EFI_D_INFO, "\n")); >> } >> } >> } >> @@ -233,61 +235,63 @@ >> /** >> Find the corresponding resource node for the Device in child list of >> BridgeResource. >> >> - @param[in] Device Pointer to PCI_IO_DEVICE. >> - @param[in] BridgeResource Pointer to PCI_RESOURCE_NODE. >> - @param[out] DeviceResources Pointer to a buffer to receive resources for >> the Device. >> + @param[in] Device Pointer to PCI_IO_DEVICE. >> + @param[in] BridgeResource Pointer to PCI_RESOURCE_NODE. >> >> - @return Count of the resource descriptors returned. >> + @return !NULL The corresponding resource node for the Device. >> + @return NULL No corresponding resource node for the Device. >> **/ >> -UINTN >> +PCI_RESOURCE_NODE * >> FindResourceNode ( >> - IN PCI_IO_DEVICE *Device, >> - IN PCI_RESOURCE_NODE *BridgeResource, >> - OUT PCI_RESOURCE_NODE **DeviceResources OPTIONAL >> + IN PCI_IO_DEVICE *Device, >> + IN PCI_RESOURCE_NODE *BridgeResource >> ) >> { >> LIST_ENTRY *Link; >> PCI_RESOURCE_NODE *Resource; >> - UINTN Count; >> >> - Count = 0; >> for ( Link = BridgeResource->ChildList.ForwardLink >> ; Link != &BridgeResource->ChildList >> ; Link = Link->ForwardLink >> ) { >> Resource = RESOURCE_NODE_FROM_LINK (Link); >> if (Resource->PciDev == Device) { >> - if (DeviceResources != NULL) { >> - DeviceResources[Count] = Resource; >> - } >> - Count++; >> + return Resource; >> } >> } >> >> - return Count; >> + return NULL; >> } >> >> /** >> Dump the resource map of all the devices under Bridge. >> >> - @param[in] Bridge Bridge device instance. >> - @param[in] Resources Resource descriptors for the bridge device. >> - @param[in] ResourceCount Count of resource descriptors. >> + @param[in] Bridge Bridge device instance. >> + @param[in] IoNode IO resource descriptor for the bridge device. >> + @param[in] Mem32Node Mem32 resource descriptor for the bridge device. >> + @param[in] PMem32Node PMem32 resource descriptor for the bridge device. >> + @param[in] Mem64Node Mem64 resource descriptor for the bridge device. >> + @param[in] PMem64Node PMem64 resource descriptor for the bridge device. >> **/ >> VOID >> DumpResourceMap ( >> IN PCI_IO_DEVICE *Bridge, >> - IN PCI_RESOURCE_NODE **Resources, >> - IN UINTN ResourceCount >> + IN PCI_RESOURCE_NODE *IoNode, >> + IN PCI_RESOURCE_NODE *Mem32Node, >> + IN PCI_RESOURCE_NODE *PMem32Node, >> + IN PCI_RESOURCE_NODE *Mem64Node, >> + IN PCI_RESOURCE_NODE *PMem64Node >> ) >> { >> - EFI_STATUS Status; >> - LIST_ENTRY *Link; >> - PCI_IO_DEVICE *Device; >> - UINTN Index; >> - CHAR16 *Str; >> - PCI_RESOURCE_NODE **ChildResources; >> - UINTN ChildResourceCount; >> + EFI_STATUS Status; >> + LIST_ENTRY *Link; >> + PCI_IO_DEVICE *Device; >> + PCI_RESOURCE_NODE *ChildIoNode; >> + PCI_RESOURCE_NODE *ChildMem32Node; >> + PCI_RESOURCE_NODE *ChildPMem32Node; >> + PCI_RESOURCE_NODE *ChildMem64Node; >> + PCI_RESOURCE_NODE *ChildPMem64Node; >> + CHAR16 *Str; >> >> DEBUG ((EFI_D_INFO, "PciBus: Resource Map for ")); >> >> @@ -316,9 +320,11 @@ >> } >> } >> >> - for (Index = 0; Index < ResourceCount; Index++) { >> - DumpBridgeResource (Resources[Index]); >> - } >> + DumpBridgeResource (IoNode); >> + DumpBridgeResource (Mem32Node); >> + DumpBridgeResource (PMem32Node); >> + DumpBridgeResource (Mem64Node); >> + DumpBridgeResource (PMem64Node); >> DEBUG ((EFI_D_INFO, "\n")); >> >> for ( Link = Bridge->ChildList.ForwardLink >> @@ -328,19 +334,20 @@ >> Device = PCI_IO_DEVICE_FROM_LINK (Link); >> if (IS_PCI_BRIDGE (&Device->Pci)) { >> >> - ChildResourceCount = 0; >> - for (Index = 0; Index < ResourceCount; Index++) { >> - ChildResourceCount += FindResourceNode (Device, Resources[Index], >> NULL); >> - } >> - ChildResources = AllocatePool (sizeof (PCI_RESOURCE_NODE *) * >> ChildResourceCount); >> - ASSERT (ChildResources != NULL); >> - ChildResourceCount = 0; >> - for (Index = 0; Index < ResourceCount; Index++) { >> - ChildResourceCount += FindResourceNode (Device, Resources[Index], >> &ChildResources[ChildResourceCount]); >> - } >> + ChildIoNode = (IoNode == NULL ? NULL : FindResourceNode >> (Device, IoNode)); >> + ChildMem32Node = (Mem32Node == NULL ? NULL : FindResourceNode >> (Device, Mem32Node)); >> + ChildPMem32Node = (PMem32Node == NULL ? NULL : FindResourceNode >> (Device, PMem32Node)); >> + ChildMem64Node = (Mem64Node == NULL ? NULL : FindResourceNode >> (Device, Mem64Node)); >> + ChildPMem64Node = (PMem64Node == NULL ? NULL : FindResourceNode >> (Device, PMem64Node)); >> >> - DumpResourceMap (Device, ChildResources, ChildResourceCount); >> - FreePool (ChildResources); >> + DumpResourceMap ( >> + Device, >> + ChildIoNode, >> + ChildMem32Node, >> + ChildPMem32Node, >> + ChildMem64Node, >> + ChildPMem64Node >> + ); >> } >> } >> } >> @@ -800,11 +807,11 @@ >> // Create the entire system resource map from the information collected by >> // enumerator. Several resource tree was created >> // >> - FindResourceNode (RootBridgeDev, &IoPool, &IoBridge); >> - FindResourceNode (RootBridgeDev, &Mem32Pool, &Mem32Bridge); >> - FindResourceNode (RootBridgeDev, &PMem32Pool, &PMem32Bridge); >> - FindResourceNode (RootBridgeDev, &Mem64Pool, &Mem64Bridge); >> - FindResourceNode (RootBridgeDev, &PMem64Pool, &PMem64Bridge); >> + IoBridge = FindResourceNode (RootBridgeDev, &IoPool); >> + Mem32Bridge = FindResourceNode (RootBridgeDev, &Mem32Pool); >> + PMem32Bridge = FindResourceNode (RootBridgeDev, &PMem32Pool); >> + Mem64Bridge = FindResourceNode (RootBridgeDev, &Mem64Pool); >> + PMem64Bridge = FindResourceNode (RootBridgeDev, &PMem64Pool); >> >> ASSERT (IoBridge != NULL); >> ASSERT (Mem32Bridge != NULL); >> @@ -862,13 +869,14 @@ >> // Dump the resource map for current root bridge >> // >> DEBUG_CODE ( >> - PCI_RESOURCE_NODE *Resources[5]; >> - Resources[0] = IoBridge; >> - Resources[1] = Mem32Bridge; >> - Resources[2] = PMem32Bridge; >> - Resources[3] = Mem64Bridge; >> - Resources[4] = PMem64Bridge; >> - DumpResourceMap (RootBridgeDev, Resources, sizeof (Resources) / >> sizeof (Resources[0])); >> + DumpResourceMap ( >> + RootBridgeDev, >> + IoBridge, >> + Mem32Bridge, >> + PMem32Bridge, >> + Mem64Bridge, >> + PMem64Bridge >> + ); >> ); >> >> FreePool (AcpiConfig); >> @@ -976,8 +984,7 @@ >> UINT8 Device; >> UINT8 Func; >> UINT64 Address; >> - UINT8 SecondBus; >> - UINT8 PaddedSubBus; >> + UINTN SecondBus; >> UINT16 Register; >> UINTN HpIndex; >> PCI_IO_DEVICE *PciDevice; >> @@ -1211,7 +1218,7 @@ >> >> Status = PciScanBus ( >> PciDevice, >> - SecondBus, >> + (UINT8) (SecondBus), >> SubBusNumber, >> PaddedBusRange >> ); >> @@ -1227,16 +1234,12 @@ >> if ((Attributes == EfiPaddingPciRootBridge) && >> (State & EFI_HPC_STATE_ENABLED) != 0 && >> (State & EFI_HPC_STATE_INITIALIZED) != 0) { >> - *PaddedBusRange = (UINT8) ((UINT8) (BusRange) + >> *PaddedBusRange); >> + *PaddedBusRange = (UINT8) ((UINT8) (BusRange) +*PaddedBusRange); >> } else { >> - // >> - // Reserve the larger one between the actual occupied bus >> number and padded bus number >> - // >> - Status = PciAllocateBusNumber (PciDevice, StartBusNumber, >> (UINT8) (BusRange), &PaddedSubBus); >> + Status = PciAllocateBusNumber (PciDevice, *SubBusNumber, >> (UINT8) (BusRange), SubBusNumber); >> if (EFI_ERROR (Status)) { >> return Status; >> } >> - *SubBusNumber = MAX (PaddedSubBus, *SubBusNumber); >> } >> } >> >> >> Modified: trunk/edk2/MdeModulePkg/Bus/Pci/PciBusDxe/PciResourceSupport.c >> =================================================================== >> --- trunk/edk2/MdeModulePkg/Bus/Pci/PciBusDxe/PciResourceSupport.c >> 2015-11-03 02:06:57 UTC (rev 18716) >> +++ trunk/edk2/MdeModulePkg/Bus/Pci/PciBusDxe/PciResourceSupport.c >> 2015-11-03 02:33:05 UTC (rev 18717) >> @@ -196,7 +196,6 @@ >> PCI_RESOURCE_NODE *Node; >> UINT64 Offset; >> EFI_PCI_PLATFORM_POLICY PciPolicy; >> - UINT64 PaddingAperture; >> >> if (!mPolicyDetermined) { >> // >> @@ -229,27 +228,21 @@ >> mPolicyDetermined = TRUE; >> } >> >> - Aperture = 0; >> - PaddingAperture = 0; >> + Aperture = 0; >> >> if (Bridge == NULL) { >> return ; >> } >> >> + CurrentLink = Bridge->ChildList.ForwardLink; >> + >> // >> // Assume the bridge is aligned >> // >> - for ( CurrentLink = GetFirstNode (&Bridge->ChildList) >> - ; !IsNull (&Bridge->ChildList, CurrentLink) >> - ; CurrentLink = GetNextNode (&Bridge->ChildList, CurrentLink) >> - ) { >> + while (CurrentLink != &Bridge->ChildList) { >> >> Node = RESOURCE_NODE_FROM_LINK (CurrentLink); >> - if (Node->ResourceUsage == PciResUsagePadding) { >> - ASSERT (PaddingAperture == 0); >> - PaddingAperture = Node->Length; >> - continue; >> - } >> + >> // >> // Consider the aperture alignment >> // >> @@ -300,10 +293,13 @@ >> // Increment aperture by the length of node >> // >> Aperture += Node->Length; >> + >> + CurrentLink = CurrentLink->ForwardLink; >> } >> >> // >> - // Adjust the aperture with the bridge's alignment >> + // At last, adjust the aperture with the bridge's >> + // alignment >> // >> Offset = Aperture & (Bridge->Alignment); >> >> @@ -323,12 +319,6 @@ >> Bridge->Alignment = Node->Alignment; >> } >> } >> - >> - // >> - // Hotplug controller needs padding resources. >> - // Use the larger one between the padding resource and actual occupied >> resource. >> - // >> - Bridge->Length = MAX (Bridge->Length, PaddingAperture); >> } >> >> /** >> @@ -346,11 +336,10 @@ >> UINT64 Aperture; >> LIST_ENTRY *CurrentLink; >> PCI_RESOURCE_NODE *Node; >> - UINT64 PaddingAperture; >> + >> UINT64 Offset; >> >> - Aperture = 0; >> - PaddingAperture = 0; >> + Aperture = 0; >> >> if (Bridge == NULL) { >> return ; >> @@ -362,20 +351,14 @@ >> return ; >> } >> >> + CurrentLink = Bridge->ChildList.ForwardLink; >> + >> // >> // Assume the bridge is aligned >> // >> - for ( CurrentLink = GetFirstNode (&Bridge->ChildList) >> - ; !IsNull (&Bridge->ChildList, CurrentLink) >> - ; CurrentLink = GetNextNode (&Bridge->ChildList, CurrentLink) >> - ) { >> + while (CurrentLink != &Bridge->ChildList) { >> >> Node = RESOURCE_NODE_FROM_LINK (CurrentLink); >> - if (Node->ResourceUsage == PciResUsagePadding) { >> - ASSERT (PaddingAperture == 0); >> - PaddingAperture = Node->Length; >> - continue; >> - } >> >> // >> // Apply padding resource if available >> @@ -398,6 +381,11 @@ >> // Increment aperture by the length of node >> // >> Aperture += Node->Length; >> + >> + // >> + // Consider the aperture alignment >> + // >> + CurrentLink = CurrentLink->ForwardLink; >> } >> >> // >> @@ -419,7 +407,7 @@ >> } >> >> // >> - // Adjust the bridge's alignment to the first child's alignment >> + // At last, adjust the bridge's alignment to the first child's alignment >> // if the bridge has at least one child >> // >> CurrentLink = Bridge->ChildList.ForwardLink; >> @@ -429,12 +417,6 @@ >> Bridge->Alignment = Node->Alignment; >> } >> } >> - >> - // >> - // Hotplug controller needs padding resources. >> - // Use the larger one between the padding resource and actual occupied >> resource. >> - // >> - Bridge->Length = MAX (Bridge->Length, PaddingAperture); >> } >> >> /** >> >> >> ------------------------------------------------------------------------------ >> _______________________________________________ >> edk2-commits mailing list >> [email protected] >> https://lists.sourceforge.net/lists/listinfo/edk2-commits > > > ------------------------------------------------------------------------------ > _______________________________________________ > edk2-commits mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/edk2-commits ------------------------------------------------------------------------------ _______________________________________________ edk2-commits mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-commits
