diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-06 14:44:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-06 14:44:36 -0400 |
commit | 1cfd2bda8c486ae0e7a8005354758ebb68172bca (patch) | |
tree | 76ce15f377d8d6eb3ae4aa8b8b0b415457e38d36 /arch/x86 | |
parent | b57bdda58cda0aaf6def042d101dd85977a286ed (diff) | |
parent | 763e9db9994e27a7d2cb3701c8a097a867d0e0b4 (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: (30 commits)
PCI: update for owner removal from struct device_attribute
PCI: Fix warnings when CONFIG_DMI unset
PCI: Do not run NVidia quirks related to MSI with MSI disabled
x86/PCI: use for_each_pci_dev()
PCI: use for_each_pci_dev()
PCI: MSI: Restore read_msi_msg_desc(); add get_cached_msi_msg_desc()
PCI: export SMBIOS provided firmware instance and label to sysfs
PCI: Allow read/write access to sysfs I/O port resources
x86/PCI: use host bridge _CRS info on ASRock ALiveSATA2-GLAN
PCI: remove unused HAVE_ARCH_PCI_SET_DMA_MAX_SEGMENT_{SIZE|BOUNDARY}
PCI: disable mmio during bar sizing
PCI: MSI: Remove unsafe and unnecessary hardware access
PCI: Default PCIe ASPM control to on and require !EMBEDDED to disable
PCI: kernel oops on access to pci proc file while hot-removal
PCI: pci-sysfs: remove casts from void*
ACPI: Disable ASPM if the platform won't provide _OSC control for PCIe
PCI hotplug: make sure child bridges are enabled at hotplug time
PCI hotplug: shpchp: Removed check for hotplug of display devices
PCI hotplug: pciehp: Fixed return value sign for pciehp_unconfigure_device
PCI: Don't enable aspm before drivers have had a chance to veto it
...
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/include/asm/pci_x86.h | 1 | ||||
-rw-r--r-- | arch/x86/kernel/apic/io_apic.c | 2 | ||||
-rw-r--r-- | arch/x86/pci/acpi.c | 9 | ||||
-rw-r--r-- | arch/x86/pci/common.c | 20 | ||||
-rw-r--r-- | arch/x86/pci/irq.c | 6 | ||||
-rw-r--r-- | arch/x86/pci/legacy.c | 2 |
6 files changed, 35 insertions, 5 deletions
diff --git a/arch/x86/include/asm/pci_x86.h b/arch/x86/include/asm/pci_x86.h index cd2a31dc5fb8..49c7219826f9 100644 --- a/arch/x86/include/asm/pci_x86.h +++ b/arch/x86/include/asm/pci_x86.h | |||
@@ -30,6 +30,7 @@ | |||
30 | #define PCI_HAS_IO_ECS 0x40000 | 30 | #define PCI_HAS_IO_ECS 0x40000 |
31 | #define PCI_NOASSIGN_ROMS 0x80000 | 31 | #define PCI_NOASSIGN_ROMS 0x80000 |
32 | #define PCI_ROOT_NO_CRS 0x100000 | 32 | #define PCI_ROOT_NO_CRS 0x100000 |
33 | #define PCI_NOASSIGN_BARS 0x200000 | ||
33 | 34 | ||
34 | extern unsigned int pci_probe; | 35 | extern unsigned int pci_probe; |
35 | extern unsigned long pirq_table_addr; | 36 | extern unsigned long pirq_table_addr; |
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c index e41ed24ab26d..4dc0084ec1b1 100644 --- a/arch/x86/kernel/apic/io_apic.c +++ b/arch/x86/kernel/apic/io_apic.c | |||
@@ -3397,7 +3397,7 @@ static int set_msi_irq_affinity(unsigned int irq, const struct cpumask *mask) | |||
3397 | 3397 | ||
3398 | cfg = desc->chip_data; | 3398 | cfg = desc->chip_data; |
3399 | 3399 | ||
3400 | read_msi_msg_desc(desc, &msg); | 3400 | get_cached_msi_msg_desc(desc, &msg); |
3401 | 3401 | ||
3402 | msg.data &= ~MSI_DATA_VECTOR_MASK; | 3402 | msg.data &= ~MSI_DATA_VECTOR_MASK; |
3403 | msg.data |= MSI_DATA_VECTOR(cfg->vector); | 3403 | msg.data |= MSI_DATA_VECTOR(cfg->vector); |
diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c index 2ec04c424a62..15466c096ba5 100644 --- a/arch/x86/pci/acpi.c +++ b/arch/x86/pci/acpi.c | |||
@@ -34,6 +34,15 @@ static const struct dmi_system_id pci_use_crs_table[] __initconst = { | |||
34 | DMI_MATCH(DMI_PRODUCT_NAME, "x3800"), | 34 | DMI_MATCH(DMI_PRODUCT_NAME, "x3800"), |
35 | }, | 35 | }, |
36 | }, | 36 | }, |
37 | /* https://bugzilla.kernel.org/show_bug.cgi?id=16007 */ | ||
38 | /* 2006 AMD HT/VIA system with two host bridges */ | ||
39 | { | ||
40 | .callback = set_use_crs, | ||
41 | .ident = "ASRock ALiveSATA2-GLAN", | ||
42 | .matches = { | ||
43 | DMI_MATCH(DMI_PRODUCT_NAME, "ALiveSATA2-GLAN"), | ||
44 | }, | ||
45 | }, | ||
37 | {} | 46 | {} |
38 | }; | 47 | }; |
39 | 48 | ||
diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c index 215a27ae050d..a0772af64efb 100644 --- a/arch/x86/pci/common.c +++ b/arch/x86/pci/common.c | |||
@@ -125,6 +125,23 @@ void __init dmi_check_skip_isa_align(void) | |||
125 | static void __devinit pcibios_fixup_device_resources(struct pci_dev *dev) | 125 | static void __devinit pcibios_fixup_device_resources(struct pci_dev *dev) |
126 | { | 126 | { |
127 | struct resource *rom_r = &dev->resource[PCI_ROM_RESOURCE]; | 127 | struct resource *rom_r = &dev->resource[PCI_ROM_RESOURCE]; |
128 | struct resource *bar_r; | ||
129 | int bar; | ||
130 | |||
131 | if (pci_probe & PCI_NOASSIGN_BARS) { | ||
132 | /* | ||
133 | * If the BIOS did not assign the BAR, zero out the | ||
134 | * resource so the kernel doesn't attmept to assign | ||
135 | * it later on in pci_assign_unassigned_resources | ||
136 | */ | ||
137 | for (bar = 0; bar <= PCI_STD_RESOURCE_END; bar++) { | ||
138 | bar_r = &dev->resource[bar]; | ||
139 | if (bar_r->start == 0 && bar_r->end != 0) { | ||
140 | bar_r->flags = 0; | ||
141 | bar_r->end = 0; | ||
142 | } | ||
143 | } | ||
144 | } | ||
128 | 145 | ||
129 | if (pci_probe & PCI_NOASSIGN_ROMS) { | 146 | if (pci_probe & PCI_NOASSIGN_ROMS) { |
130 | if (rom_r->parent) | 147 | if (rom_r->parent) |
@@ -509,6 +526,9 @@ char * __devinit pcibios_setup(char *str) | |||
509 | } else if (!strcmp(str, "norom")) { | 526 | } else if (!strcmp(str, "norom")) { |
510 | pci_probe |= PCI_NOASSIGN_ROMS; | 527 | pci_probe |= PCI_NOASSIGN_ROMS; |
511 | return NULL; | 528 | return NULL; |
529 | } else if (!strcmp(str, "nobar")) { | ||
530 | pci_probe |= PCI_NOASSIGN_BARS; | ||
531 | return NULL; | ||
512 | } else if (!strcmp(str, "assign-busses")) { | 532 | } else if (!strcmp(str, "assign-busses")) { |
513 | pci_probe |= PCI_ASSIGN_ALL_BUSSES; | 533 | pci_probe |= PCI_ASSIGN_ALL_BUSSES; |
514 | return NULL; | 534 | return NULL; |
diff --git a/arch/x86/pci/irq.c b/arch/x86/pci/irq.c index 9810a0f76c91..f547ee05f715 100644 --- a/arch/x86/pci/irq.c +++ b/arch/x86/pci/irq.c | |||
@@ -989,7 +989,7 @@ static int pcibios_lookup_irq(struct pci_dev *dev, int assign) | |||
989 | dev_info(&dev->dev, "%s PCI INT %c -> IRQ %d\n", msg, 'A' + pin - 1, irq); | 989 | dev_info(&dev->dev, "%s PCI INT %c -> IRQ %d\n", msg, 'A' + pin - 1, irq); |
990 | 990 | ||
991 | /* Update IRQ for all devices with the same pirq value */ | 991 | /* Update IRQ for all devices with the same pirq value */ |
992 | while ((dev2 = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev2)) != NULL) { | 992 | for_each_pci_dev(dev2) { |
993 | pci_read_config_byte(dev2, PCI_INTERRUPT_PIN, &pin); | 993 | pci_read_config_byte(dev2, PCI_INTERRUPT_PIN, &pin); |
994 | if (!pin) | 994 | if (!pin) |
995 | continue; | 995 | continue; |
@@ -1028,7 +1028,7 @@ void __init pcibios_fixup_irqs(void) | |||
1028 | u8 pin; | 1028 | u8 pin; |
1029 | 1029 | ||
1030 | DBG(KERN_DEBUG "PCI: IRQ fixup\n"); | 1030 | DBG(KERN_DEBUG "PCI: IRQ fixup\n"); |
1031 | while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) { | 1031 | for_each_pci_dev(dev) { |
1032 | /* | 1032 | /* |
1033 | * If the BIOS has set an out of range IRQ number, just | 1033 | * If the BIOS has set an out of range IRQ number, just |
1034 | * ignore it. Also keep track of which IRQ's are | 1034 | * ignore it. Also keep track of which IRQ's are |
@@ -1052,7 +1052,7 @@ void __init pcibios_fixup_irqs(void) | |||
1052 | return; | 1052 | return; |
1053 | 1053 | ||
1054 | dev = NULL; | 1054 | dev = NULL; |
1055 | while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) { | 1055 | for_each_pci_dev(dev) { |
1056 | pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &pin); | 1056 | pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &pin); |
1057 | if (!pin) | 1057 | if (!pin) |
1058 | continue; | 1058 | continue; |
diff --git a/arch/x86/pci/legacy.c b/arch/x86/pci/legacy.c index 8d460eaf524f..c89266be6048 100644 --- a/arch/x86/pci/legacy.c +++ b/arch/x86/pci/legacy.c | |||
@@ -36,7 +36,7 @@ int __init pci_legacy_init(void) | |||
36 | return 0; | 36 | return 0; |
37 | } | 37 | } |
38 | 38 | ||
39 | void pcibios_scan_specific_bus(int busn) | 39 | void __devinit pcibios_scan_specific_bus(int busn) |
40 | { | 40 | { |
41 | int devfn; | 41 | int devfn; |
42 | long node; | 42 | long node; |