On 03/03/16 06:35, Ni, Ruiyu wrote:
> 
> 
> Reviewed-by: Ruiyu Ni <[email protected]>

Awesome. Thank you for working with me through this!

Thanks all for the reviews; committed as b07c96658132..014b472053ae.

Cheers
Laszlo

>> -----Original Message-----
>> From: Laszlo Ersek [mailto:[email protected]]
>> Sent: Tuesday, March 1, 2016 6:22 PM
>> To: [email protected]
>> Cc: Ni, Ruiyu <[email protected]>; Justen, Jordan L 
>> <[email protected]>; Marcel Apfelbaum <[email protected]>;
>> Kinney, Michael D <[email protected]>
>> Subject: [PATCH v3 2/2] MdeModulePkg: PciHostBridgeDxe: don't assume 
>> extended config space
>>
>> The "pc" ("pc-i440fx-*") machine types of QEMU don't support extended
>> config space. Accordingly, OVMF will use the following library instances
>> in connection with the core PciHostBridgeDxe driver:
>>
>>  BasePciSegmentLibPci [class: PciSegmentLib]
>>    BasePciLibCf8      [class: PciLib]
>>      BasePciCf8Lib    [class: PciCf8Lib]
>>
>> Add a new field to the PCI_ROOT_BRIDGE structure so that
>> RootBridgeIoCheckParameter() can catch config space offsets above 0xFF on
>> such old (emulated) platforms.
>>
>> Cc: Ruiyu Ni <[email protected]>
>> Cc: Jordan Justen <[email protected]>
>> Cc: Marcel Apfelbaum <[email protected]>
>> Cc: Michael Kinney <[email protected]>
>> Contributed-under: TianoCore Contribution Agreement 1.0
>> Signed-off-by: Laszlo Ersek <[email protected]>
>> ---
>>
>> Notes:
>>    v3:
>>    - invert the meaning of the field: replace ExtendedConfigSpace with
>>      NoExtendedConfigSpace [Ray]
>>
>>    v2:
>>    - replace the PCI config space "aperture" with a dedicated BOOLEAN flag
>>      called ExtendedConfigSpace [Ray]
>>    - simplify the commit message
>>
>> MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridge.h   | 1 +
>> MdeModulePkg/Include/Library/PciHostBridgeLib.h         | 4 ++++
>> MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridgeIo.c | 4 +++-
>> 3 files changed, 8 insertions(+), 1 deletion(-)
>>
>> diff --git a/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridge.h
>> b/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridge.h
>> index b1e83f1c9089..aa3f43a511c4 100644
>> --- a/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridge.h
>> +++ b/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridge.h
>> @@ -72,6 +72,7 @@ typedef struct {
>>   PCI_ROOT_BRIDGE_APERTURE          MemAbove4G;
>>   PCI_ROOT_BRIDGE_APERTURE          PMemAbove4G;
>>   BOOLEAN                           DmaAbove4G;
>> +  BOOLEAN                           NoExtendedConfigSpace;
>>   VOID                              *ConfigBuffer;
>>   EFI_DEVICE_PATH_PROTOCOL          *DevicePath;
>>   CHAR16                            *DevicePathStr;
>> diff --git a/MdeModulePkg/Include/Library/PciHostBridgeLib.h 
>> b/MdeModulePkg/Include/Library/PciHostBridgeLib.h
>> index 16ad104a9368..b67ac5e17d48 100644
>> --- a/MdeModulePkg/Include/Library/PciHostBridgeLib.h
>> +++ b/MdeModulePkg/Include/Library/PciHostBridgeLib.h
>> @@ -34,6 +34,10 @@ typedef struct {
>>                                                   ///< and SetAttributes() in
>> EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.
>>   BOOLEAN                  DmaAbove4G;            ///< DMA above 4GB memory.
>>                                                   ///< Set to TRUE when root 
>> bridge supports DMA above 4GB
>> memory.
>> +  BOOLEAN                  NoExtendedConfigSpace; ///< When FALSE, the root 
>> bridge supports
>> +                                                  ///< Extended (4096-byte) 
>> Configuration Space.
>> +                                                  ///< When TRUE, the root 
>> bridge supports
>> +                                                  ///< 256-byte 
>> Configuration Space only.
>>   UINT64                   AllocationAttributes;  ///< Allocation attributes.
>>                                                   ///< Refer to
>> EFI_PCI_HOST_BRIDGE_COMBINE_MEM_PMEM and
>>                                                   ///< 
>> EFI_PCI_HOST_BRIDGE_MEM64_DECODE used by
>> GetAllocAttributes()
>> diff --git a/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridgeIo.c
>> b/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridgeIo.c
>> index 932aefd5d621..cda9b49b3925 100644
>> --- a/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridgeIo.c
>> +++ b/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridgeIo.c
>> @@ -80,6 +80,7 @@ CreateRootBridge (
>>   DEBUG ((EFI_D_INFO, "%s\n", DevicePathStr = ConvertDevicePathToText 
>> (Bridge->DevicePath, FALSE, FALSE)));
>>   DEBUG ((EFI_D_INFO, "  Support/Attr: %lx / %lx\n", Bridge->Supports, 
>> Bridge->Attributes));
>>   DEBUG ((EFI_D_INFO, "    DmaAbove4G: %s\n", Bridge->DmaAbove4G ? L"Yes" : 
>> L"No"));
>> +  DEBUG ((EFI_D_INFO, "NoExtConfSpace: %s\n", Bridge->NoExtendedConfigSpace 
>> ? L"Yes" : L"No"));
>>   DEBUG ((EFI_D_INFO, "     AllocAttr: %lx (%s%s)\n", 
>> Bridge->AllocationAttributes,
>>           (Bridge->AllocationAttributes & 
>> EFI_PCI_HOST_BRIDGE_COMBINE_MEM_PMEM) != 0 ? L"CombineMemPMem
>> " : L"",
>>           (Bridge->AllocationAttributes & EFI_PCI_HOST_BRIDGE_MEM64_DECODE) 
>> != 0 ? L"Mem64Decode" : L""
>> @@ -155,6 +156,7 @@ CreateRootBridge (
>>   RootBridge->Supports = Bridge->Supports;
>>   RootBridge->Attributes = Bridge->Attributes;
>>   RootBridge->DmaAbove4G = Bridge->DmaAbove4G;
>> +  RootBridge->NoExtendedConfigSpace = Bridge->NoExtendedConfigSpace;
>>   RootBridge->AllocationAttributes = Bridge->AllocationAttributes;
>>   RootBridge->DevicePath = DuplicateDevicePath (Bridge->DevicePath);
>>   RootBridge->DevicePathStr = DevicePathStr;
>> @@ -351,7 +353,7 @@ RootBridgeIoCheckParameter (
>>       Address = PciRbAddr->Register;
>>     }
>>     Base = 0;
>> -    Limit = 0xFFF;
>> +    Limit = RootBridge->NoExtendedConfigSpace ? 0xFF : 0xFFF;
>>   }
>>
>>   if (Address < Base) {
>> --
>> 1.8.3.1
> 
> _______________________________________________
> edk2-devel mailing list
> [email protected]
> https://lists.01.org/mailman/listinfo/edk2-devel
> 

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

Reply via email to