All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexey Kardashevskiy <aik@ozlabs.ru>
To: Wei Yang <weiyang@linux.vnet.ibm.com>
Cc: gwshan@linux.vnet.ibm.com, bhelgaas@google.com,
	mpe@ellerman.id.au, linuxppc-dev@lists.ozlabs.org,
	linux-pci@vger.kernel.org
Subject: Re: [PATCH V10 06/12] powerpc/powernv: EEH device for VF
Date: Fri, 30 Oct 2015 18:36:01 +1100	[thread overview]
Message-ID: <56331DE1.1090500@ozlabs.ru> (raw)
In-Reply-To: <20151030065246.GC5940@richards-mbp.cn.ibm.com>

On 10/30/2015 05:52 PM, Wei Yang wrote:
> On Fri, Oct 30, 2015 at 02:33:49PM +1100, Alexey Kardashevskiy wrote:
>> On 10/26/2015 02:15 PM, Wei Yang wrote:
>>> VFs and their corresponding pci_dn instances are created and released
>>> dynamically as their PF's SRIOV capability is enabled and disabled.
>>> The patch creates and releases EEH devices for VFs when creating and
>>> releasing their pci_dn instances, which means EEH devices and pci_dn
>>> instances have same life cycle. Also, VF's EEH device is identified
>>> by (struct eeh_dev::physfn).
>>
>>
>> The add_dev_pci_data() helper (the one you hack) does not create pci_dn
>> instances. The add_one_dev_pci_data() helper does.
>>
>
> Yes, you are right. The patch here create edev after the pci_dn is created.
>
> So which part in the log you think is not accurate?


The commit log is ok, I just thought loud that eeh_dev_init() could go to 
add_one_dev_pci_data() to make things more clear.



>>
>>>
>>> [gwshan: changelog and removed CONFIG_PCI_IOV]
>>> Signed-off-by: Wei Yang <weiyang@linux.vnet.ibm.com>
>>> Acked-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
>>> ---
>>>   arch/powerpc/include/asm/eeh.h |  1 +
>>>   arch/powerpc/kernel/pci_dn.c   | 12 ++++++++++++
>>>   2 files changed, 13 insertions(+)
>>>
>>> diff --git a/arch/powerpc/include/asm/eeh.h b/arch/powerpc/include/asm/eeh.h
>>> index c5eb86f..6c383ad 100644
>>> --- a/arch/powerpc/include/asm/eeh.h
>>> +++ b/arch/powerpc/include/asm/eeh.h
>>> @@ -140,6 +140,7 @@ struct eeh_dev {
>>>   	struct pci_controller *phb;	/* Associated PHB		*/
>>>   	struct pci_dn *pdn;		/* Associated PCI device node	*/
>>>   	struct pci_dev *pdev;		/* Associated PCI device	*/
>>> +	struct pci_dev *physfn;		/* Associated PF PORT		*/
>>>   	struct pci_bus *bus;		/* PCI bus for partial hotplug	*/
>>>   };
>>>
>>> diff --git a/arch/powerpc/kernel/pci_dn.c b/arch/powerpc/kernel/pci_dn.c
>>> index f771130..f0ddde7 100644
>>> --- a/arch/powerpc/kernel/pci_dn.c
>>> +++ b/arch/powerpc/kernel/pci_dn.c
>>> @@ -180,7 +180,9 @@ static struct pci_dn *add_one_dev_pci_data(struct pci_dn *parent,
>>>   struct pci_dn *add_dev_pci_data(struct pci_dev *pdev)
>>>   {
>>>   #ifdef CONFIG_PCI_IOV
>>> +	struct pci_controller *hose = pci_bus_to_host(pdev->bus);
>>>   	struct pci_dn *parent, *pdn;
>>> +	struct eeh_dev *edev;
>>>   	int i;
>>>
>>>   	/* Only support IOV for now */
>>> @@ -206,6 +208,9 @@ struct pci_dn *add_dev_pci_data(struct pci_dev *pdev)
>>>   				 __func__, i);
>>>   			return NULL;
>>>   		}
>>> +		eeh_dev_init(pdn, hose);
>>> +		edev = pdn_to_eeh_dev(pdn);
>>
>>
>> In theory, pdn_to_eeh_dev() can return NULL. In this patch, it is not clear
>> if pdn->edev gets initialized before or after add_dev_pci_data().
>>
>
> Yep, the return value should be checked.

May be BUG_ON will be enough, up to you.


>
> pdn->edev is initialized in eeh_dev_init() which is called in
> add_dev_pci_data(). The order is not clear?
>
>>
>>
>>> +		edev->physfn = pdev;
>>>   	}
>>>   #endif /* CONFIG_PCI_IOV */
>>>
>>> @@ -254,10 +259,17 @@ void remove_dev_pci_data(struct pci_dev *pdev)
>>>   	for (i = 0; i < pci_sriov_get_totalvfs(pdev); i++) {
>>>   		list_for_each_entry_safe(pdn, tmp,
>>>   			&parent->child_list, list) {
>>> +			struct eeh_dev *edev;
>>>   			if (pdn->busno != pci_iov_virtfn_bus(pdev, i) ||
>>>   			    pdn->devfn != pci_iov_virtfn_devfn(pdev, i))
>>>   				continue;
>>>
>>> +			edev = pdn_to_eeh_dev(pdn);
>>> +			if (edev) {
>>> +				pdn->edev = NULL;
>>> +				kfree(edev);
>>> +			}
>>> +
>>>   			if (!list_empty(&pdn->list))
>>>   				list_del(&pdn->list);
>>>
>>>
>>


-- 
Alexey

  reply	other threads:[~2015-10-30  7:36 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-26  3:15 [PATCH V10 00/12] VF EEH on Power8 Wei Yang
2015-10-26  3:15 ` [PATCH V10 01/12] PCI/IOV: Rename and export virtfn_add/virtfn_remove Wei Yang
2015-10-27  1:31   ` Andrew Donnellan
2015-10-27 23:06   ` Bjorn Helgaas
2015-10-28  1:21     ` Wei Yang
2015-10-26  3:15 ` [PATCH V10 02/12] PCI: Add pcibios_bus_add_device() weak function Wei Yang
2015-10-27  5:07   ` Andrew Donnellan
2015-10-26  3:15 ` [PATCH V10 03/12] powerpc/pci: Cache VF index in pci_dn Wei Yang
2015-10-27  5:01   ` Andrew Donnellan
2015-10-27 22:04   ` Daniel Axtens
2015-10-28  1:45     ` Wei Yang
2015-10-30  2:05   ` Alexey Kardashevskiy
2015-10-30  2:48     ` Wei Yang
2015-10-26  3:15 ` [PATCH V10 04/12] powerpc/pci: Remove VFs prior to PF Wei Yang
2015-10-30  3:04   ` Alexey Kardashevskiy
2015-10-30  6:31     ` Wei Yang
2015-10-26  3:15 ` [PATCH V10 05/12] powerpc/eeh: Cache only BARs, not windows or IOV BARs Wei Yang
2015-10-29  3:29   ` Daniel Axtens
2015-10-29  8:57     ` Wei Yang
2015-10-30  3:22   ` Alexey Kardashevskiy
2015-10-30  6:37     ` Wei Yang
2015-10-26  3:15 ` [PATCH V10 06/12] powerpc/powernv: EEH device for VF Wei Yang
2015-10-30  3:33   ` Alexey Kardashevskiy
2015-10-30  6:52     ` Wei Yang
2015-10-30  7:36       ` Alexey Kardashevskiy [this message]
2015-10-30  7:58         ` Wei Yang
2015-10-26  3:15 ` [PATCH V10 07/12] powerpc/eeh: Create PE for VFs Wei Yang
2015-10-30  3:46   ` Alexey Kardashevskiy
2015-10-30  6:59     ` Wei Yang
2015-10-26  3:15 ` [PATCH V10 08/12] powerpc/powernv: Support EEH reset for VF PE Wei Yang
2015-10-30  4:11   ` Alexey Kardashevskiy
2015-10-30  7:18     ` Wei Yang
2015-10-30  8:05       ` Alexey Kardashevskiy
2015-11-02 22:45         ` Wei Yang
2015-10-26  3:15 ` [PATCH V10 09/12] powerpc/powernv: Support PCI config restore for VFs Wei Yang
2015-10-30  4:56   ` Alexey Kardashevskiy
2015-10-30  8:17     ` Wei Yang
2015-10-26  3:16 ` [PATCH V10 10/12] powerpc/eeh: Support error recovery for VF PE Wei Yang
2015-10-30  5:20   ` Alexey Kardashevskiy
2015-11-01  1:53     ` Wei Yang
2015-11-01 23:40       ` Alexey Kardashevskiy
2015-11-02  9:39         ` Wei Yang
2015-10-26  3:16 ` [PATCH V10 11/12] powerpc/eeh: Don't block PCI config on resetting " Wei Yang
2015-10-30  5:42   ` Alexey Kardashevskiy
2015-10-30  7:19     ` Wei Yang
2015-10-26  3:16 ` [PATCH V10 12/12] powerpc/eeh: Handle hot removed VF when PF is EEH aware Wei Yang
2015-10-30  5:35   ` Alexey Kardashevskiy
2015-10-30  7:29     ` Wei Yang
2015-10-27 23:11 ` [PATCH V10 00/12] VF EEH on Power8 Bjorn Helgaas
2015-10-28  1:50   ` 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=56331DE1.1090500@ozlabs.ru \
    --to=aik@ozlabs.ru \
    --cc=bhelgaas@google.com \
    --cc=gwshan@linux.vnet.ibm.com \
    --cc=linux-pci@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mpe@ellerman.id.au \
    --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.