All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sebastian Ott <sebott@linux.ibm.com>
To: Bjorn Helgaas <bhelgaas@google.com>
Cc: linux-pci@vger.kernel.org
Subject: [PATCH 1/2] pci: provide pcibios_sriov_add_vfs
Date: Wed, 12 Sep 2018 14:34:10 +0200	[thread overview]
Message-ID: <20180912123411.23229-2-sebott@linux.ibm.com> (raw)
In-Reply-To: <20180912123411.23229-1-sebott@linux.ibm.com>

Move vf detection and device creation code to weak functions
such that architectures can provide a different implementation.

Signed-off-by: Sebastian Ott <sebott@linux.ibm.com>
---
 drivers/pci/iov.c   | 43 +++++++++++++++++++++++++++++++------------
 include/linux/pci.h |  2 ++
 2 files changed, 33 insertions(+), 12 deletions(-)

diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c
index c5f3cd4ed766..6452cb8f397f 100644
--- a/drivers/pci/iov.c
+++ b/drivers/pci/iov.c
@@ -251,6 +251,33 @@ int __weak pcibios_sriov_disable(struct pci_dev *pdev)
 	return 0;
 }
 
+int __weak pcibios_sriov_add_vfs(struct pci_dev *dev, u16 num_vfs)
+{
+	unsigned int i;
+	int rc;
+
+	for (i = 0; i < num_vfs; i++) {
+		rc = pci_iov_add_virtfn(dev, i);
+		if (rc)
+			goto failed;
+	}
+	return 0;
+failed:
+	while (i--)
+		pci_iov_remove_virtfn(dev, i);
+
+	return rc;
+}
+
+void __weak pcibios_sriov_del_vfs(struct pci_dev *dev)
+{
+	struct pci_sriov *iov = dev->sriov;
+	int i;
+
+	for (i = 0; i < iov->num_VFs; i++)
+		pci_iov_remove_virtfn(dev, i);
+}
+
 static int sriov_enable(struct pci_dev *dev, int nr_virtfn)
 {
 	int rc;
@@ -336,21 +363,15 @@ static int sriov_enable(struct pci_dev *dev, int nr_virtfn)
 	msleep(100);
 	pci_cfg_access_unlock(dev);
 
-	for (i = 0; i < initial; i++) {
-		rc = pci_iov_add_virtfn(dev, i);
-		if (rc)
-			goto failed;
-	}
+	rc = pcibios_sriov_add_vfs(dev, initial);
+	if (rc)
+		goto err_pcibios;
 
 	kobject_uevent(&dev->dev.kobj, KOBJ_CHANGE);
 	iov->num_VFs = nr_virtfn;
 
 	return 0;
 
-failed:
-	while (i--)
-		pci_iov_remove_virtfn(dev, i);
-
 err_pcibios:
 	iov->ctrl &= ~(PCI_SRIOV_CTRL_VFE | PCI_SRIOV_CTRL_MSE);
 	pci_cfg_access_lock(dev);
@@ -369,14 +390,12 @@ static int sriov_enable(struct pci_dev *dev, int nr_virtfn)
 
 static void sriov_disable(struct pci_dev *dev)
 {
-	int i;
 	struct pci_sriov *iov = dev->sriov;
 
 	if (!iov->num_VFs)
 		return;
 
-	for (i = 0; i < iov->num_VFs; i++)
-		pci_iov_remove_virtfn(dev, i);
+	pcibios_sriov_del_vfs(dev);
 
 	iov->ctrl &= ~(PCI_SRIOV_CTRL_VFE | PCI_SRIOV_CTRL_MSE);
 	pci_cfg_access_lock(dev);
diff --git a/include/linux/pci.h b/include/linux/pci.h
index e72ca8dd6241..76ff5b70f9a7 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1989,6 +1989,8 @@ void pci_vf_drivers_autoprobe(struct pci_dev *dev, bool probe);
 /* Arch may override these (weak) */
 int pcibios_sriov_enable(struct pci_dev *pdev, u16 num_vfs);
 int pcibios_sriov_disable(struct pci_dev *pdev);
+int pcibios_sriov_add_vfs(struct pci_dev *dev, u16 num_vfs);
+void pcibios_sriov_del_vfs(struct pci_dev *dev);
 resource_size_t pcibios_iov_resource_alignment(struct pci_dev *dev, int resno);
 #else
 static inline int pci_iov_virtfn_bus(struct pci_dev *dev, int id)
-- 
2.13.4

  reply	other threads:[~2018-09-12 17:38 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-12 12:34 [PATCH 0/2] sriov enablement on s390 Sebastian Ott
2018-09-12 12:34 ` Sebastian Ott [this message]
2018-09-12 12:34 ` [PATCH 2/2] s390/pci: handle function enumeration after sriov enablement Sebastian Ott
2018-09-12 13:02 ` [PATCH 0/2] sriov enablement on s390 Bjorn Helgaas
2018-09-12 14:40   ` Benjamin Herrenschmidt
2018-09-13 12:41   ` Sebastian Ott
2018-09-13 12:41     ` [PATCH 1/2] pci: provide add_vfs/del_vfs callbacks Sebastian Ott
2018-09-13 12:41     ` [PATCH 2/2] s390/pci: handle function enumeration after sriov enablement Sebastian Ott
2018-10-10 12:55   ` [PATCH 0/2] sriov enablement on s390 Sebastian Ott
2018-10-10 12:55     ` Sebastian Ott
2018-10-10 16:26     ` Bjorn Helgaas
2018-10-10 16:26       ` Bjorn Helgaas
2018-12-05 13:45       ` Sebastian Ott
2018-12-05 13:45         ` Sebastian Ott
2018-12-12 21:54         ` Bjorn Helgaas
2018-12-12 21:54           ` Bjorn Helgaas
2018-12-13 17:54           ` [PATCH 1/2] PCI: provide pcibios_sriov_add_vfs Sebastian Ott
2018-12-13 17:54             ` Sebastian Ott
2018-12-14 13:12             ` Christoph Hellwig
2018-12-14 13:12               ` Christoph Hellwig
2018-12-13 17:54           ` [PATCH 2/2] s390/pci: handle function enumeration after sriov enablement Sebastian Ott
2018-12-13 17:54             ` Sebastian Ott
2018-12-14 13:12             ` Christoph Hellwig
2018-12-14 13:12               ` Christoph Hellwig
2018-12-14 13:18               ` Christoph Hellwig
2018-12-14 13:18                 ` Christoph Hellwig
2018-12-17 17:30                 ` Sebastian Ott
2018-12-17 17:30                   ` Sebastian Ott
2018-12-17 17:35                   ` Christoph Hellwig
2018-12-17 17:35                     ` Christoph Hellwig
2018-12-18 10:16                     ` [PATCH 1/2] PCI/IOV: provide flag to skip VF scanning Sebastian Ott
2018-12-18 10:16                       ` Sebastian Ott
2018-12-19  7:52                       ` Christoph Hellwig
2018-12-19  7:52                         ` Christoph Hellwig
2018-12-20 20:07                       ` Bjorn Helgaas
2018-12-20 20:07                         ` Bjorn Helgaas
2018-12-21 14:14                         ` [PATCH 1/3] PCI/IOV: factor out sriov_add_vfs Sebastian Ott
2018-12-21 14:14                           ` Sebastian Ott
2018-12-21 14:14                         ` [PATCH 2/3] PCI/IOV: provide flag to skip VF scanning Sebastian Ott
2018-12-21 14:14                           ` Sebastian Ott
2018-12-21 14:14                         ` [PATCH 3/3] s390/pci: " Sebastian Ott
2018-12-21 14:14                           ` Sebastian Ott
2018-12-21 14:19                         ` [PATCH 1/2] PCI/IOV: provide flag to " Sebastian Ott
2018-12-21 14:19                           ` Sebastian Ott
2019-01-02  1:14                           ` Bjorn Helgaas
2019-01-02  1:14                             ` Bjorn Helgaas
2018-12-18 10:16                     ` [PATCH 2/2] s390/pci: " Sebastian Ott
2018-12-18 10:16                       ` Sebastian Ott
2018-12-19  7:52                       ` Christoph Hellwig
2018-12-19  7:52                         ` Christoph Hellwig

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180912123411.23229-2-sebott@linux.ibm.com \
    --to=sebott@linux.ibm.com \
    --cc=bhelgaas@google.com \
    --cc=linux-pci@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.