提交 957cf258 编写于 作者: L 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
...@@ -117,7 +117,7 @@ Description: ...@@ -117,7 +117,7 @@ Description:
What: /sys/bus/pci/devices/.../vpd What: /sys/bus/pci/devices/.../vpd
Date: February 2008 Date: February 2008
Contact: Ben Hutchings <bhutchings@solarflare.com> Contact: Ben Hutchings <bwh@kernel.org>
Description: Description:
A file named vpd in a device directory will be a A file named vpd in a device directory will be a
binary file containing the Vital Product Data for the binary file containing the Vital Product Data for the
......
...@@ -282,8 +282,8 @@ static int board_added(struct slot *p_slot) ...@@ -282,8 +282,8 @@ static int board_added(struct slot *p_slot)
return WRONG_BUS_FREQUENCY; return WRONG_BUS_FREQUENCY;
} }
bsp = ctrl->pci_dev->bus->cur_bus_speed; bsp = ctrl->pci_dev->subordinate->cur_bus_speed;
msp = ctrl->pci_dev->bus->max_bus_speed; msp = ctrl->pci_dev->subordinate->max_bus_speed;
/* Check if there are other slots or devices on the same bus */ /* Check if there are other slots or devices on the same bus */
if (!list_empty(&ctrl->pci_dev->subordinate->devices)) if (!list_empty(&ctrl->pci_dev->subordinate->devices))
......
...@@ -3067,7 +3067,8 @@ int pci_wait_for_pending_transaction(struct pci_dev *dev) ...@@ -3067,7 +3067,8 @@ int pci_wait_for_pending_transaction(struct pci_dev *dev)
if (!pci_is_pcie(dev)) if (!pci_is_pcie(dev))
return 1; return 1;
return pci_wait_for_pending(dev, PCI_EXP_DEVSTA, PCI_EXP_DEVSTA_TRPND); return pci_wait_for_pending(dev, pci_pcie_cap(dev) + PCI_EXP_DEVSTA,
PCI_EXP_DEVSTA_TRPND);
} }
EXPORT_SYMBOL(pci_wait_for_pending_transaction); EXPORT_SYMBOL(pci_wait_for_pending_transaction);
...@@ -3109,7 +3110,7 @@ static int pci_af_flr(struct pci_dev *dev, int probe) ...@@ -3109,7 +3110,7 @@ static int pci_af_flr(struct pci_dev *dev, int probe)
return 0; return 0;
/* Wait for Transaction Pending bit clean */ /* Wait for Transaction Pending bit clean */
if (pci_wait_for_pending(dev, PCI_AF_STATUS, PCI_AF_STATUS_TP)) if (pci_wait_for_pending(dev, pos + PCI_AF_STATUS, PCI_AF_STATUS_TP))
goto clear; goto clear;
dev_err(&dev->dev, "transaction is not cleared; " dev_err(&dev->dev, "transaction is not cleared; "
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册