diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-21 21:58:52 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-21 21:58:52 -0400 |
commit | 6109e2ce2600e2db26cd0424bb9c6ed019723288 (patch) | |
tree | 54b5d347bf12e0a987edfb52f287399f748a9a38 /arch/x86 | |
parent | 0961d6581c870850342ad6ea25263763433d666f (diff) | |
parent | ac81860ea073daed50246af54db706c6e491f240 (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: (36 commits)
PCI: hotplug: pciehp: Removed check for hotplug of display devices
PCI: read memory ranges out of Broadcom CNB20LE host bridge
PCI: Allow manual resource allocation for PCI hotplug bridges
x86/PCI: make ACPI MCFG reserved error messages ACPI specific
PCI hotplug: Use kmemdup
PM/PCI: Update PCI power management documentation
PCI: output FW warning in pci_read/write_vpd
PCI: fix typos pci_device_dis/enable to pci_dis/enable_device in comments
PCI quirks: disable msi on AMD rs4xx internal gfx bridges
PCI: Disable MSI for MCP55 on P5N32-E SLI
x86/PCI: irq and pci_ids patch for additional Intel Cougar Point DeviceIDs
PCI: aerdrv: trivial cleanup for aerdrv_core.c
PCI: aerdrv: trivial cleanup for aerdrv.c
PCI: aerdrv: introduce default_downstream_reset_link
PCI: aerdrv: rework find_aer_service
PCI: aerdrv: remove is_downstream
PCI: aerdrv: remove magical ROOT_ERR_STATUS_MASKS
PCI: aerdrv: redefine PCI_ERR_ROOT_*_SRC
PCI: aerdrv: rework do_recovery
PCI: aerdrv: rework get_e_source()
...
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/Kconfig | 8 | ||||
-rw-r--r-- | arch/x86/include/asm/pci_x86.h | 2 | ||||
-rw-r--r-- | arch/x86/pci/Makefile | 2 | ||||
-rw-r--r-- | arch/x86/pci/broadcom_bus.c | 101 | ||||
-rw-r--r-- | arch/x86/pci/common.c | 2 | ||||
-rw-r--r-- | arch/x86/pci/direct.c | 16 | ||||
-rw-r--r-- | arch/x86/pci/irq.c | 9 | ||||
-rw-r--r-- | arch/x86/pci/mmconfig-shared.c | 17 | ||||
-rw-r--r-- | arch/x86/pci/mmconfig_32.c | 8 | ||||
-rw-r--r-- | arch/x86/pci/numaq_32.c | 8 | ||||
-rw-r--r-- | arch/x86/pci/pcbios.c | 8 |
11 files changed, 149 insertions, 32 deletions
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index a2d3a5fbeeda..e0c619c55b4e 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -1923,6 +1923,14 @@ config PCI_MMCONFIG | |||
1923 | bool "Support mmconfig PCI config space access" | 1923 | bool "Support mmconfig PCI config space access" |
1924 | depends on X86_64 && PCI && ACPI | 1924 | depends on X86_64 && PCI && ACPI |
1925 | 1925 | ||
1926 | config PCI_CNB20LE_QUIRK | ||
1927 | bool "Read CNB20LE Host Bridge Windows" | ||
1928 | depends on PCI | ||
1929 | help | ||
1930 | Read the PCI windows out of the CNB20LE host bridge. This allows | ||
1931 | PCI hotplug to work on systems with the CNB20LE chipset which do | ||
1932 | not have ACPI. | ||
1933 | |||
1926 | config DMAR | 1934 | config DMAR |
1927 | bool "Support for DMA Remapping Devices (EXPERIMENTAL)" | 1935 | bool "Support for DMA Remapping Devices (EXPERIMENTAL)" |
1928 | depends on PCI_MSI && ACPI && EXPERIMENTAL | 1936 | depends on PCI_MSI && ACPI && EXPERIMENTAL |
diff --git a/arch/x86/include/asm/pci_x86.h b/arch/x86/include/asm/pci_x86.h index 1a0422348d6d..8d8797eae5d7 100644 --- a/arch/x86/include/asm/pci_x86.h +++ b/arch/x86/include/asm/pci_x86.h | |||
@@ -83,7 +83,7 @@ struct irq_routing_table { | |||
83 | 83 | ||
84 | extern unsigned int pcibios_irq_mask; | 84 | extern unsigned int pcibios_irq_mask; |
85 | 85 | ||
86 | extern spinlock_t pci_config_lock; | 86 | extern raw_spinlock_t pci_config_lock; |
87 | 87 | ||
88 | extern int (*pcibios_enable_irq)(struct pci_dev *dev); | 88 | extern int (*pcibios_enable_irq)(struct pci_dev *dev); |
89 | extern void (*pcibios_disable_irq)(struct pci_dev *dev); | 89 | extern void (*pcibios_disable_irq)(struct pci_dev *dev); |
diff --git a/arch/x86/pci/Makefile b/arch/x86/pci/Makefile index b110d97fb925..a0207a7fdf39 100644 --- a/arch/x86/pci/Makefile +++ b/arch/x86/pci/Makefile | |||
@@ -18,6 +18,8 @@ obj-$(CONFIG_X86_MRST) += mrst.o | |||
18 | obj-y += common.o early.o | 18 | obj-y += common.o early.o |
19 | obj-y += amd_bus.o bus_numa.o | 19 | obj-y += amd_bus.o bus_numa.o |
20 | 20 | ||
21 | obj-$(CONFIG_PCI_CNB20LE_QUIRK) += broadcom_bus.o | ||
22 | |||
21 | ifeq ($(CONFIG_PCI_DEBUG),y) | 23 | ifeq ($(CONFIG_PCI_DEBUG),y) |
22 | EXTRA_CFLAGS += -DDEBUG | 24 | EXTRA_CFLAGS += -DDEBUG |
23 | endif | 25 | endif |
diff --git a/arch/x86/pci/broadcom_bus.c b/arch/x86/pci/broadcom_bus.c new file mode 100644 index 000000000000..0846a5bbbfbd --- /dev/null +++ b/arch/x86/pci/broadcom_bus.c | |||
@@ -0,0 +1,101 @@ | |||
1 | /* | ||
2 | * Read address ranges from a Broadcom CNB20LE Host Bridge | ||
3 | * | ||
4 | * Copyright (c) 2010 Ira W. Snyder <iws@ovro.caltech.edu> | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify it | ||
7 | * under the terms of the GNU General Public License as published by the | ||
8 | * Free Software Foundation; either version 2 of the License, or (at your | ||
9 | * option) any later version. | ||
10 | */ | ||
11 | |||
12 | #include <linux/delay.h> | ||
13 | #include <linux/dmi.h> | ||
14 | #include <linux/pci.h> | ||
15 | #include <linux/init.h> | ||
16 | #include <asm/pci_x86.h> | ||
17 | |||
18 | #include "bus_numa.h" | ||
19 | |||
20 | static void __devinit cnb20le_res(struct pci_dev *dev) | ||
21 | { | ||
22 | struct pci_root_info *info; | ||
23 | struct resource res; | ||
24 | u16 word1, word2; | ||
25 | u8 fbus, lbus; | ||
26 | int i; | ||
27 | |||
28 | /* | ||
29 | * The x86_pci_root_bus_res_quirks() function already refuses to use | ||
30 | * this information if ACPI _CRS was used. Therefore, we don't bother | ||
31 | * checking if ACPI is enabled, and just generate the information | ||
32 | * for both the ACPI _CRS and no ACPI cases. | ||
33 | */ | ||
34 | |||
35 | info = &pci_root_info[pci_root_num]; | ||
36 | pci_root_num++; | ||
37 | |||
38 | /* read the PCI bus numbers */ | ||
39 | pci_read_config_byte(dev, 0x44, &fbus); | ||
40 | pci_read_config_byte(dev, 0x45, &lbus); | ||
41 | info->bus_min = fbus; | ||
42 | info->bus_max = lbus; | ||
43 | |||
44 | /* | ||
45 | * Add the legacy IDE ports on bus 0 | ||
46 | * | ||
47 | * These do not exist anywhere in the bridge registers, AFAICT. I do | ||
48 | * not have the datasheet, so this is the best I can do. | ||
49 | */ | ||
50 | if (fbus == 0) { | ||
51 | update_res(info, 0x01f0, 0x01f7, IORESOURCE_IO, 0); | ||
52 | update_res(info, 0x03f6, 0x03f6, IORESOURCE_IO, 0); | ||
53 | update_res(info, 0x0170, 0x0177, IORESOURCE_IO, 0); | ||
54 | update_res(info, 0x0376, 0x0376, IORESOURCE_IO, 0); | ||
55 | update_res(info, 0xffa0, 0xffaf, IORESOURCE_IO, 0); | ||
56 | } | ||
57 | |||
58 | /* read the non-prefetchable memory window */ | ||
59 | pci_read_config_word(dev, 0xc0, &word1); | ||
60 | pci_read_config_word(dev, 0xc2, &word2); | ||
61 | if (word1 != word2) { | ||
62 | res.start = (word1 << 16) | 0x0000; | ||
63 | res.end = (word2 << 16) | 0xffff; | ||
64 | res.flags = IORESOURCE_MEM; | ||
65 | update_res(info, res.start, res.end, res.flags, 0); | ||
66 | } | ||
67 | |||
68 | /* read the prefetchable memory window */ | ||
69 | pci_read_config_word(dev, 0xc4, &word1); | ||
70 | pci_read_config_word(dev, 0xc6, &word2); | ||
71 | if (word1 != word2) { | ||
72 | res.start = (word1 << 16) | 0x0000; | ||
73 | res.end = (word2 << 16) | 0xffff; | ||
74 | res.flags = IORESOURCE_MEM | IORESOURCE_PREFETCH; | ||
75 | update_res(info, res.start, res.end, res.flags, 0); | ||
76 | } | ||
77 | |||
78 | /* read the IO port window */ | ||
79 | pci_read_config_word(dev, 0xd0, &word1); | ||
80 | pci_read_config_word(dev, 0xd2, &word2); | ||
81 | if (word1 != word2) { | ||
82 | res.start = word1; | ||
83 | res.end = word2; | ||
84 | res.flags = IORESOURCE_IO; | ||
85 | update_res(info, res.start, res.end, res.flags, 0); | ||
86 | } | ||
87 | |||
88 | /* print information about this host bridge */ | ||
89 | res.start = fbus; | ||
90 | res.end = lbus; | ||
91 | res.flags = IORESOURCE_BUS; | ||
92 | dev_info(&dev->dev, "CNB20LE PCI Host Bridge (domain %04x %pR)\n", | ||
93 | pci_domain_nr(dev->bus), &res); | ||
94 | |||
95 | for (i = 0; i < info->res_num; i++) | ||
96 | dev_info(&dev->dev, "host bridge window %pR\n", &info->res[i]); | ||
97 | } | ||
98 | |||
99 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_LE, | ||
100 | cnb20le_res); | ||
101 | |||
diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c index cf2e93869c48..215a27ae050d 100644 --- a/arch/x86/pci/common.c +++ b/arch/x86/pci/common.c | |||
@@ -76,7 +76,7 @@ struct pci_ops pci_root_ops = { | |||
76 | * This interrupt-safe spinlock protects all accesses to PCI | 76 | * This interrupt-safe spinlock protects all accesses to PCI |
77 | * configuration space. | 77 | * configuration space. |
78 | */ | 78 | */ |
79 | DEFINE_SPINLOCK(pci_config_lock); | 79 | DEFINE_RAW_SPINLOCK(pci_config_lock); |
80 | 80 | ||
81 | static int __devinit can_skip_ioresource_align(const struct dmi_system_id *d) | 81 | static int __devinit can_skip_ioresource_align(const struct dmi_system_id *d) |
82 | { | 82 | { |
diff --git a/arch/x86/pci/direct.c b/arch/x86/pci/direct.c index 347d882b3bb3..bd33620b0071 100644 --- a/arch/x86/pci/direct.c +++ b/arch/x86/pci/direct.c | |||
@@ -27,7 +27,7 @@ static int pci_conf1_read(unsigned int seg, unsigned int bus, | |||
27 | return -EINVAL; | 27 | return -EINVAL; |
28 | } | 28 | } |
29 | 29 | ||
30 | spin_lock_irqsave(&pci_config_lock, flags); | 30 | raw_spin_lock_irqsave(&pci_config_lock, flags); |
31 | 31 | ||
32 | outl(PCI_CONF1_ADDRESS(bus, devfn, reg), 0xCF8); | 32 | outl(PCI_CONF1_ADDRESS(bus, devfn, reg), 0xCF8); |
33 | 33 | ||
@@ -43,7 +43,7 @@ static int pci_conf1_read(unsigned int seg, unsigned int bus, | |||
43 | break; | 43 | break; |
44 | } | 44 | } |
45 | 45 | ||
46 | spin_unlock_irqrestore(&pci_config_lock, flags); | 46 | raw_spin_unlock_irqrestore(&pci_config_lock, flags); |
47 | 47 | ||
48 | return 0; | 48 | return 0; |
49 | } | 49 | } |
@@ -56,7 +56,7 @@ static int pci_conf1_write(unsigned int seg, unsigned int bus, | |||
56 | if ((bus > 255) || (devfn > 255) || (reg > 4095)) | 56 | if ((bus > 255) || (devfn > 255) || (reg > 4095)) |
57 | return -EINVAL; | 57 | return -EINVAL; |
58 | 58 | ||
59 | spin_lock_irqsave(&pci_config_lock, flags); | 59 | raw_spin_lock_irqsave(&pci_config_lock, flags); |
60 | 60 | ||
61 | outl(PCI_CONF1_ADDRESS(bus, devfn, reg), 0xCF8); | 61 | outl(PCI_CONF1_ADDRESS(bus, devfn, reg), 0xCF8); |
62 | 62 | ||
@@ -72,7 +72,7 @@ static int pci_conf1_write(unsigned int seg, unsigned int bus, | |||
72 | break; | 72 | break; |
73 | } | 73 | } |
74 | 74 | ||
75 | spin_unlock_irqrestore(&pci_config_lock, flags); | 75 | raw_spin_unlock_irqrestore(&pci_config_lock, flags); |
76 | 76 | ||
77 | return 0; | 77 | return 0; |
78 | } | 78 | } |
@@ -108,7 +108,7 @@ static int pci_conf2_read(unsigned int seg, unsigned int bus, | |||
108 | if (dev & 0x10) | 108 | if (dev & 0x10) |
109 | return PCIBIOS_DEVICE_NOT_FOUND; | 109 | return PCIBIOS_DEVICE_NOT_FOUND; |
110 | 110 | ||
111 | spin_lock_irqsave(&pci_config_lock, flags); | 111 | raw_spin_lock_irqsave(&pci_config_lock, flags); |
112 | 112 | ||
113 | outb((u8)(0xF0 | (fn << 1)), 0xCF8); | 113 | outb((u8)(0xF0 | (fn << 1)), 0xCF8); |
114 | outb((u8)bus, 0xCFA); | 114 | outb((u8)bus, 0xCFA); |
@@ -127,7 +127,7 @@ static int pci_conf2_read(unsigned int seg, unsigned int bus, | |||
127 | 127 | ||
128 | outb(0, 0xCF8); | 128 | outb(0, 0xCF8); |
129 | 129 | ||
130 | spin_unlock_irqrestore(&pci_config_lock, flags); | 130 | raw_spin_unlock_irqrestore(&pci_config_lock, flags); |
131 | 131 | ||
132 | return 0; | 132 | return 0; |
133 | } | 133 | } |
@@ -147,7 +147,7 @@ static int pci_conf2_write(unsigned int seg, unsigned int bus, | |||
147 | if (dev & 0x10) | 147 | if (dev & 0x10) |
148 | return PCIBIOS_DEVICE_NOT_FOUND; | 148 | return PCIBIOS_DEVICE_NOT_FOUND; |
149 | 149 | ||
150 | spin_lock_irqsave(&pci_config_lock, flags); | 150 | raw_spin_lock_irqsave(&pci_config_lock, flags); |
151 | 151 | ||
152 | outb((u8)(0xF0 | (fn << 1)), 0xCF8); | 152 | outb((u8)(0xF0 | (fn << 1)), 0xCF8); |
153 | outb((u8)bus, 0xCFA); | 153 | outb((u8)bus, 0xCFA); |
@@ -166,7 +166,7 @@ static int pci_conf2_write(unsigned int seg, unsigned int bus, | |||
166 | 166 | ||
167 | outb(0, 0xCF8); | 167 | outb(0, 0xCF8); |
168 | 168 | ||
169 | spin_unlock_irqrestore(&pci_config_lock, flags); | 169 | raw_spin_unlock_irqrestore(&pci_config_lock, flags); |
170 | 170 | ||
171 | return 0; | 171 | return 0; |
172 | } | 172 | } |
diff --git a/arch/x86/pci/irq.c b/arch/x86/pci/irq.c index 5d362b5ba06f..9810a0f76c91 100644 --- a/arch/x86/pci/irq.c +++ b/arch/x86/pci/irq.c | |||
@@ -589,8 +589,6 @@ static __init int intel_router_probe(struct irq_router *r, struct pci_dev *route | |||
589 | case PCI_DEVICE_ID_INTEL_ICH10_1: | 589 | case PCI_DEVICE_ID_INTEL_ICH10_1: |
590 | case PCI_DEVICE_ID_INTEL_ICH10_2: | 590 | case PCI_DEVICE_ID_INTEL_ICH10_2: |
591 | case PCI_DEVICE_ID_INTEL_ICH10_3: | 591 | case PCI_DEVICE_ID_INTEL_ICH10_3: |
592 | case PCI_DEVICE_ID_INTEL_CPT_LPC1: | ||
593 | case PCI_DEVICE_ID_INTEL_CPT_LPC2: | ||
594 | r->name = "PIIX/ICH"; | 592 | r->name = "PIIX/ICH"; |
595 | r->get = pirq_piix_get; | 593 | r->get = pirq_piix_get; |
596 | r->set = pirq_piix_set; | 594 | r->set = pirq_piix_set; |
@@ -605,6 +603,13 @@ static __init int intel_router_probe(struct irq_router *r, struct pci_dev *route | |||
605 | return 1; | 603 | return 1; |
606 | } | 604 | } |
607 | 605 | ||
606 | if ((device >= PCI_DEVICE_ID_INTEL_CPT_LPC_MIN) && | ||
607 | (device <= PCI_DEVICE_ID_INTEL_CPT_LPC_MAX)) { | ||
608 | r->name = "PIIX/ICH"; | ||
609 | r->get = pirq_piix_get; | ||
610 | r->set = pirq_piix_set; | ||
611 | return 1; | ||
612 | } | ||
608 | return 0; | 613 | return 0; |
609 | } | 614 | } |
610 | 615 | ||
diff --git a/arch/x86/pci/mmconfig-shared.c b/arch/x86/pci/mmconfig-shared.c index 39b9ebe8f886..a918553ebc75 100644 --- a/arch/x86/pci/mmconfig-shared.c +++ b/arch/x86/pci/mmconfig-shared.c | |||
@@ -483,16 +483,17 @@ static void __init pci_mmcfg_reject_broken(int early) | |||
483 | list_for_each_entry(cfg, &pci_mmcfg_list, list) { | 483 | list_for_each_entry(cfg, &pci_mmcfg_list, list) { |
484 | int valid = 0; | 484 | int valid = 0; |
485 | 485 | ||
486 | if (!early && !acpi_disabled) | 486 | if (!early && !acpi_disabled) { |
487 | valid = is_mmconf_reserved(is_acpi_reserved, cfg, 0); | 487 | valid = is_mmconf_reserved(is_acpi_reserved, cfg, 0); |
488 | 488 | ||
489 | if (valid) | 489 | if (valid) |
490 | continue; | 490 | continue; |
491 | 491 | else | |
492 | if (!early) | 492 | printk(KERN_ERR FW_BUG PREFIX |
493 | printk(KERN_ERR FW_BUG PREFIX | 493 | "MMCONFIG at %pR not reserved in " |
494 | "MMCONFIG at %pR not reserved in " | 494 | "ACPI motherboard resources\n", |
495 | "ACPI motherboard resources\n", &cfg->res); | 495 | &cfg->res); |
496 | } | ||
496 | 497 | ||
497 | /* Don't try to do this check unless configuration | 498 | /* Don't try to do this check unless configuration |
498 | type 1 is available. how about type 2 ?*/ | 499 | type 1 is available. how about type 2 ?*/ |
diff --git a/arch/x86/pci/mmconfig_32.c b/arch/x86/pci/mmconfig_32.c index 90d5fd476ed4..a3d9c54792ae 100644 --- a/arch/x86/pci/mmconfig_32.c +++ b/arch/x86/pci/mmconfig_32.c | |||
@@ -64,7 +64,7 @@ err: *value = -1; | |||
64 | if (!base) | 64 | if (!base) |
65 | goto err; | 65 | goto err; |
66 | 66 | ||
67 | spin_lock_irqsave(&pci_config_lock, flags); | 67 | raw_spin_lock_irqsave(&pci_config_lock, flags); |
68 | 68 | ||
69 | pci_exp_set_dev_base(base, bus, devfn); | 69 | pci_exp_set_dev_base(base, bus, devfn); |
70 | 70 | ||
@@ -79,7 +79,7 @@ err: *value = -1; | |||
79 | *value = mmio_config_readl(mmcfg_virt_addr + reg); | 79 | *value = mmio_config_readl(mmcfg_virt_addr + reg); |
80 | break; | 80 | break; |
81 | } | 81 | } |
82 | spin_unlock_irqrestore(&pci_config_lock, flags); | 82 | raw_spin_unlock_irqrestore(&pci_config_lock, flags); |
83 | 83 | ||
84 | return 0; | 84 | return 0; |
85 | } | 85 | } |
@@ -97,7 +97,7 @@ static int pci_mmcfg_write(unsigned int seg, unsigned int bus, | |||
97 | if (!base) | 97 | if (!base) |
98 | return -EINVAL; | 98 | return -EINVAL; |
99 | 99 | ||
100 | spin_lock_irqsave(&pci_config_lock, flags); | 100 | raw_spin_lock_irqsave(&pci_config_lock, flags); |
101 | 101 | ||
102 | pci_exp_set_dev_base(base, bus, devfn); | 102 | pci_exp_set_dev_base(base, bus, devfn); |
103 | 103 | ||
@@ -112,7 +112,7 @@ static int pci_mmcfg_write(unsigned int seg, unsigned int bus, | |||
112 | mmio_config_writel(mmcfg_virt_addr + reg, value); | 112 | mmio_config_writel(mmcfg_virt_addr + reg, value); |
113 | break; | 113 | break; |
114 | } | 114 | } |
115 | spin_unlock_irqrestore(&pci_config_lock, flags); | 115 | raw_spin_unlock_irqrestore(&pci_config_lock, flags); |
116 | 116 | ||
117 | return 0; | 117 | return 0; |
118 | } | 118 | } |
diff --git a/arch/x86/pci/numaq_32.c b/arch/x86/pci/numaq_32.c index 8223738ad806..5c9e2458df4e 100644 --- a/arch/x86/pci/numaq_32.c +++ b/arch/x86/pci/numaq_32.c | |||
@@ -37,7 +37,7 @@ static int pci_conf1_mq_read(unsigned int seg, unsigned int bus, | |||
37 | if (!value || (bus >= MAX_MP_BUSSES) || (devfn > 255) || (reg > 255)) | 37 | if (!value || (bus >= MAX_MP_BUSSES) || (devfn > 255) || (reg > 255)) |
38 | return -EINVAL; | 38 | return -EINVAL; |
39 | 39 | ||
40 | spin_lock_irqsave(&pci_config_lock, flags); | 40 | raw_spin_lock_irqsave(&pci_config_lock, flags); |
41 | 41 | ||
42 | write_cf8(bus, devfn, reg); | 42 | write_cf8(bus, devfn, reg); |
43 | 43 | ||
@@ -62,7 +62,7 @@ static int pci_conf1_mq_read(unsigned int seg, unsigned int bus, | |||
62 | break; | 62 | break; |
63 | } | 63 | } |
64 | 64 | ||
65 | spin_unlock_irqrestore(&pci_config_lock, flags); | 65 | raw_spin_unlock_irqrestore(&pci_config_lock, flags); |
66 | 66 | ||
67 | return 0; | 67 | return 0; |
68 | } | 68 | } |
@@ -76,7 +76,7 @@ static int pci_conf1_mq_write(unsigned int seg, unsigned int bus, | |||
76 | if ((bus >= MAX_MP_BUSSES) || (devfn > 255) || (reg > 255)) | 76 | if ((bus >= MAX_MP_BUSSES) || (devfn > 255) || (reg > 255)) |
77 | return -EINVAL; | 77 | return -EINVAL; |
78 | 78 | ||
79 | spin_lock_irqsave(&pci_config_lock, flags); | 79 | raw_spin_lock_irqsave(&pci_config_lock, flags); |
80 | 80 | ||
81 | write_cf8(bus, devfn, reg); | 81 | write_cf8(bus, devfn, reg); |
82 | 82 | ||
@@ -101,7 +101,7 @@ static int pci_conf1_mq_write(unsigned int seg, unsigned int bus, | |||
101 | break; | 101 | break; |
102 | } | 102 | } |
103 | 103 | ||
104 | spin_unlock_irqrestore(&pci_config_lock, flags); | 104 | raw_spin_unlock_irqrestore(&pci_config_lock, flags); |
105 | 105 | ||
106 | return 0; | 106 | return 0; |
107 | } | 107 | } |
diff --git a/arch/x86/pci/pcbios.c b/arch/x86/pci/pcbios.c index 59a225c17b84..2492d165096a 100644 --- a/arch/x86/pci/pcbios.c +++ b/arch/x86/pci/pcbios.c | |||
@@ -162,7 +162,7 @@ static int pci_bios_read(unsigned int seg, unsigned int bus, | |||
162 | if (!value || (bus > 255) || (devfn > 255) || (reg > 255)) | 162 | if (!value || (bus > 255) || (devfn > 255) || (reg > 255)) |
163 | return -EINVAL; | 163 | return -EINVAL; |
164 | 164 | ||
165 | spin_lock_irqsave(&pci_config_lock, flags); | 165 | raw_spin_lock_irqsave(&pci_config_lock, flags); |
166 | 166 | ||
167 | switch (len) { | 167 | switch (len) { |
168 | case 1: | 168 | case 1: |
@@ -213,7 +213,7 @@ static int pci_bios_read(unsigned int seg, unsigned int bus, | |||
213 | break; | 213 | break; |
214 | } | 214 | } |
215 | 215 | ||
216 | spin_unlock_irqrestore(&pci_config_lock, flags); | 216 | raw_spin_unlock_irqrestore(&pci_config_lock, flags); |
217 | 217 | ||
218 | return (int)((result & 0xff00) >> 8); | 218 | return (int)((result & 0xff00) >> 8); |
219 | } | 219 | } |
@@ -228,7 +228,7 @@ static int pci_bios_write(unsigned int seg, unsigned int bus, | |||
228 | if ((bus > 255) || (devfn > 255) || (reg > 255)) | 228 | if ((bus > 255) || (devfn > 255) || (reg > 255)) |
229 | return -EINVAL; | 229 | return -EINVAL; |
230 | 230 | ||
231 | spin_lock_irqsave(&pci_config_lock, flags); | 231 | raw_spin_lock_irqsave(&pci_config_lock, flags); |
232 | 232 | ||
233 | switch (len) { | 233 | switch (len) { |
234 | case 1: | 234 | case 1: |
@@ -269,7 +269,7 @@ static int pci_bios_write(unsigned int seg, unsigned int bus, | |||
269 | break; | 269 | break; |
270 | } | 270 | } |
271 | 271 | ||
272 | spin_unlock_irqrestore(&pci_config_lock, flags); | 272 | raw_spin_unlock_irqrestore(&pci_config_lock, flags); |
273 | 273 | ||
274 | return (int)((result & 0xff00) >> 8); | 274 | return (int)((result & 0xff00) >> 8); |
275 | } | 275 | } |