On 04/28/16 17:51, Ard Biesheuvel wrote:
> If the current PCI configuration requires no resources to be allocated at
> all (i.e., unpopulated bus), the PCI enumeration code creates a single
> ACPI_ADDRESS_SPACE_DESCRIPTOR memory descriptor with all fields cleared.
> This is rejected by the SubmitResources() implementation of the generic
> PciHostBridgeDxe in the following way:
> 
>   PciHostBridge: SubmitResources for PcieRoot(0x0)
>    Mem: Granularity/SpecificFlag = 0 / 00
>         Length/Alignment = 0x0 / 0x0
>   PciBus: HostBridge->SubmitResources() - Invalid Parameter
> 
>   ASSERT_EFI_ERROR (Status = Invalid Parameter)
>   ASSERT [PciBusDxe] .../PciBusDxe/PciLib.c(561): !EFI_ERROR (Status)
> 
> So instead, create the empty configuration as a single entry of type
> EFI_ACPI_END_TAG_DESCRIPTOR.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Ard Biesheuvel <[email protected]>
> ---
>  MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumerator.c | 7 ++-----
>  1 file changed, 2 insertions(+), 5 deletions(-)

Is this error related to the other thread?

http://thread.gmane.org/gmane.comp.bios.edk2.devel/11135

In particular, to PcdPciDisableBusEnumeration?

Thanks
Laszlo

> diff --git a/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumerator.c 
> b/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumerator.c
> index 597c0834e0f5..469a2ddb8ac0 100644
> --- a/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumerator.c
> +++ b/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumerator.c
> @@ -1307,15 +1307,12 @@ ConstructAcpiResourceRequestor (
>      //
>      // If there is no resource request
>      //
> -    Configuration = AllocateZeroPool (sizeof 
> (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR) + sizeof (EFI_ACPI_END_TAG_DESCRIPTOR));
> +    Configuration = AllocateZeroPool (sizeof (EFI_ACPI_END_TAG_DESCRIPTOR));
>      if (Configuration == NULL) {
>        return EFI_OUT_OF_RESOURCES;
>      }
>  
> -    Ptr               = (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *) 
> (Configuration);
> -    Ptr->Desc         = ACPI_ADDRESS_SPACE_DESCRIPTOR;
> -
> -    PtrEnd            = (EFI_ACPI_END_TAG_DESCRIPTOR *) (Ptr + 1);
> +    PtrEnd            = (EFI_ACPI_END_TAG_DESCRIPTOR *) (Configuration);
>      PtrEnd->Desc      = ACPI_END_TAG_DESCRIPTOR;
>      PtrEnd->Checksum  = 0;
>    }
> 

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to