diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-05-23 18:39:34 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-05-23 18:39:34 -0400 |
commit | 5e152b4c9e0fce6149c74406346a7ae7e7a17727 (patch) | |
tree | 12503a50142797c1babfd87099c193b3e4d54f93 /arch/x86/pci | |
parent | a77febbef105554c5a37241cf903f48ab7bc03c7 (diff) | |
parent | 9251bac97d47fdaea406ea0595c2d0aa50022f12 (diff) |
Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6
* 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6: (27 commits)
PCI: Don't use dmi_name_in_vendors in quirk
PCI: remove unused AER functions
PCI/sysfs: move bus cpuaffinity to class dev_attrs
PCI: add rescan to /sys/.../pci_bus/.../
PCI: update bridge resources to get more big ranges when allocating space (again)
KVM: Use pci_store/load_saved_state() around VM device usage
PCI: Add interfaces to store and load the device saved state
PCI: Track the size of each saved capability data area
PCI/e1000e: Add and use pci_disable_link_state_locked()
x86/PCI: derive pcibios_last_bus from ACPI MCFG
PCI: add latency tolerance reporting enable/disable support
PCI: add OBFF enable/disable support
PCI: add ID-based ordering enable/disable support
PCI hotplug: acpiphp: assume device is in state D0 after powering on a slot.
PCI: Set PCIE maxpayload for card during hotplug insertion
PCI/ACPI: Report _OSC control mask returned on failure to get control
x86/PCI: irq and pci_ids patch for Intel Panther Point DeviceIDs
PCI: handle positive error codes
PCI: check pci_vpd_pci22_wait() return
PCI: Use ICH6_GPIO_EN in ich6_lpc_acpi_gpio
...
Fix up trivial conflicts in include/linux/pci_ids.h: commit a6e5e2be4461
moved the intel SMBUS ID definitons to the i2c-i801.c driver.
Diffstat (limited to 'arch/x86/pci')
-rw-r--r-- | arch/x86/pci/direct.c | 17 | ||||
-rw-r--r-- | arch/x86/pci/irq.c | 4 | ||||
-rw-r--r-- | arch/x86/pci/mmconfig-shared.c | 10 |
3 files changed, 19 insertions, 12 deletions
diff --git a/arch/x86/pci/direct.c b/arch/x86/pci/direct.c index bd33620b007..e6fd8473fb7 100644 --- a/arch/x86/pci/direct.c +++ b/arch/x86/pci/direct.c | |||
@@ -280,12 +280,9 @@ void __init pci_direct_init(int type) | |||
280 | 280 | ||
281 | int __init pci_direct_probe(void) | 281 | int __init pci_direct_probe(void) |
282 | { | 282 | { |
283 | struct resource *region, *region2; | ||
284 | |||
285 | if ((pci_probe & PCI_PROBE_CONF1) == 0) | 283 | if ((pci_probe & PCI_PROBE_CONF1) == 0) |
286 | goto type2; | 284 | goto type2; |
287 | region = request_region(0xCF8, 8, "PCI conf1"); | 285 | if (!request_region(0xCF8, 8, "PCI conf1")) |
288 | if (!region) | ||
289 | goto type2; | 286 | goto type2; |
290 | 287 | ||
291 | if (pci_check_type1()) { | 288 | if (pci_check_type1()) { |
@@ -293,16 +290,14 @@ int __init pci_direct_probe(void) | |||
293 | port_cf9_safe = true; | 290 | port_cf9_safe = true; |
294 | return 1; | 291 | return 1; |
295 | } | 292 | } |
296 | release_resource(region); | 293 | release_region(0xCF8, 8); |
297 | 294 | ||
298 | type2: | 295 | type2: |
299 | if ((pci_probe & PCI_PROBE_CONF2) == 0) | 296 | if ((pci_probe & PCI_PROBE_CONF2) == 0) |
300 | return 0; | 297 | return 0; |
301 | region = request_region(0xCF8, 4, "PCI conf2"); | 298 | if (!request_region(0xCF8, 4, "PCI conf2")) |
302 | if (!region) | ||
303 | return 0; | 299 | return 0; |
304 | region2 = request_region(0xC000, 0x1000, "PCI conf2"); | 300 | if (!request_region(0xC000, 0x1000, "PCI conf2")) |
305 | if (!region2) | ||
306 | goto fail2; | 301 | goto fail2; |
307 | 302 | ||
308 | if (pci_check_type2()) { | 303 | if (pci_check_type2()) { |
@@ -311,8 +306,8 @@ int __init pci_direct_probe(void) | |||
311 | return 2; | 306 | return 2; |
312 | } | 307 | } |
313 | 308 | ||
314 | release_resource(region2); | 309 | release_region(0xC000, 0x1000); |
315 | fail2: | 310 | fail2: |
316 | release_resource(region); | 311 | release_region(0xCF8, 4); |
317 | return 0; | 312 | return 0; |
318 | } | 313 | } |
diff --git a/arch/x86/pci/irq.c b/arch/x86/pci/irq.c index 8201165bae2..372e9b8989b 100644 --- a/arch/x86/pci/irq.c +++ b/arch/x86/pci/irq.c | |||
@@ -602,7 +602,9 @@ static __init int intel_router_probe(struct irq_router *r, struct pci_dev *route | |||
602 | || (device >= PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_MIN && | 602 | || (device >= PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_MIN && |
603 | device <= PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_MAX) | 603 | device <= PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_MAX) |
604 | || (device >= PCI_DEVICE_ID_INTEL_DH89XXCC_LPC_MIN && | 604 | || (device >= PCI_DEVICE_ID_INTEL_DH89XXCC_LPC_MIN && |
605 | device <= PCI_DEVICE_ID_INTEL_DH89XXCC_LPC_MAX)) { | 605 | device <= PCI_DEVICE_ID_INTEL_DH89XXCC_LPC_MAX) |
606 | || (device >= PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_MIN && | ||
607 | device <= PCI_DEVICE_ID_INTEL_PANTHERPOINT_LPC_MAX)) { | ||
606 | r->name = "PIIX/ICH"; | 608 | r->name = "PIIX/ICH"; |
607 | r->get = pirq_piix_get; | 609 | r->get = pirq_piix_get; |
608 | r->set = pirq_piix_set; | 610 | r->set = pirq_piix_set; |
diff --git a/arch/x86/pci/mmconfig-shared.c b/arch/x86/pci/mmconfig-shared.c index e282886616a..750c346ef50 100644 --- a/arch/x86/pci/mmconfig-shared.c +++ b/arch/x86/pci/mmconfig-shared.c | |||
@@ -606,6 +606,16 @@ static void __init __pci_mmcfg_init(int early) | |||
606 | if (list_empty(&pci_mmcfg_list)) | 606 | if (list_empty(&pci_mmcfg_list)) |
607 | return; | 607 | return; |
608 | 608 | ||
609 | if (pcibios_last_bus < 0) { | ||
610 | const struct pci_mmcfg_region *cfg; | ||
611 | |||
612 | list_for_each_entry(cfg, &pci_mmcfg_list, list) { | ||
613 | if (cfg->segment) | ||
614 | break; | ||
615 | pcibios_last_bus = cfg->end_bus; | ||
616 | } | ||
617 | } | ||
618 | |||
609 | if (pci_mmcfg_arch_init()) | 619 | if (pci_mmcfg_arch_init()) |
610 | pci_probe = (pci_probe & ~PCI_PROBE_MASK) | PCI_PROBE_MMCONF; | 620 | pci_probe = (pci_probe & ~PCI_PROBE_MASK) | PCI_PROBE_MMCONF; |
611 | else { | 621 | else { |