]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Bus/Pci/PciBusDxe/PciResourceSupport.c
MdeModulePkg/PciBus: do not improperly degrade resource
[mirror_edk2.git] / MdeModulePkg / Bus / Pci / PciBusDxe / PciResourceSupport.c
index 560f8d8a756ab25eee39904903fd30c0c20db3f6..b0632d53b82b9ffba96cc3161b2430040b8d19cc 100644 (file)
@@ -1072,7 +1072,9 @@ DegradeResource (
           ResourceNode = RESOURCE_NODE_FROM_LINK (ChildNodeLink);\r
           NextChildNodeLink = ChildNodeLink->ForwardLink;\r
 \r
-          if (ResourceNode->PciDev == PciIoDevice) {\r
+          if ((ResourceNode->PciDev == PciIoDevice) &&\r
+              (ResourceNode->Virtual || !PciIoDevice->PciBar[ResourceNode->Bar].BarTypeFixed)\r
+              ) {\r
             RemoveEntryList (ChildNodeLink);\r
             InsertResourceNode (Mem32Node, ResourceNode);\r
           }\r
@@ -1086,7 +1088,9 @@ DegradeResource (
           ResourceNode = RESOURCE_NODE_FROM_LINK (ChildNodeLink);\r
           NextChildNodeLink = ChildNodeLink->ForwardLink;\r
 \r
-          if (ResourceNode->PciDev == PciIoDevice) {\r
+          if ((ResourceNode->PciDev == PciIoDevice) &&\r
+              (ResourceNode->Virtual || !PciIoDevice->PciBar[ResourceNode->Bar].BarTypeFixed)\r
+              ) {\r
             RemoveEntryList (ChildNodeLink);\r
             InsertResourceNode (PMem32Node, ResourceNode);\r
           }\r