diff options
author | Bjorn Helgaas <bhelgaas@google.com> | 2013-08-01 13:03:52 -0400 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2013-08-01 13:03:52 -0400 |
commit | cbe2bb4f2bc14876ab9e1729933a7453ded250d1 (patch) | |
tree | 4662c8812671996e0f39f8ac1b6e21e700a630d7 | |
parent | 28fa60a83034fbbb74dcf4bb6025b5b28bd21ea8 (diff) | |
parent | ce1be10bf6dc8406ae773f0ac6265585a4154d37 (diff) |
Merge branch 'pci/misc' into next
* pci/misc:
PCI: Fix comment typo for pci_add_cap_save_buffer()
PCI: Return -ENOSYS for SR-IOV operations on non-SR-IOV devices
PCI: Update NumVFs register when disabling SR-IOV
x86/PCI: MMCONFIG: Check earlier for MMCONFIG region at address zero
PCI: Convert class code to use dev_groups
frv/PCI: Mark pcibios_fixup_bus() as non-init
x86/pci/mrst: Cleanup checkpatch.pl warnings
PCI: Rename "PCI Express support" kconfig title
PCI: Fix comment typo in iov.c
-rw-r--r-- | arch/frv/mb93090-mb00/pci-vdk.c | 2 | ||||
-rw-r--r-- | arch/x86/pci/mmconfig-shared.c | 7 | ||||
-rw-r--r-- | arch/x86/pci/mrst.c | 41 | ||||
-rw-r--r-- | drivers/pci/iov.c | 23 | ||||
-rw-r--r-- | drivers/pci/pci-sysfs.c | 32 | ||||
-rw-r--r-- | drivers/pci/pci.c | 2 | ||||
-rw-r--r-- | drivers/pci/pci.h | 2 | ||||
-rw-r--r-- | drivers/pci/pcie/Kconfig | 2 | ||||
-rw-r--r-- | drivers/pci/probe.c | 2 |
9 files changed, 65 insertions, 48 deletions
diff --git a/arch/frv/mb93090-mb00/pci-vdk.c b/arch/frv/mb93090-mb00/pci-vdk.c index 0aa35f0eb0db..deb67843693c 100644 --- a/arch/frv/mb93090-mb00/pci-vdk.c +++ b/arch/frv/mb93090-mb00/pci-vdk.c | |||
@@ -320,7 +320,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pci_fixup_ide_bases); | |||
320 | * are examined. | 320 | * are examined. |
321 | */ | 321 | */ |
322 | 322 | ||
323 | void __init pcibios_fixup_bus(struct pci_bus *bus) | 323 | void pcibios_fixup_bus(struct pci_bus *bus) |
324 | { | 324 | { |
325 | #if 0 | 325 | #if 0 |
326 | printk("### PCIBIOS_FIXUP_BUS(%d)\n",bus->number); | 326 | printk("### PCIBIOS_FIXUP_BUS(%d)\n",bus->number); |
diff --git a/arch/x86/pci/mmconfig-shared.c b/arch/x86/pci/mmconfig-shared.c index 082e88129712..5596c7bdd327 100644 --- a/arch/x86/pci/mmconfig-shared.c +++ b/arch/x86/pci/mmconfig-shared.c | |||
@@ -700,7 +700,7 @@ int pci_mmconfig_insert(struct device *dev, u16 seg, u8 start, u8 end, | |||
700 | if (!(pci_probe & PCI_PROBE_MMCONF) || pci_mmcfg_arch_init_failed) | 700 | if (!(pci_probe & PCI_PROBE_MMCONF) || pci_mmcfg_arch_init_failed) |
701 | return -ENODEV; | 701 | return -ENODEV; |
702 | 702 | ||
703 | if (start > end) | 703 | if (start > end || !addr) |
704 | return -EINVAL; | 704 | return -EINVAL; |
705 | 705 | ||
706 | mutex_lock(&pci_mmcfg_lock); | 706 | mutex_lock(&pci_mmcfg_lock); |
@@ -716,11 +716,6 @@ int pci_mmconfig_insert(struct device *dev, u16 seg, u8 start, u8 end, | |||
716 | return -EEXIST; | 716 | return -EEXIST; |
717 | } | 717 | } |
718 | 718 | ||
719 | if (!addr) { | ||
720 | mutex_unlock(&pci_mmcfg_lock); | ||
721 | return -EINVAL; | ||
722 | } | ||
723 | |||
724 | rc = -EBUSY; | 719 | rc = -EBUSY; |
725 | cfg = pci_mmconfig_alloc(seg, start, end, addr); | 720 | cfg = pci_mmconfig_alloc(seg, start, end, addr); |
726 | if (cfg == NULL) { | 721 | if (cfg == NULL) { |
diff --git a/arch/x86/pci/mrst.c b/arch/x86/pci/mrst.c index 6eb18c42a28a..903fded50786 100644 --- a/arch/x86/pci/mrst.c +++ b/arch/x86/pci/mrst.c | |||
@@ -23,11 +23,11 @@ | |||
23 | #include <linux/ioport.h> | 23 | #include <linux/ioport.h> |
24 | #include <linux/init.h> | 24 | #include <linux/init.h> |
25 | #include <linux/dmi.h> | 25 | #include <linux/dmi.h> |
26 | #include <linux/acpi.h> | ||
27 | #include <linux/io.h> | ||
28 | #include <linux/smp.h> | ||
26 | 29 | ||
27 | #include <asm/acpi.h> | ||
28 | #include <asm/segment.h> | 30 | #include <asm/segment.h> |
29 | #include <asm/io.h> | ||
30 | #include <asm/smp.h> | ||
31 | #include <asm/pci_x86.h> | 31 | #include <asm/pci_x86.h> |
32 | #include <asm/hw_irq.h> | 32 | #include <asm/hw_irq.h> |
33 | #include <asm/io_apic.h> | 33 | #include <asm/io_apic.h> |
@@ -43,7 +43,7 @@ | |||
43 | #define PCI_FIXED_BAR_4_SIZE 0x14 | 43 | #define PCI_FIXED_BAR_4_SIZE 0x14 |
44 | #define PCI_FIXED_BAR_5_SIZE 0x1c | 44 | #define PCI_FIXED_BAR_5_SIZE 0x1c |
45 | 45 | ||
46 | static int pci_soc_mode = 0; | 46 | static int pci_soc_mode; |
47 | 47 | ||
48 | /** | 48 | /** |
49 | * fixed_bar_cap - return the offset of the fixed BAR cap if found | 49 | * fixed_bar_cap - return the offset of the fixed BAR cap if found |
@@ -141,7 +141,8 @@ static int pci_device_update_fixed(struct pci_bus *bus, unsigned int devfn, | |||
141 | */ | 141 | */ |
142 | static bool type1_access_ok(unsigned int bus, unsigned int devfn, int reg) | 142 | static bool type1_access_ok(unsigned int bus, unsigned int devfn, int reg) |
143 | { | 143 | { |
144 | /* This is a workaround for A0 LNC bug where PCI status register does | 144 | /* |
145 | * This is a workaround for A0 LNC bug where PCI status register does | ||
145 | * not have new CAP bit set. can not be written by SW either. | 146 | * not have new CAP bit set. can not be written by SW either. |
146 | * | 147 | * |
147 | * PCI header type in real LNC indicates a single function device, this | 148 | * PCI header type in real LNC indicates a single function device, this |
@@ -154,7 +155,7 @@ static bool type1_access_ok(unsigned int bus, unsigned int devfn, int reg) | |||
154 | || devfn == PCI_DEVFN(0, 0) | 155 | || devfn == PCI_DEVFN(0, 0) |
155 | || devfn == PCI_DEVFN(3, 0))) | 156 | || devfn == PCI_DEVFN(3, 0))) |
156 | return 1; | 157 | return 1; |
157 | return 0; /* langwell on others */ | 158 | return 0; /* Langwell on others */ |
158 | } | 159 | } |
159 | 160 | ||
160 | static int pci_read(struct pci_bus *bus, unsigned int devfn, int where, | 161 | static int pci_read(struct pci_bus *bus, unsigned int devfn, int where, |
@@ -172,7 +173,8 @@ static int pci_write(struct pci_bus *bus, unsigned int devfn, int where, | |||
172 | { | 173 | { |
173 | int offset; | 174 | int offset; |
174 | 175 | ||
175 | /* On MRST, there is no PCI ROM BAR, this will cause a subsequent read | 176 | /* |
177 | * On MRST, there is no PCI ROM BAR, this will cause a subsequent read | ||
176 | * to ROM BAR return 0 then being ignored. | 178 | * to ROM BAR return 0 then being ignored. |
177 | */ | 179 | */ |
178 | if (where == PCI_ROM_ADDRESS) | 180 | if (where == PCI_ROM_ADDRESS) |
@@ -210,7 +212,8 @@ static int mrst_pci_irq_enable(struct pci_dev *dev) | |||
210 | 212 | ||
211 | pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &pin); | 213 | pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &pin); |
212 | 214 | ||
213 | /* MRST only have IOAPIC, the PCI irq lines are 1:1 mapped to | 215 | /* |
216 | * MRST only have IOAPIC, the PCI irq lines are 1:1 mapped to | ||
214 | * IOAPIC RTE entries, so we just enable RTE for the device. | 217 | * IOAPIC RTE entries, so we just enable RTE for the device. |
215 | */ | 218 | */ |
216 | irq_attr.ioapic = mp_find_ioapic(dev->irq); | 219 | irq_attr.ioapic = mp_find_ioapic(dev->irq); |
@@ -235,7 +238,7 @@ struct pci_ops pci_mrst_ops = { | |||
235 | */ | 238 | */ |
236 | int __init pci_mrst_init(void) | 239 | int __init pci_mrst_init(void) |
237 | { | 240 | { |
238 | printk(KERN_INFO "Intel MID platform detected, using MID PCI ops\n"); | 241 | pr_info("Intel MID platform detected, using MID PCI ops\n"); |
239 | pci_mmcfg_late_init(); | 242 | pci_mmcfg_late_init(); |
240 | pcibios_enable_irq = mrst_pci_irq_enable; | 243 | pcibios_enable_irq = mrst_pci_irq_enable; |
241 | pci_root_ops = pci_mrst_ops; | 244 | pci_root_ops = pci_mrst_ops; |
@@ -244,17 +247,21 @@ int __init pci_mrst_init(void) | |||
244 | return 1; | 247 | return 1; |
245 | } | 248 | } |
246 | 249 | ||
247 | /* Langwell devices are not true pci devices, they are not subject to 10 ms | 250 | /* |
248 | * d3 to d0 delay required by pci spec. | 251 | * Langwell devices are not true PCI devices; they are not subject to 10 ms |
252 | * d3 to d0 delay required by PCI spec. | ||
249 | */ | 253 | */ |
250 | static void pci_d3delay_fixup(struct pci_dev *dev) | 254 | static void pci_d3delay_fixup(struct pci_dev *dev) |
251 | { | 255 | { |
252 | /* PCI fixups are effectively decided compile time. If we have a dual | 256 | /* |
253 | SoC/non-SoC kernel we don't want to mangle d3 on non SoC devices */ | 257 | * PCI fixups are effectively decided compile time. If we have a dual |
254 | if (!pci_soc_mode) | 258 | * SoC/non-SoC kernel we don't want to mangle d3 on non-SoC devices. |
255 | return; | 259 | */ |
256 | /* true pci devices in lincroft should allow type 1 access, the rest | 260 | if (!pci_soc_mode) |
257 | * are langwell fake pci devices. | 261 | return; |
262 | /* | ||
263 | * True PCI devices in Lincroft should allow type 1 access, the rest | ||
264 | * are Langwell fake PCI devices. | ||
258 | */ | 265 | */ |
259 | if (type1_access_ok(dev->bus->number, dev->devfn, PCI_DEVICE_ID)) | 266 | if (type1_access_ok(dev->bus->number, dev->devfn, PCI_DEVICE_ID)) |
260 | return; | 267 | return; |
diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c index de8ffacf9c9b..21a7182dccd4 100644 --- a/drivers/pci/iov.c +++ b/drivers/pci/iov.c | |||
@@ -286,7 +286,6 @@ static int sriov_enable(struct pci_dev *dev, int nr_virtfn) | |||
286 | (!(iov->cap & PCI_SRIOV_CAP_VFM) && (nr_virtfn > initial))) | 286 | (!(iov->cap & PCI_SRIOV_CAP_VFM) && (nr_virtfn > initial))) |
287 | return -EINVAL; | 287 | return -EINVAL; |
288 | 288 | ||
289 | pci_write_config_word(dev, iov->pos + PCI_SRIOV_NUM_VF, nr_virtfn); | ||
290 | pci_read_config_word(dev, iov->pos + PCI_SRIOV_VF_OFFSET, &offset); | 289 | pci_read_config_word(dev, iov->pos + PCI_SRIOV_VF_OFFSET, &offset); |
291 | pci_read_config_word(dev, iov->pos + PCI_SRIOV_VF_STRIDE, &stride); | 290 | pci_read_config_word(dev, iov->pos + PCI_SRIOV_VF_STRIDE, &stride); |
292 | if (!offset || (nr_virtfn > 1 && !stride)) | 291 | if (!offset || (nr_virtfn > 1 && !stride)) |
@@ -324,7 +323,7 @@ static int sriov_enable(struct pci_dev *dev, int nr_virtfn) | |||
324 | 323 | ||
325 | if (!pdev->is_physfn) { | 324 | if (!pdev->is_physfn) { |
326 | pci_dev_put(pdev); | 325 | pci_dev_put(pdev); |
327 | return -ENODEV; | 326 | return -ENOSYS; |
328 | } | 327 | } |
329 | 328 | ||
330 | rc = sysfs_create_link(&dev->dev.kobj, | 329 | rc = sysfs_create_link(&dev->dev.kobj, |
@@ -334,6 +333,7 @@ static int sriov_enable(struct pci_dev *dev, int nr_virtfn) | |||
334 | return rc; | 333 | return rc; |
335 | } | 334 | } |
336 | 335 | ||
336 | pci_write_config_word(dev, iov->pos + PCI_SRIOV_NUM_VF, nr_virtfn); | ||
337 | iov->ctrl |= PCI_SRIOV_CTRL_VFE | PCI_SRIOV_CTRL_MSE; | 337 | iov->ctrl |= PCI_SRIOV_CTRL_VFE | PCI_SRIOV_CTRL_MSE; |
338 | pci_cfg_access_lock(dev); | 338 | pci_cfg_access_lock(dev); |
339 | pci_write_config_word(dev, iov->pos + PCI_SRIOV_CTRL, iov->ctrl); | 339 | pci_write_config_word(dev, iov->pos + PCI_SRIOV_CTRL, iov->ctrl); |
@@ -368,6 +368,7 @@ failed: | |||
368 | iov->ctrl &= ~(PCI_SRIOV_CTRL_VFE | PCI_SRIOV_CTRL_MSE); | 368 | iov->ctrl &= ~(PCI_SRIOV_CTRL_VFE | PCI_SRIOV_CTRL_MSE); |
369 | pci_cfg_access_lock(dev); | 369 | pci_cfg_access_lock(dev); |
370 | pci_write_config_word(dev, iov->pos + PCI_SRIOV_CTRL, iov->ctrl); | 370 | pci_write_config_word(dev, iov->pos + PCI_SRIOV_CTRL, iov->ctrl); |
371 | pci_write_config_word(dev, iov->pos + PCI_SRIOV_NUM_VF, 0); | ||
371 | ssleep(1); | 372 | ssleep(1); |
372 | pci_cfg_access_unlock(dev); | 373 | pci_cfg_access_unlock(dev); |
373 | 374 | ||
@@ -401,6 +402,7 @@ static void sriov_disable(struct pci_dev *dev) | |||
401 | sysfs_remove_link(&dev->dev.kobj, "dep_link"); | 402 | sysfs_remove_link(&dev->dev.kobj, "dep_link"); |
402 | 403 | ||
403 | iov->num_VFs = 0; | 404 | iov->num_VFs = 0; |
405 | pci_write_config_word(dev, iov->pos + PCI_SRIOV_NUM_VF, 0); | ||
404 | } | 406 | } |
405 | 407 | ||
406 | static int sriov_init(struct pci_dev *dev, int pos) | 408 | static int sriov_init(struct pci_dev *dev, int pos) |
@@ -662,7 +664,7 @@ int pci_enable_sriov(struct pci_dev *dev, int nr_virtfn) | |||
662 | might_sleep(); | 664 | might_sleep(); |
663 | 665 | ||
664 | if (!dev->is_physfn) | 666 | if (!dev->is_physfn) |
665 | return -ENODEV; | 667 | return -ENOSYS; |
666 | 668 | ||
667 | return sriov_enable(dev, nr_virtfn); | 669 | return sriov_enable(dev, nr_virtfn); |
668 | } | 670 | } |
@@ -722,7 +724,7 @@ EXPORT_SYMBOL_GPL(pci_num_vf); | |||
722 | * @dev: the PCI device | 724 | * @dev: the PCI device |
723 | * | 725 | * |
724 | * Returns number of VFs belonging to this device that are assigned to a guest. | 726 | * Returns number of VFs belonging to this device that are assigned to a guest. |
725 | * If device is not a physical function returns -ENODEV. | 727 | * If device is not a physical function returns 0. |
726 | */ | 728 | */ |
727 | int pci_vfs_assigned(struct pci_dev *dev) | 729 | int pci_vfs_assigned(struct pci_dev *dev) |
728 | { | 730 | { |
@@ -767,12 +769,15 @@ EXPORT_SYMBOL_GPL(pci_vfs_assigned); | |||
767 | * device's mutex held. | 769 | * device's mutex held. |
768 | * | 770 | * |
769 | * Returns 0 if PF is an SRIOV-capable device and | 771 | * Returns 0 if PF is an SRIOV-capable device and |
770 | * value of numvfs valid. If not a PF with VFS, return -EINVAL; | 772 | * value of numvfs valid. If not a PF return -ENOSYS; |
773 | * if numvfs is invalid return -EINVAL; | ||
771 | * if VFs already enabled, return -EBUSY. | 774 | * if VFs already enabled, return -EBUSY. |
772 | */ | 775 | */ |
773 | int pci_sriov_set_totalvfs(struct pci_dev *dev, u16 numvfs) | 776 | int pci_sriov_set_totalvfs(struct pci_dev *dev, u16 numvfs) |
774 | { | 777 | { |
775 | if (!dev->is_physfn || (numvfs > dev->sriov->total_VFs)) | 778 | if (!dev->is_physfn) |
779 | return -ENOSYS; | ||
780 | if (numvfs > dev->sriov->total_VFs) | ||
776 | return -EINVAL; | 781 | return -EINVAL; |
777 | 782 | ||
778 | /* Shouldn't change if VFs already enabled */ | 783 | /* Shouldn't change if VFs already enabled */ |
@@ -786,17 +791,17 @@ int pci_sriov_set_totalvfs(struct pci_dev *dev, u16 numvfs) | |||
786 | EXPORT_SYMBOL_GPL(pci_sriov_set_totalvfs); | 791 | EXPORT_SYMBOL_GPL(pci_sriov_set_totalvfs); |
787 | 792 | ||
788 | /** | 793 | /** |
789 | * pci_sriov_get_totalvfs -- get total VFs supported on this devic3 | 794 | * pci_sriov_get_totalvfs -- get total VFs supported on this device |
790 | * @dev: the PCI PF device | 795 | * @dev: the PCI PF device |
791 | * | 796 | * |
792 | * For a PCIe device with SRIOV support, return the PCIe | 797 | * For a PCIe device with SRIOV support, return the PCIe |
793 | * SRIOV capability value of TotalVFs or the value of driver_max_VFs | 798 | * SRIOV capability value of TotalVFs or the value of driver_max_VFs |
794 | * if the driver reduced it. Otherwise, -EINVAL. | 799 | * if the driver reduced it. Otherwise 0. |
795 | */ | 800 | */ |
796 | int pci_sriov_get_totalvfs(struct pci_dev *dev) | 801 | int pci_sriov_get_totalvfs(struct pci_dev *dev) |
797 | { | 802 | { |
798 | if (!dev->is_physfn) | 803 | if (!dev->is_physfn) |
799 | return -EINVAL; | 804 | return 0; |
800 | 805 | ||
801 | if (dev->sriov->driver_max_VFs) | 806 | if (dev->sriov->driver_max_VFs) |
802 | return dev->sriov->driver_max_VFs; | 807 | return dev->sriov->driver_max_VFs; |
diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c index c0dbe1f61362..7128cfdd64aa 100644 --- a/drivers/pci/pci-sysfs.c +++ b/drivers/pci/pci-sysfs.c | |||
@@ -131,19 +131,19 @@ static ssize_t pci_bus_show_cpuaffinity(struct device *dev, | |||
131 | return ret; | 131 | return ret; |
132 | } | 132 | } |
133 | 133 | ||
134 | static inline ssize_t pci_bus_show_cpumaskaffinity(struct device *dev, | 134 | static ssize_t cpuaffinity_show(struct device *dev, |
135 | struct device_attribute *attr, | 135 | struct device_attribute *attr, char *buf) |
136 | char *buf) | ||
137 | { | 136 | { |
138 | return pci_bus_show_cpuaffinity(dev, 0, attr, buf); | 137 | return pci_bus_show_cpuaffinity(dev, 0, attr, buf); |
139 | } | 138 | } |
139 | static DEVICE_ATTR_RO(cpuaffinity); | ||
140 | 140 | ||
141 | static inline ssize_t pci_bus_show_cpulistaffinity(struct device *dev, | 141 | static ssize_t cpulistaffinity_show(struct device *dev, |
142 | struct device_attribute *attr, | 142 | struct device_attribute *attr, char *buf) |
143 | char *buf) | ||
144 | { | 143 | { |
145 | return pci_bus_show_cpuaffinity(dev, 1, attr, buf); | 144 | return pci_bus_show_cpuaffinity(dev, 1, attr, buf); |
146 | } | 145 | } |
146 | static DEVICE_ATTR_RO(cpulistaffinity); | ||
147 | 147 | ||
148 | /* show resources */ | 148 | /* show resources */ |
149 | static ssize_t | 149 | static ssize_t |
@@ -379,6 +379,7 @@ dev_bus_rescan_store(struct device *dev, struct device_attribute *attr, | |||
379 | } | 379 | } |
380 | return count; | 380 | return count; |
381 | } | 381 | } |
382 | static DEVICE_ATTR(rescan, (S_IWUSR|S_IWGRP), NULL, dev_bus_rescan_store); | ||
382 | 383 | ||
383 | #if defined(CONFIG_PM_RUNTIME) && defined(CONFIG_ACPI) | 384 | #if defined(CONFIG_PM_RUNTIME) && defined(CONFIG_ACPI) |
384 | static ssize_t d3cold_allowed_store(struct device *dev, | 385 | static ssize_t d3cold_allowed_store(struct device *dev, |
@@ -514,11 +515,20 @@ struct device_attribute pci_dev_attrs[] = { | |||
514 | __ATTR_NULL, | 515 | __ATTR_NULL, |
515 | }; | 516 | }; |
516 | 517 | ||
517 | struct device_attribute pcibus_dev_attrs[] = { | 518 | static struct attribute *pcibus_attrs[] = { |
518 | __ATTR(rescan, (S_IWUSR|S_IWGRP), NULL, dev_bus_rescan_store), | 519 | &dev_attr_rescan.attr, |
519 | __ATTR(cpuaffinity, S_IRUGO, pci_bus_show_cpumaskaffinity, NULL), | 520 | &dev_attr_cpuaffinity.attr, |
520 | __ATTR(cpulistaffinity, S_IRUGO, pci_bus_show_cpulistaffinity, NULL), | 521 | &dev_attr_cpulistaffinity.attr, |
521 | __ATTR_NULL, | 522 | NULL, |
523 | }; | ||
524 | |||
525 | static const struct attribute_group pcibus_group = { | ||
526 | .attrs = pcibus_attrs, | ||
527 | }; | ||
528 | |||
529 | const struct attribute_group *pcibus_groups[] = { | ||
530 | &pcibus_group, | ||
531 | NULL, | ||
522 | }; | 532 | }; |
523 | 533 | ||
524 | static ssize_t | 534 | static ssize_t |
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index a599a6bbdf37..a8d5fd064264 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c | |||
@@ -1992,7 +1992,7 @@ static void pci_add_saved_cap(struct pci_dev *pci_dev, | |||
1992 | } | 1992 | } |
1993 | 1993 | ||
1994 | /** | 1994 | /** |
1995 | * pci_add_save_buffer - allocate buffer for saving given capability registers | 1995 | * pci_add_cap_save_buffer - allocate buffer for saving given capability registers |
1996 | * @dev: the PCI device | 1996 | * @dev: the PCI device |
1997 | * @cap: the capability to allocate the buffer for | 1997 | * @cap: the capability to allocate the buffer for |
1998 | * @size: requested size of the buffer | 1998 | * @size: requested size of the buffer |
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h index d1182c4a754e..816c297f170c 100644 --- a/drivers/pci/pci.h +++ b/drivers/pci/pci.h | |||
@@ -151,7 +151,7 @@ static inline int pci_no_d1d2(struct pci_dev *dev) | |||
151 | 151 | ||
152 | } | 152 | } |
153 | extern struct device_attribute pci_dev_attrs[]; | 153 | extern struct device_attribute pci_dev_attrs[]; |
154 | extern struct device_attribute pcibus_dev_attrs[]; | 154 | extern const struct attribute_group *pcibus_groups[]; |
155 | extern struct device_type pci_dev_type; | 155 | extern struct device_type pci_dev_type; |
156 | extern struct bus_attribute pci_bus_attrs[]; | 156 | extern struct bus_attribute pci_bus_attrs[]; |
157 | 157 | ||
diff --git a/drivers/pci/pcie/Kconfig b/drivers/pci/pcie/Kconfig index 569f82fc9e22..a82e70a41039 100644 --- a/drivers/pci/pcie/Kconfig +++ b/drivers/pci/pcie/Kconfig | |||
@@ -2,7 +2,7 @@ | |||
2 | # PCI Express Port Bus Configuration | 2 | # PCI Express Port Bus Configuration |
3 | # | 3 | # |
4 | config PCIEPORTBUS | 4 | config PCIEPORTBUS |
5 | bool "PCI Express support" | 5 | bool "PCI Express Port Bus support" |
6 | depends on PCI | 6 | depends on PCI |
7 | help | 7 | help |
8 | This automatically enables PCI Express Port Bus support. Users can | 8 | This automatically enables PCI Express Port Bus support. Users can |
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index 46ada5c098eb..cf57fe79450a 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c | |||
@@ -96,7 +96,7 @@ static void release_pcibus_dev(struct device *dev) | |||
96 | static struct class pcibus_class = { | 96 | static struct class pcibus_class = { |
97 | .name = "pci_bus", | 97 | .name = "pci_bus", |
98 | .dev_release = &release_pcibus_dev, | 98 | .dev_release = &release_pcibus_dev, |
99 | .dev_attrs = pcibus_dev_attrs, | 99 | .dev_groups = pcibus_groups, |
100 | }; | 100 | }; |
101 | 101 | ||
102 | static int __init pcibus_class_init(void) | 102 | static int __init pcibus_class_init(void) |