From: Wei Yang <weiyang@linux.vnet.ibm.com> To: Gavin Shan <gwshan@linux.vnet.ibm.com> Cc: Wei Yang <weiyang@linux.vnet.ibm.com>, benh@au1.ibm.com, linuxppc-dev@lists.ozlabs.org, bhelgaas@google.com, linux-pci@vger.kernel.org, yan@linux.vnet.ibm.com, qiudayu@linux.vnet.ibm.com Subject: Re: [RFC PATCH V3 02/17] pci/of: Match PCI VFs to dev-tree nodes dynamically Date: Mon, 23 Jun 2014 14:29:15 +0800 [thread overview] Message-ID: <20140623062915.GA5172@richard> (raw) In-Reply-To: <20140623050747.GB5069@shangw> On Mon, Jun 23, 2014 at 03:07:47PM +1000, Gavin Shan wrote: >On Tue, Jun 10, 2014 at 09:56:24AM +0800, Wei Yang wrote: >>As introduced by commit 98d9f30c82 ("pci/of: Match PCI devices to dev-tree nodes >>dynamically"), we need to match PCI devices to their corresponding dev-tree >>nodes. While for VFs, this step was missed. >> >>This patch matches VFs' PCI devices to dev-tree nodes dynamically. >> >>Signed-off-by: Wei Yang <weiyang@linux.vnet.ibm.com> >>--- >> drivers/pci/iov.c | 1 + >> 1 file changed, 1 insertion(+) >> >>diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c >>index 589ef7d..1d21f43 100644 >>--- a/drivers/pci/iov.c >>+++ b/drivers/pci/iov.c >>@@ -67,6 +67,7 @@ static int virtfn_add(struct pci_dev *dev, int id, int reset) >> >> virtfn->devfn = pci_iov_virtfn_devfn(dev, id); >> virtfn->vendor = dev->vendor; >>+ pci_set_of_node(virtfn); > >If the VF and PF seats on different PCI buses, I guess pci_set_of_node() always >binds nothing with the VF. It might be one of the problem your code missed and >I didn't catch this in the code review done previously. However, it shouldn't >be a real problem if we're not going to rely on dynamic device_node. > Thanks for the comment. This case is not took into consideration yet, so it is not supported now. While I think it is time to think about the solution now. Hmm... after reading the code a while, this seems some change in current code. 1. The hierarchy of VF's device node +---------+ |P2P |parent +----+----+ | pbus +------------+------------+ vbus | | ---------------+ +---------+ +-----+---+ | |DEV |child1 |DEV |child2 | +---------+ +---------+ | +----+------+ |VF | vchild +-----------+ From the chart above, the left side is the device node hierarchy without VFs. Each pci device is the direct child of the P2P bridge. When match pci device and its device node, the code go through the parent bus node's child list and find the one with same devfn.(in pci_set_of_node()). And we can tell the parent bus node is the P2P bridge's device node. This works fine, untill VFs need to be added. vbus is a child of the pbus, and vbus->self is NULL. So first thing is to set the correct device node for this virtual bus. From the chart above, looks both P2P bridge and the DEV could be the device node. While the later one seems more reasonable. 2. Reserve virtual bus number in firmware This is not a big issue, just reserve enough bus number in firmware. Otherwise, pci device and device node may not match. >> pci_|ead_config_word(dev, iov->pos + PCI_SRIOV_VF_DID, &virtfn->device); >> pci_setup_device(virtfn); >> virtfn->dev.parent = dev->dev.parent; > >Thanks, >Gavin -- Richard Yang Help you, Help me
WARNING: multiple messages have this Message-ID (diff)
From: Wei Yang <weiyang@linux.vnet.ibm.com> To: Gavin Shan <gwshan@linux.vnet.ibm.com> Cc: Wei Yang <weiyang@linux.vnet.ibm.com>, benh@au1.ibm.com, linux-pci@vger.kernel.org, yan@linux.vnet.ibm.com, bhelgaas@google.com, qiudayu@linux.vnet.ibm.com, linuxppc-dev@lists.ozlabs.org Subject: Re: [RFC PATCH V3 02/17] pci/of: Match PCI VFs to dev-tree nodes dynamically Date: Mon, 23 Jun 2014 14:29:15 +0800 [thread overview] Message-ID: <20140623062915.GA5172@richard> (raw) In-Reply-To: <20140623050747.GB5069@shangw> On Mon, Jun 23, 2014 at 03:07:47PM +1000, Gavin Shan wrote: >On Tue, Jun 10, 2014 at 09:56:24AM +0800, Wei Yang wrote: >>As introduced by commit 98d9f30c82 ("pci/of: Match PCI devices to dev-tree nodes >>dynamically"), we need to match PCI devices to their corresponding dev-tree >>nodes. While for VFs, this step was missed. >> >>This patch matches VFs' PCI devices to dev-tree nodes dynamically. >> >>Signed-off-by: Wei Yang <weiyang@linux.vnet.ibm.com> >>--- >> drivers/pci/iov.c | 1 + >> 1 file changed, 1 insertion(+) >> >>diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c >>index 589ef7d..1d21f43 100644 >>--- a/drivers/pci/iov.c >>+++ b/drivers/pci/iov.c >>@@ -67,6 +67,7 @@ static int virtfn_add(struct pci_dev *dev, int id, int reset) >> >> virtfn->devfn = pci_iov_virtfn_devfn(dev, id); >> virtfn->vendor = dev->vendor; >>+ pci_set_of_node(virtfn); > >If the VF and PF seats on different PCI buses, I guess pci_set_of_node() always >binds nothing with the VF. It might be one of the problem your code missed and >I didn't catch this in the code review done previously. However, it shouldn't >be a real problem if we're not going to rely on dynamic device_node. > Thanks for the comment. This case is not took into consideration yet, so it is not supported now. While I think it is time to think about the solution now. Hmm... after reading the code a while, this seems some change in current code. 1. The hierarchy of VF's device node +---------+ |P2P |parent +----+----+ | pbus +------------+------------+ vbus | | ---------------+ +---------+ +-----+---+ | |DEV |child1 |DEV |child2 | +---------+ +---------+ | +----+------+ |VF | vchild +-----------+ From the chart above, the left side is the device node hierarchy without VFs. Each pci device is the direct child of the P2P bridge. When match pci device and its device node, the code go through the parent bus node's child list and find the one with same devfn.(in pci_set_of_node()). And we can tell the parent bus node is the P2P bridge's device node. This works fine, untill VFs need to be added. vbus is a child of the pbus, and vbus->self is NULL. So first thing is to set the correct device node for this virtual bus. From the chart above, looks both P2P bridge and the DEV could be the device node. While the later one seems more reasonable. 2. Reserve virtual bus number in firmware This is not a big issue, just reserve enough bus number in firmware. Otherwise, pci device and device node may not match. >> pci_|ead_config_word(dev, iov->pos + PCI_SRIOV_VF_DID, &virtfn->device); >> pci_setup_device(virtfn); >> virtfn->dev.parent = dev->dev.parent; > >Thanks, >Gavin -- Richard Yang Help you, Help me
next prev parent reply other threads:[~2014-06-23 6:29 UTC|newest] Thread overview: 100+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-06-10 1:56 [RFC PATCH V3 00/17] Enable SRIOV on POWER8 Wei Yang 2014-06-10 1:56 ` Wei Yang 2014-06-10 1:56 ` [RFC PATCH V3 01/17] pci/iov: Export interface for retrieve VF's BDF Wei Yang 2014-06-10 1:56 ` Wei Yang 2014-06-10 1:56 ` [RFC PATCH V3 02/17] pci/of: Match PCI VFs to dev-tree nodes dynamically Wei Yang 2014-06-10 1:56 ` Wei Yang 2014-06-23 5:07 ` Gavin Shan 2014-06-23 5:07 ` Gavin Shan 2014-06-23 6:29 ` Wei Yang [this message] 2014-06-23 6:29 ` Wei Yang 2014-06-10 1:56 ` [RFC PATCH V3 03/17] ppc/pci: don't unset pci resources for VFs Wei Yang 2014-06-10 1:56 ` Wei Yang 2014-06-10 1:56 ` [RFC PATCH V3 04/17] PCI: SRIOV: add VF enable/disable hook Wei Yang 2014-06-10 1:56 ` Wei Yang 2014-06-23 5:03 ` Gavin Shan 2014-06-23 5:03 ` Gavin Shan 2014-06-23 6:29 ` Wei Yang 2014-06-23 6:29 ` Wei Yang 2014-06-10 1:56 ` [RFC PATCH V3 05/17] ppc/pnv: user macro to define the TCE size Wei Yang 2014-06-10 1:56 ` Wei Yang 2014-06-23 5:12 ` Gavin Shan 2014-06-23 5:12 ` Gavin Shan 2014-06-23 6:31 ` Wei Yang 2014-06-23 6:31 ` Wei Yang 2014-06-10 1:56 ` [RFC PATCH V3 06/17] ppc/pnv: allocate pe->iommu_table dynamically Wei Yang 2014-06-10 1:56 ` Wei Yang 2014-06-24 10:06 ` Alexey Kardashevskiy 2014-06-24 10:06 ` Alexey Kardashevskiy 2014-06-25 1:12 ` Wei Yang 2014-06-25 1:12 ` Wei Yang 2014-06-25 4:12 ` Alexey Kardashevskiy 2014-06-25 4:12 ` Alexey Kardashevskiy 2014-06-25 5:27 ` Wei Yang 2014-06-25 5:27 ` Wei Yang 2014-06-25 7:50 ` Alexey Kardashevskiy 2014-06-25 7:50 ` Alexey Kardashevskiy 2014-06-25 7:56 ` Benjamin Herrenschmidt 2014-06-25 7:56 ` Benjamin Herrenschmidt 2014-06-25 9:18 ` Wei Yang 2014-06-25 9:18 ` Wei Yang 2014-06-25 9:13 ` Wei Yang 2014-06-25 9:13 ` Wei Yang 2014-06-25 9:20 ` David Laight 2014-06-25 9:20 ` David Laight 2014-06-25 9:31 ` Wei Yang 2014-06-25 9:31 ` Wei Yang 2014-06-25 10:30 ` Alexey Kardashevskiy 2014-06-25 10:30 ` Alexey Kardashevskiy 2014-07-14 3:12 ` Benjamin Herrenschmidt 2014-06-10 1:56 ` [RFC PATCH V3 07/17] ppc/pnv: Add function to deconfig a PE Wei Yang 2014-06-10 1:56 ` Wei Yang 2014-06-23 5:27 ` Gavin Shan 2014-06-23 5:27 ` Gavin Shan 2014-06-23 9:07 ` Wei Yang 2014-06-23 9:07 ` Wei Yang 2014-06-10 1:56 ` [RFC PATCH V3 08/17] PCI: Add weak pcibios_sriov_resource_size() interface Wei Yang 2014-06-10 1:56 ` Wei Yang 2014-06-23 5:41 ` Gavin Shan 2014-06-23 5:41 ` Gavin Shan 2014-06-23 7:56 ` Wei Yang 2014-06-23 7:56 ` Wei Yang 2014-06-10 1:56 ` [RFC PATCH V3 09/17] PCI: Add weak pcibios_sriov_resource_alignment() interface Wei Yang 2014-06-10 1:56 ` Wei Yang 2014-06-10 1:56 ` [RFC PATCH V3 10/17] PCI: take additional IOV BAR alignment in sizing and assigning Wei Yang 2014-06-10 1:56 ` Wei Yang 2014-06-10 1:56 ` [RFC PATCH V3 11/17] ppc/pnv: Expand VF resources according to the number of total_pe Wei Yang 2014-06-10 1:56 ` Wei Yang 2014-06-23 6:07 ` Gavin Shan 2014-06-23 6:07 ` Gavin Shan 2014-06-23 6:56 ` Wei Yang 2014-06-23 6:56 ` Wei Yang 2014-06-23 7:08 ` Gavin Shan 2014-06-23 7:08 ` Gavin Shan 2014-06-10 1:56 ` [RFC PATCH V3 12/17] powerpc/powernv: implement pcibios_sriov_resource_alignment on powernv Wei Yang 2014-06-10 1:56 ` Wei Yang 2014-06-23 6:09 ` Gavin Shan 2014-06-23 6:09 ` Gavin Shan 2014-06-23 8:21 ` Wei Yang 2014-06-23 8:21 ` Wei Yang 2014-06-23 23:29 ` Gavin Shan 2014-06-23 23:29 ` Gavin Shan 2014-06-24 1:24 ` Wei Yang 2014-06-24 1:24 ` Wei Yang 2014-06-10 1:56 ` [RFC PATCH V3 13/17] powerpc/powernv: shift VF resource with an offset Wei Yang 2014-06-10 1:56 ` Wei Yang 2014-06-10 1:56 ` [RFC PATCH V3 14/17] ppc/pci: create/release dev-tree node for VFs Wei Yang 2014-06-10 1:56 ` Wei Yang 2014-06-18 18:26 ` Grant Likely 2014-06-18 20:51 ` Benjamin Herrenschmidt 2014-06-18 20:51 ` Benjamin Herrenschmidt 2014-06-19 2:46 ` Wei Yang 2014-06-19 8:30 ` Grant Likely 2014-06-19 9:42 ` Wei Yang 2014-06-20 3:46 ` Wei Yang 2014-06-10 1:56 ` [RFC PATCH V3 15/17] powerpc/powernv: allocate VF PE Wei Yang 2014-06-10 1:56 ` Wei Yang 2014-06-10 1:56 ` [RFC PATCH V3 16/17] ppc/pci: Expanding IOV BAR, with m64_per_iov supported Wei Yang 2014-06-10 1:56 ` Wei Yang 2014-06-10 1:56 ` [RFC PATCH V3 17/17] ppc/pnv: Group VF PE when IOV BAR is big on PHB3 Wei Yang 2014-06-10 1:56 ` 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=20140623062915.GA5172@richard \ --to=weiyang@linux.vnet.ibm.com \ --cc=benh@au1.ibm.com \ --cc=bhelgaas@google.com \ --cc=gwshan@linux.vnet.ibm.com \ --cc=linux-pci@vger.kernel.org \ --cc=linuxppc-dev@lists.ozlabs.org \ --cc=qiudayu@linux.vnet.ibm.com \ --cc=yan@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: linkBe 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.