All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gavin Shan <gwshan@linux.vnet.ibm.com>
To: Wei Yang <weiyang@linux.vnet.ibm.com>
Cc: bhelgaas@google.com, benh@au1.ibm.com, gwshan@linux.vnet.ibm.com,
	linux-pci@vger.kernel.org, linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH V14 10/21] PCI: Add pcibios_sriov_enable() and pcibios_sriov_disable()
Date: Fri, 20 Mar 2015 16:46:25 +1100	[thread overview]
Message-ID: <20150320054625.GB8119@shangw> (raw)
In-Reply-To: <1426820797-6267-11-git-send-email-weiyang@linux.vnet.ibm.com>

On Fri, Mar 20, 2015 at 11:06:26AM +0800, Wei Yang wrote:
>VFs are dynamically created when a driver enables them.  On some platforms,
>like PowerNV, special resources are necessary to enable VFs.
>
>Add platform hooks for enabling and disabling VFs.
>
>Signed-off-by: Wei Yang <weiyang@linux.vnet.ibm.com>
>---
> drivers/pci/iov.c |   19 +++++++++++++++++++
> 1 file changed, 19 insertions(+)
>
>diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c
>index 5643a10..64c4692 100644
>--- a/drivers/pci/iov.c
>+++ b/drivers/pci/iov.c
>@@ -220,6 +220,11 @@ static void virtfn_remove(struct pci_dev *dev, int id, int reset)
> 	pci_dev_put(dev);
> }
> 
>+int __weak pcibios_sriov_enable(struct pci_dev *pdev, u16 num_vfs)
>+{
>+       return 0;
>+}
>+
> static int sriov_enable(struct pci_dev *dev, int nr_virtfn)
> {
> 	int rc;
>@@ -231,6 +236,7 @@ static int sriov_enable(struct pci_dev *dev, int nr_virtfn)
> 	struct pci_sriov *iov = dev->sriov;
> 	int bars = 0;
> 	int bus;
>+	int retval;
> 
> 	if (!nr_virtfn)
> 		return 0;
>@@ -307,6 +313,12 @@ static int sriov_enable(struct pci_dev *dev, int nr_virtfn)
> 	if (nr_virtfn < initial)
> 		initial = nr_virtfn;
> 
>+	if ((retval = pcibios_sriov_enable(dev, initial))) {
>+		dev_err(&dev->dev, "failure %d from pcibios_sriov_enable()\n",
>+			retval);
>+		return retval;
>+	}
>+
> 	for (i = 0; i < initial; i++) {
> 		rc = virtfn_add(dev, i, 0);
> 		if (rc)
>@@ -335,6 +347,11 @@ failed:
> 	return rc;
> }
> 
>+int __weak pcibios_sriov_disable(struct pci_dev *pdev)
>+{
>+       return 0;
>+}
>+

Since you will have to v15, I would suggest to drop the return
value for this function. It seems there isn't a reason to have "int"
return value here.

Thanks,
Gavin

> static void sriov_disable(struct pci_dev *dev)
> {
> 	int i;
>@@ -346,6 +363,8 @@ static void sriov_disable(struct pci_dev *dev)
> 	for (i = 0; i < iov->num_VFs; i++)
> 		virtfn_remove(dev, i, 0);
> 
>+	pcibios_sriov_disable(dev);
>+
> 	iov->ctrl &= ~(PCI_SRIOV_CTRL_VFE | PCI_SRIOV_CTRL_MSE);
> 	pci_cfg_access_lock(dev);
> 	pci_write_config_word(dev, iov->pos + PCI_SRIOV_CTRL, iov->ctrl);
>-- 
>1.7.9.5
>
>_______________________________________________
>Linuxppc-dev mailing list
>Linuxppc-dev@lists.ozlabs.org
>https://lists.ozlabs.org/listinfo/linuxppc-dev


WARNING: multiple messages have this Message-ID (diff)
From: Gavin Shan <gwshan@linux.vnet.ibm.com>
To: Wei Yang <weiyang@linux.vnet.ibm.com>
Cc: bhelgaas@google.com, linux-pci@vger.kernel.org, benh@au1.ibm.com,
	linuxppc-dev@lists.ozlabs.org, gwshan@linux.vnet.ibm.com
Subject: Re: [PATCH V14 10/21] PCI: Add pcibios_sriov_enable() and pcibios_sriov_disable()
Date: Fri, 20 Mar 2015 16:46:25 +1100	[thread overview]
Message-ID: <20150320054625.GB8119@shangw> (raw)
In-Reply-To: <1426820797-6267-11-git-send-email-weiyang@linux.vnet.ibm.com>

On Fri, Mar 20, 2015 at 11:06:26AM +0800, Wei Yang wrote:
>VFs are dynamically created when a driver enables them.  On some platforms,
>like PowerNV, special resources are necessary to enable VFs.
>
>Add platform hooks for enabling and disabling VFs.
>
>Signed-off-by: Wei Yang <weiyang@linux.vnet.ibm.com>
>---
> drivers/pci/iov.c |   19 +++++++++++++++++++
> 1 file changed, 19 insertions(+)
>
>diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c
>index 5643a10..64c4692 100644
>--- a/drivers/pci/iov.c
>+++ b/drivers/pci/iov.c
>@@ -220,6 +220,11 @@ static void virtfn_remove(struct pci_dev *dev, int id, int reset)
> 	pci_dev_put(dev);
> }
> 
>+int __weak pcibios_sriov_enable(struct pci_dev *pdev, u16 num_vfs)
>+{
>+       return 0;
>+}
>+
> static int sriov_enable(struct pci_dev *dev, int nr_virtfn)
> {
> 	int rc;
>@@ -231,6 +236,7 @@ static int sriov_enable(struct pci_dev *dev, int nr_virtfn)
> 	struct pci_sriov *iov = dev->sriov;
> 	int bars = 0;
> 	int bus;
>+	int retval;
> 
> 	if (!nr_virtfn)
> 		return 0;
>@@ -307,6 +313,12 @@ static int sriov_enable(struct pci_dev *dev, int nr_virtfn)
> 	if (nr_virtfn < initial)
> 		initial = nr_virtfn;
> 
>+	if ((retval = pcibios_sriov_enable(dev, initial))) {
>+		dev_err(&dev->dev, "failure %d from pcibios_sriov_enable()\n",
>+			retval);
>+		return retval;
>+	}
>+
> 	for (i = 0; i < initial; i++) {
> 		rc = virtfn_add(dev, i, 0);
> 		if (rc)
>@@ -335,6 +347,11 @@ failed:
> 	return rc;
> }
> 
>+int __weak pcibios_sriov_disable(struct pci_dev *pdev)
>+{
>+       return 0;
>+}
>+

Since you will have to v15, I would suggest to drop the return
value for this function. It seems there isn't a reason to have "int"
return value here.

Thanks,
Gavin

> static void sriov_disable(struct pci_dev *dev)
> {
> 	int i;
>@@ -346,6 +363,8 @@ static void sriov_disable(struct pci_dev *dev)
> 	for (i = 0; i < iov->num_VFs; i++)
> 		virtfn_remove(dev, i, 0);
> 
>+	pcibios_sriov_disable(dev);
>+
> 	iov->ctrl &= ~(PCI_SRIOV_CTRL_VFE | PCI_SRIOV_CTRL_MSE);
> 	pci_cfg_access_lock(dev);
> 	pci_write_config_word(dev, iov->pos + PCI_SRIOV_CTRL, iov->ctrl);
>-- 
>1.7.9.5
>
>_______________________________________________
>Linuxppc-dev mailing list
>Linuxppc-dev@lists.ozlabs.org
>https://lists.ozlabs.org/listinfo/linuxppc-dev

  reply	other threads:[~2015-03-20  5:47 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-20  3:06 [PATCH V14 00/21] Enable SRIOV on Power8 Wei Yang
2015-03-20  3:06 ` Wei Yang
2015-03-20  3:06 ` [PATCH V14 01/21] powerpc/pci: Refactor pci_dn Wei Yang
2015-03-20  3:06 ` [PATCH V14 02/21] powerpc/powernv: Use pci_dn, not device_node, in PCI config accessor Wei Yang
2015-03-20  3:06   ` Wei Yang
2015-03-20  3:06 ` [PATCH V14 03/21] PCI: Print more info in sriov_enable() error message Wei Yang
2015-03-20  3:06 ` [PATCH V14 04/21] PCI: Print PF SR-IOV resource that contains all VF(n) BAR space Wei Yang
2015-03-20  3:06   ` Wei Yang
2015-03-20  3:06 ` [PATCH V14 05/21] PCI: Keep individual VF BAR size in struct pci_sriov Wei Yang
2015-03-20  3:06   ` Wei Yang
2015-03-20  3:06 ` [PATCH V14 06/21] PCI: Index IOV resources in the conventional style Wei Yang
2015-03-20  3:06 ` [PATCH V14 07/21] PCI: Refresh First VF Offset and VF Stride when updating NumVFs Wei Yang
2015-03-20  3:06   ` Wei Yang
2015-03-20  3:06 ` [PATCH V14 08/21] PCI: Calculate maximum number of buses required for VFs Wei Yang
2015-03-20  3:06   ` Wei Yang
2015-03-20  3:06 ` [PATCH V14 09/21] PCI: Export pci_iov_virtfn_bus() and pci_iov_virtfn_devfn() Wei Yang
2015-03-20  3:06   ` Wei Yang
2015-03-20  3:06 ` [PATCH V14 10/21] PCI: Add pcibios_sriov_enable() and pcibios_sriov_disable() Wei Yang
2015-03-20  3:06   ` Wei Yang
2015-03-20  5:46   ` Gavin Shan [this message]
2015-03-20  5:46     ` Gavin Shan
2015-03-20  3:06 ` [PATCH V14 11/21] PCI: Add pcibios_iov_resource_alignment() interface Wei Yang
2015-03-20  3:06   ` Wei Yang
2015-03-20  3:06 ` [PATCH V14 12/21] PCI: Consider additional PF's IOV BAR alignment in sizing and assigning Wei Yang
2015-03-20  3:06   ` Wei Yang
2015-03-20  3:06 ` [PATCH V14 13/21] powerpc/pci: Don't unset PCI resources for VFs Wei Yang
2015-03-20  3:06   ` Wei Yang
2015-03-20  3:06 ` [PATCH V14 14/21] powerpc/powernv: Allocate struct pnv_ioda_pe iommu_table dynamically Wei Yang
2015-03-20  3:06   ` Wei Yang
2015-03-20 21:22   ` Bjorn Helgaas
2015-03-20 21:22     ` Bjorn Helgaas
2015-03-20  3:06 ` [PATCH V14 15/21] powerpc/powernv: Reserve additional space for IOV BAR according to the number of total_pe Wei Yang
2015-03-20  3:06   ` Wei Yang
2015-03-20  3:06 ` [PATCH V14 16/21] powerpc/powernv: Implement pcibios_iov_resource_alignment() on powernv Wei Yang
2015-03-20  3:06   ` Wei Yang
2015-03-20  3:06 ` [PATCH V14 17/21] powerpc/powernv: Shift VF resource with an offset Wei Yang
2015-03-20  3:06   ` Wei Yang
2015-03-23 23:22   ` Daniel Axtens
2015-03-23 23:22     ` Daniel Axtens
2015-03-24  1:54     ` Wei Yang
2015-03-24  1:54       ` Wei Yang
2015-03-20  3:06 ` [PATCH V14 18/21] powerpc/powernv: Reserve additional space for IOV BAR, with m64_per_iov supported Wei Yang
2015-03-20  3:06   ` Wei Yang
2015-03-20  3:06 ` [PATCH V14 19/21] powerpc/powernv: Group VF PE when IOV BAR is big on PHB3 Wei Yang
2015-03-20  3:06   ` Wei Yang
2015-03-20  3:06 ` [PATCH V14 20/21] powerpc/pci: Remove unused struct pci_dn.pcidev field Wei Yang
2015-03-20  3:06   ` Wei Yang
2015-03-20  3:06 ` [PATCH V14 21/21] powerpc/pci: Add PCI resource alignment documentation Wei Yang
2015-03-20  3:06   ` Wei Yang
2015-03-20  5:43 ` [PATCH V14 00/21] Enable SRIOV on Power8 Gavin Shan
2015-03-20  5:43   ` Gavin Shan
2015-03-20 14:34   ` Bjorn Helgaas
2015-03-20 14:34     ` Bjorn Helgaas
2015-03-20 21:05     ` Benjamin Herrenschmidt
2015-03-20 21:05       ` Benjamin Herrenschmidt
2015-03-20 21:16       ` Bjorn Helgaas
2015-03-20 21:16         ` Bjorn Helgaas
2015-03-20 21:28         ` Benjamin Herrenschmidt
2015-03-20 21:28           ` Benjamin Herrenschmidt
2015-03-20 21:20 ` Bjorn Helgaas
2015-03-20 21:20   ` Bjorn Helgaas
2015-03-20 22:24   ` Wei Yang
2015-03-20 22:24     ` Wei Yang

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=20150320054625.GB8119@shangw \
    --to=gwshan@linux.vnet.ibm.com \
    --cc=benh@au1.ibm.com \
    --cc=bhelgaas@google.com \
    --cc=linux-pci@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=weiyang@linux.vnet.ibm.com \
    /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.