|
@@ -320,9 +320,11 @@ int pci_reassign_resource(struct pci_dev *dev, int resno, resource_size_t addsiz
|
|
|
resource_size_t min_align)
|
|
|
{
|
|
|
struct resource *res = dev->resource + resno;
|
|
|
+ unsigned long flags;
|
|
|
resource_size_t new_size;
|
|
|
int ret;
|
|
|
|
|
|
+ flags = res->flags;
|
|
|
res->flags |= IORESOURCE_UNSET;
|
|
|
if (!res->parent) {
|
|
|
dev_info(&dev->dev, "BAR %d: can't reassign an unassigned resource %pR\n",
|
|
@@ -339,7 +341,12 @@ int pci_reassign_resource(struct pci_dev *dev, int resno, resource_size_t addsiz
|
|
|
dev_info(&dev->dev, "BAR %d: reassigned %pR\n", resno, res);
|
|
|
if (resno < PCI_BRIDGE_RESOURCES)
|
|
|
pci_update_resource(dev, resno);
|
|
|
+ } else {
|
|
|
+ res->flags = flags;
|
|
|
+ dev_info(&dev->dev, "BAR %d: %pR (failed to expand by %#llx)\n",
|
|
|
+ resno, res, (unsigned long long) addsize);
|
|
|
}
|
|
|
+
|
|
|
return ret;
|
|
|
}
|
|
|
|