]> git.proxmox.com Git - mirror_edk2.git/commit - MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumerator.c
MdeModulePkg/PciBusDxe: don't create bogus descriptor if no resources needed
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Thu, 28 Apr 2016 15:51:28 +0000 (23:51 +0800)
committerRuiyu Ni <ruiyu.ni@intel.com>
Fri, 29 Apr 2016 07:23:20 +0000 (15:23 +0800)
commitb59e2427c2d92cfee0238d9bde7372691c2af17c
treea73b277ce6e32461d6773ef2354b7d29d4fb40c1
parentcdd1b5e5486460ac96f44cddf1edfda25b1fdce9
MdeModulePkg/PciBusDxe: don't create bogus descriptor if no resources needed

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 <ard.biesheuvel@linaro.org>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumerator.c