From: Sebastian Ott <sebott@linux.ibm.com>
To: Bjorn Helgaas <helgaas@kernel.org>
Cc: linux-pci@vger.kernel.org, Arnd Bergmann <arnd@arndb.de>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Paul Mackerras <paulus@samba.org>,
Michael Ellerman <mpe@ellerman.id.au>,
Russell Currey <ruscur@russell.cc>,
linuxppc-dev@lists.ozlabs.org
Subject: [PATCH 1/2] PCI: provide pcibios_sriov_add_vfs
Date: Thu, 13 Dec 2018 18:54:27 +0100 [thread overview]
Message-ID: <20181213175428.87520-1-sebott@linux.ibm.com> (raw)
In-Reply-To: <20181212215453.GJ99796@google.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 9616eca3182f..1bfdb4deafd7 100644
--- a/drivers/pci/iov.c
+++ b/drivers/pci/iov.c
@@ -252,6 +252,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;
@@ -337,21 +364,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);
@@ -370,14 +391,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 11c71c4ecf75..84ca3bcdac76 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -2001,6 +2001,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.16.4
WARNING: multiple messages have this Message-ID (diff)
From: Sebastian Ott <sebott@linux.ibm.com>
To: Bjorn Helgaas <helgaas@kernel.org>
Cc: Arnd Bergmann <arnd@arndb.de>,
linux-pci@vger.kernel.org, Paul Mackerras <paulus@samba.org>,
linuxppc-dev@lists.ozlabs.org
Subject: [PATCH 1/2] PCI: provide pcibios_sriov_add_vfs
Date: Thu, 13 Dec 2018 18:54:27 +0100 [thread overview]
Message-ID: <20181213175428.87520-1-sebott@linux.ibm.com> (raw)
In-Reply-To: <20181212215453.GJ99796@google.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 9616eca3182f..1bfdb4deafd7 100644
--- a/drivers/pci/iov.c
+++ b/drivers/pci/iov.c
@@ -252,6 +252,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;
@@ -337,21 +364,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);
@@ -370,14 +391,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 11c71c4ecf75..84ca3bcdac76 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -2001,6 +2001,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.16.4
next prev parent reply other threads:[~2018-12-13 17:54 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 ` [PATCH 1/2] pci: provide pcibios_sriov_add_vfs Sebastian Ott
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 ` Sebastian Ott [this message]
2018-12-13 17:54 ` [PATCH 1/2] PCI: provide pcibios_sriov_add_vfs 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=20181213175428.87520-1-sebott@linux.ibm.com \
--to=sebott@linux.ibm.com \
--cc=arnd@arndb.de \
--cc=benh@kernel.crashing.org \
--cc=helgaas@kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mpe@ellerman.id.au \
--cc=paulus@samba.org \
--cc=ruscur@russell.cc \
/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.