|
@@ -3135,8 +3135,13 @@ static int pci_af_flr(struct pci_dev *dev, int probe)
|
|
|
if (probe)
|
|
|
return 0;
|
|
|
|
|
|
- /* Wait for Transaction Pending bit clean */
|
|
|
- if (pci_wait_for_pending(dev, pos + PCI_AF_STATUS, PCI_AF_STATUS_TP))
|
|
|
+ /*
|
|
|
+ * Wait for Transaction Pending bit to clear. A word-aligned test
|
|
|
+ * is used, so we use the conrol offset rather than status and shift
|
|
|
+ * the test bit to match.
|
|
|
+ */
|
|
|
+ if (pci_wait_for_pending(dev, pos + PCI_AF_CTRL,
|
|
|
+ PCI_AF_STATUS_TP << 8))
|
|
|
goto clear;
|
|
|
|
|
|
dev_err(&dev->dev, "transaction is not cleared; proceeding with reset anyway\n");
|