EnableInterrupts ();\r
}\r
\r
+#define PCI_COMMAND_DECODE ((UINT16)(EFI_PCI_COMMAND_IO_SPACE | \\r
+ EFI_PCI_COMMAND_MEMORY_SPACE))\r
+STATIC\r
+VOID\r
+PcatPciRootBridgeDecodingDisable (\r
+ IN UINTN Address\r
+ )\r
+{\r
+ UINT16 Value;\r
+\r
+ Value = PciRead16 (Address);\r
+ if (Value & PCI_COMMAND_DECODE) {\r
+ PciWrite16 (Address, Value & ~(UINT32)PCI_COMMAND_DECODE);\r
+ }\r
+}\r
+\r
STATIC\r
VOID\r
PcatPciRootBridgeParseBars (\r
UINT64 Limit;\r
PCI_ROOT_BRIDGE_APERTURE *MemAperture;\r
\r
+ // Disable address decoding for every device before OVMF starts sizing it\r
+ PcatPciRootBridgeDecodingDisable (\r
+ PCI_LIB_ADDRESS (Bus, Device, Function, PCI_COMMAND_OFFSET)\r
+ );\r
+\r
for (Offset = BarOffsetBase; Offset < BarOffsetEnd; Offset += sizeof (UINT32)) {\r
PcatPciRootBridgeBarExisted (\r
PCI_LIB_ADDRESS (Bus, Device, Function, Offset),\r