On 04/28/16 18:09, Ard Biesheuvel wrote:
> On 28 April 2016 at 18:06, Laszlo Ersek <[email protected]> wrote:
>> 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?
>>
> 
> No, it is completely separate, as far as I can tell. It simply creates
> an incorrect descriptor list if none of the PCI devices behind a root
> bridge require any resources at all, and this is probably a code path
> that you are very unlikely to hit on x86.

Ah, very interesting. So only devices with PCI config space, right? How
curious. :)

Thank you for the explanation!
Laszlo

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

Reply via email to