On Mon, May 04, 2015 at 03:07:30PM +0800, Wei Yang wrote: >During the EEH procedure, when a device's driver is not EEH aware or no ^^^^^^^^^^^^^ EEH recovery, >driver is binded with a device, EEH core would do hotplug on this devices. ^^^^^^ ^^^^^^^^^^^^ >While it isn't feasible for a VF with usual hotplug procedure. During >removal of a VF, virt_bus should be removed if necessary. During the >re-creation, the pci_scan_slot() doesn't work on a VF. > Is "virt_bus" related to those functions you try to export? Even so, you can simply have "virt_bus" in the commit log, please have " virtual bus" or the formal things like that. >This patch exports two functions to handle the hotplug case for VF >properly. They will be invoked when the EEH core do the hotplug case for ^^^^ >VFs. Couple of typos as above. Thanks, Gavin > >Signed-off-by: Wei Yang <weiyang@xxxxxxxxxxxxxxxxxx> >--- > drivers/pci/iov.c | 10 +++++----- > include/linux/pci.h | 2 ++ > 2 files changed, 7 insertions(+), 5 deletions(-) > >diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c >index ee0ebff..cc941dd 100644 >--- a/drivers/pci/iov.c >+++ b/drivers/pci/iov.c >@@ -108,7 +108,7 @@ resource_size_t pci_iov_resource_size(struct pci_dev *dev, int resno) > return dev->sriov->barsz[resno - PCI_IOV_RESOURCES]; > } > >-static int virtfn_add(struct pci_dev *dev, int id, int reset) >+int pci_iov_virtfn_add(struct pci_dev *dev, int id, int reset) > { > int i; > int rc = -ENOMEM; >@@ -183,7 +183,7 @@ failed: > return rc; > } > >-static void virtfn_remove(struct pci_dev *dev, int id, int reset) >+void pci_iov_virtfn_remove(struct pci_dev *dev, int id, int reset) > { > char buf[VIRTFN_ID_LEN]; > struct pci_dev *virtfn; >@@ -320,7 +320,7 @@ static int sriov_enable(struct pci_dev *dev, int nr_virtfn) > } > > for (i = 0; i < initial; i++) { >- rc = virtfn_add(dev, i, 0); >+ rc = pci_iov_virtfn_add(dev, i, 0); > if (rc) > goto failed; > } >@@ -332,7 +332,7 @@ static int sriov_enable(struct pci_dev *dev, int nr_virtfn) > > failed: > for (j = 0; j < i; j++) >- virtfn_remove(dev, j, 0); >+ pci_iov_virtfn_remove(dev, j, 0); > > iov->ctrl &= ~(PCI_SRIOV_CTRL_VFE | PCI_SRIOV_CTRL_MSE); > pci_cfg_access_lock(dev); >@@ -361,7 +361,7 @@ static void sriov_disable(struct pci_dev *dev) > return; > > for (i = 0; i < iov->num_VFs; i++) >- virtfn_remove(dev, i, 0); >+ pci_iov_virtfn_remove(dev, i, 0); > > pcibios_sriov_disable(dev); > >diff --git a/include/linux/pci.h b/include/linux/pci.h >index 353db8d..94bacfa 100644 >--- a/include/linux/pci.h >+++ b/include/linux/pci.h >@@ -1679,6 +1679,8 @@ int pci_iov_virtfn_devfn(struct pci_dev *dev, int id); > > int pci_enable_sriov(struct pci_dev *dev, int nr_virtfn); > void pci_disable_sriov(struct pci_dev *dev); >+int pci_iov_virtfn_add(struct pci_dev *dev, int id, int reset); >+void pci_iov_virtfn_remove(struct pci_dev *dev, int id, int reset); > int pci_num_vf(struct pci_dev *dev); > int pci_vfs_assigned(struct pci_dev *dev); > int pci_sriov_set_totalvfs(struct pci_dev *dev, u16 numvfs); >-- >1.7.9.5 > -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html