Commit 957cf2582adf2a2164bbbd87036138221c5c118a
Exists in
ti-lsk-linux-4.1.y
and in
12 other branches
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)) |
drivers/pci/pci.c
... | ... | @@ -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; " |