aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjorn Helgaas <bhelgaas@google.com>2012-09-24 19:24:11 -0400
committerBjorn Helgaas <bhelgaas@google.com>2012-09-24 19:24:11 -0400
commit78c8f84302ce007aedcfa11912fd4aacf22727ab (patch)
treef7a699c34875cd33c2e6c1301b740adb0ba4054f
parentd3ce52f50cc1697504130897f1d7c489b62dae1c (diff)
parent84544a1dea61879edebceddb7a76d5737409f8c8 (diff)
Merge branch 'pci/yinghai-misc' into next
-rw-r--r--arch/ia64/pci/pci.c3
-rw-r--r--arch/x86/pci/acpi.c3
-rw-r--r--drivers/gpu/vga/vgaarb.c14
-rw-r--r--drivers/pci/bus.c6
-rw-r--r--drivers/pci/probe.c6
5 files changed, 19 insertions, 13 deletions
diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c
index a7ebe9440271..5faa66c5c2a8 100644
--- a/arch/ia64/pci/pci.c
+++ b/arch/ia64/pci/pci.c
@@ -295,7 +295,6 @@ static __devinit acpi_status add_window(struct acpi_resource *res, void *data)
295 window->resource.flags = flags; 295 window->resource.flags = flags;
296 window->resource.start = addr.minimum + offset; 296 window->resource.start = addr.minimum + offset;
297 window->resource.end = window->resource.start + addr.address_length - 1; 297 window->resource.end = window->resource.start + addr.address_length - 1;
298 window->resource.child = NULL;
299 window->offset = offset; 298 window->offset = offset;
300 299
301 if (insert_resource(root, &window->resource)) { 300 if (insert_resource(root, &window->resource)) {
@@ -357,7 +356,7 @@ pci_acpi_scan_root(struct acpi_pci_root *root)
357 &windows); 356 &windows);
358 if (windows) { 357 if (windows) {
359 controller->window = 358 controller->window =
360 kmalloc_node(sizeof(*controller->window) * windows, 359 kzalloc_node(sizeof(*controller->window) * windows,
361 GFP_KERNEL, controller->node); 360 GFP_KERNEL, controller->node);
362 if (!controller->window) 361 if (!controller->window)
363 goto out2; 362 goto out2;
diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c
index 505acdd6d600..192397c98606 100644
--- a/arch/x86/pci/acpi.c
+++ b/arch/x86/pci/acpi.c
@@ -305,7 +305,6 @@ setup_resource(struct acpi_resource *acpi_res, void *data)
305 res->flags = flags; 305 res->flags = flags;
306 res->start = start; 306 res->start = start;
307 res->end = end; 307 res->end = end;
308 res->child = NULL;
309 308
310 if (!pci_use_crs) { 309 if (!pci_use_crs) {
311 dev_printk(KERN_DEBUG, &info->bridge->dev, 310 dev_printk(KERN_DEBUG, &info->bridge->dev,
@@ -434,7 +433,7 @@ probe_pci_root_info(struct pci_root_info *info, struct acpi_device *device,
434 433
435 size = sizeof(*info->res) * info->res_num; 434 size = sizeof(*info->res) * info->res_num;
436 info->res_num = 0; 435 info->res_num = 0;
437 info->res = kmalloc(size, GFP_KERNEL); 436 info->res = kzalloc(size, GFP_KERNEL);
438 if (!info->res) 437 if (!info->res)
439 return; 438 return;
440 439
diff --git a/drivers/gpu/vga/vgaarb.c b/drivers/gpu/vga/vgaarb.c
index b6852b776931..e893f6e1937d 100644
--- a/drivers/gpu/vga/vgaarb.c
+++ b/drivers/gpu/vga/vgaarb.c
@@ -141,7 +141,11 @@ EXPORT_SYMBOL_GPL(vga_default_device);
141 141
142void vga_set_default_device(struct pci_dev *pdev) 142void vga_set_default_device(struct pci_dev *pdev)
143{ 143{
144 vga_default = pdev; 144 if (vga_default == pdev)
145 return;
146
147 pci_dev_put(vga_default);
148 vga_default = pci_dev_get(pdev);
145} 149}
146#endif 150#endif
147 151
@@ -577,7 +581,7 @@ static bool vga_arbiter_add_pci_device(struct pci_dev *pdev)
577#ifndef __ARCH_HAS_VGA_DEFAULT_DEVICE 581#ifndef __ARCH_HAS_VGA_DEFAULT_DEVICE
578 if (vga_default == NULL && 582 if (vga_default == NULL &&
579 ((vgadev->owns & VGA_RSRC_LEGACY_MASK) == VGA_RSRC_LEGACY_MASK)) 583 ((vgadev->owns & VGA_RSRC_LEGACY_MASK) == VGA_RSRC_LEGACY_MASK))
580 vga_default = pci_dev_get(pdev); 584 vga_set_default_device(pdev);
581#endif 585#endif
582 586
583 vga_arbiter_check_bridge_sharing(vgadev); 587 vga_arbiter_check_bridge_sharing(vgadev);
@@ -613,10 +617,8 @@ static bool vga_arbiter_del_pci_device(struct pci_dev *pdev)
613 } 617 }
614 618
615#ifndef __ARCH_HAS_VGA_DEFAULT_DEVICE 619#ifndef __ARCH_HAS_VGA_DEFAULT_DEVICE
616 if (vga_default == pdev) { 620 if (vga_default == pdev)
617 pci_dev_put(vga_default); 621 vga_set_default_device(NULL);
618 vga_default = NULL;
619 }
620#endif 622#endif
621 623
622 if (vgadev->decodes & (VGA_RSRC_LEGACY_IO | VGA_RSRC_LEGACY_MEM)) 624 if (vgadev->decodes & (VGA_RSRC_LEGACY_IO | VGA_RSRC_LEGACY_MEM))
diff --git a/drivers/pci/bus.c b/drivers/pci/bus.c
index 4b0970b46e0b..6241fd05bd41 100644
--- a/drivers/pci/bus.c
+++ b/drivers/pci/bus.c
@@ -87,11 +87,15 @@ EXPORT_SYMBOL_GPL(pci_bus_resource_n);
87void pci_bus_remove_resources(struct pci_bus *bus) 87void pci_bus_remove_resources(struct pci_bus *bus)
88{ 88{
89 int i; 89 int i;
90 struct pci_bus_resource *bus_res, *tmp;
90 91
91 for (i = 0; i < PCI_BRIDGE_RESOURCE_NUM; i++) 92 for (i = 0; i < PCI_BRIDGE_RESOURCE_NUM; i++)
92 bus->resource[i] = NULL; 93 bus->resource[i] = NULL;
93 94
94 pci_free_resource_list(&bus->resources); 95 list_for_each_entry_safe(bus_res, tmp, &bus->resources, list) {
96 list_del(&bus_res->list);
97 kfree(bus_res);
98 }
95} 99}
96 100
97/** 101/**
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index 23961117663f..ec909afa90b6 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -729,8 +729,10 @@ int __devinit pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max,
729 729
730 /* Check if setup is sensible at all */ 730 /* Check if setup is sensible at all */
731 if (!pass && 731 if (!pass &&
732 (primary != bus->number || secondary <= bus->number)) { 732 (primary != bus->number || secondary <= bus->number ||
733 dev_dbg(&dev->dev, "bus configuration invalid, reconfiguring\n"); 733 secondary > subordinate)) {
734 dev_info(&dev->dev, "bridge configuration invalid ([bus %02x-%02x]), reconfiguring\n",
735 secondary, subordinate);
734 broken = 1; 736 broken = 1;
735 } 737 }
736 738