Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'pci/iov'

* pci/iov:
PCI/IOV: Fix race between SR-IOV enable/disable and hotplug
Revert "PCI/IOV: Add PCI rescan-remove locking when enabling/disabling SR-IOV"

+4 -5
+4 -5
drivers/pci/iov.c
··· 495 495 496 496 if (num_vfs == 0) { 497 497 /* disable VFs */ 498 + pci_lock_rescan_remove(); 498 499 ret = pdev->driver->sriov_configure(pdev, 0); 500 + pci_unlock_rescan_remove(); 499 501 goto exit; 500 502 } 501 503 ··· 509 507 goto exit; 510 508 } 511 509 510 + pci_lock_rescan_remove(); 512 511 ret = pdev->driver->sriov_configure(pdev, num_vfs); 512 + pci_unlock_rescan_remove(); 513 513 if (ret < 0) 514 514 goto exit; 515 515 ··· 633 629 if (dev->no_vf_scan) 634 630 return 0; 635 631 636 - pci_lock_rescan_remove(); 637 632 for (i = 0; i < num_vfs; i++) { 638 633 rc = pci_iov_add_virtfn(dev, i); 639 634 if (rc) 640 635 goto failed; 641 636 } 642 - pci_unlock_rescan_remove(); 643 637 return 0; 644 638 failed: 645 639 while (i--) 646 640 pci_iov_remove_virtfn(dev, i); 647 - pci_unlock_rescan_remove(); 648 641 649 642 return rc; 650 643 } ··· 766 765 struct pci_sriov *iov = dev->sriov; 767 766 int i; 768 767 769 - pci_lock_rescan_remove(); 770 768 for (i = 0; i < iov->num_VFs; i++) 771 769 pci_iov_remove_virtfn(dev, i); 772 - pci_unlock_rescan_remove(); 773 770 } 774 771 775 772 static void sriov_disable(struct pci_dev *dev)