Commit 957cf2582adf2a2164bbbd87036138221c5c118a

Authored by Linus Torvalds

Merge tag 'pci-v3.15-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci

Pull PCI fixes from Bjorn Helgaas:
 "These are fixes for an SHPCHP hotplug regression, a "wait for pending
  transaction" problem (used in device reset paths), and an email
  address update.

  PCI device hotplug:
    - Fix SHPCHP bus speed mismatch issue (Marcel Apfelbaum)

  Miscellaneous:
    - Fix pci_wait_for_pending_transaction() (Gavin Shan)
    - Update email address (Ben Hutchings)"

* tag 'pci-v3.15-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
  PCI: Wrong register used to check pending traffic
  PCI: shpchp: Check bridge's secondary (not primary) bus speed
  PCI: Update my email address

Showing 3 changed files Side-by-side Diff

Documentation/ABI/testing/sysfs-bus-pci
... ... @@ -117,7 +117,7 @@
117 117  
118 118 What: /sys/bus/pci/devices/.../vpd
119 119 Date: February 2008
120   -Contact: Ben Hutchings <bhutchings@solarflare.com>
  120 +Contact: Ben Hutchings <bwh@kernel.org>
121 121 Description:
122 122 A file named vpd in a device directory will be a
123 123 binary file containing the Vital Product Data for the
drivers/pci/hotplug/shpchp_ctrl.c
... ... @@ -282,8 +282,8 @@
282 282 return WRONG_BUS_FREQUENCY;
283 283 }
284 284  
285   - bsp = ctrl->pci_dev->bus->cur_bus_speed;
286   - msp = ctrl->pci_dev->bus->max_bus_speed;
  285 + bsp = ctrl->pci_dev->subordinate->cur_bus_speed;
  286 + msp = ctrl->pci_dev->subordinate->max_bus_speed;
287 287  
288 288 /* Check if there are other slots or devices on the same bus */
289 289 if (!list_empty(&ctrl->pci_dev->subordinate->devices))
... ... @@ -3067,7 +3067,8 @@
3067 3067 if (!pci_is_pcie(dev))
3068 3068 return 1;
3069 3069  
3070   - return pci_wait_for_pending(dev, PCI_EXP_DEVSTA, PCI_EXP_DEVSTA_TRPND);
  3070 + return pci_wait_for_pending(dev, pci_pcie_cap(dev) + PCI_EXP_DEVSTA,
  3071 + PCI_EXP_DEVSTA_TRPND);
3071 3072 }
3072 3073 EXPORT_SYMBOL(pci_wait_for_pending_transaction);
3073 3074  
... ... @@ -3109,7 +3110,7 @@
3109 3110 return 0;
3110 3111  
3111 3112 /* Wait for Transaction Pending bit clean */
3112   - if (pci_wait_for_pending(dev, PCI_AF_STATUS, PCI_AF_STATUS_TP))
  3113 + if (pci_wait_for_pending(dev, pos + PCI_AF_STATUS, PCI_AF_STATUS_TP))
3113 3114 goto clear;
3114 3115  
3115 3116 dev_err(&dev->dev, "transaction is not cleared; "