[prev in list] [next in list] [prev in thread] [next in thread]
List: linux-pci
Subject: Re: [PATCH V10 07/12] powerpc/eeh: Create PE for VFs
From: Wei Yang <weiyang () linux ! vnet ! ibm ! com>
Date: 2015-10-30 6:59:14
Message-ID: 20151030065914.GD5940 () richards-mbp ! cn ! ibm ! com
[Download RAW message or body]
On Fri, Oct 30, 2015 at 02:46:35PM +1100, Alexey Kardashevskiy wrote:
> On 10/26/2015 02:15 PM, Wei Yang wrote:
> > Current EEH recovery code works with the assumption: the PE has primary
> > bus. Unfortunately, that's not true for VF PEs, which generally contains
> > one or multiple VFs (for VF group case).
>
> What is that "VF group case"? Is not it a "compound PE" thingy which you were
> removing in "SRIOV redesign patchset"?
>
I think you are right.
The commit log is not correct, especially after SRIOV redesign.
Will remove this part.
> The patch might be ok but the commit log above does not explain why the
> existing way of PEs allocation would not work - somehow it works for a
> primary bus now, why would not it work on other buses?
>
>
> > The patch creates PEs for VFs in the weak function
> > pcibios_bus_add_device().Those PEs for VFs are identified with newly
> > introduced flag EEH_PE_VF so that we handle them differently during EEH
> > recovery.
> >
> > [gwshan: changelog and code refactoring]
> > 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/eeh_pe.c | 10 ++++++++--
> > arch/powerpc/platforms/powernv/eeh-powernv.c | 16 ++++++++++++++++
> > 3 files changed, 25 insertions(+), 2 deletions(-)
> >
> > diff --git a/arch/powerpc/include/asm/eeh.h b/arch/powerpc/include/asm/eeh.h
> > index 6c383ad..ec21f8f 100644
> > --- a/arch/powerpc/include/asm/eeh.h
> > +++ b/arch/powerpc/include/asm/eeh.h
> > @@ -72,6 +72,7 @@ struct pci_dn;
> > #define EEH_PE_PHB (1 << 1) /* PHB PE */
> > #define EEH_PE_DEVICE (1 << 2) /* Device PE */
> > #define EEH_PE_BUS (1 << 3) /* Bus PE */
> > +#define EEH_PE_VF (1 << 4) /* VF PE */
> >
> > #define EEH_PE_ISOLATED (1 << 0) /* Isolated PE */
> > #define EEH_PE_RECOVERING (1 << 1) /* Recovering PE */
> > diff --git a/arch/powerpc/kernel/eeh_pe.c b/arch/powerpc/kernel/eeh_pe.c
> > index 35f0b62..260a701 100644
> > --- a/arch/powerpc/kernel/eeh_pe.c
> > +++ b/arch/powerpc/kernel/eeh_pe.c
> > @@ -299,7 +299,10 @@ static struct eeh_pe *eeh_pe_get_parent(struct eeh_dev \
> > *edev)
> > * EEH device already having associated PE, but
> > * the direct parent EEH device doesn't have yet.
> > */
> > - pdn = pdn ? pdn->parent : NULL;
> > + if (edev->physfn)
> > + pdn = pci_get_pdn(edev->physfn);
> > + else
> > + pdn = pdn ? pdn->parent : NULL;
> > while (pdn) {
> > /* We're poking out of PCI territory */
> > parent = pdn_to_eeh_dev(pdn);
> > @@ -382,7 +385,10 @@ int eeh_add_to_parent_pe(struct eeh_dev *edev)
> > }
> >
> > /* Create a new EEH PE */
> > - pe = eeh_pe_alloc(edev->phb, EEH_PE_DEVICE);
> > + if (edev->physfn)
> > + pe = eeh_pe_alloc(edev->phb, EEH_PE_VF);
> > + else
> > + pe = eeh_pe_alloc(edev->phb, EEH_PE_DEVICE);
> > if (!pe) {
> > pr_err("%s: out of memory!\n", __func__);
> > return -ENOMEM;
> > diff --git a/arch/powerpc/platforms/powernv/eeh-powernv.c \
> > b/arch/powerpc/platforms/powernv/eeh-powernv.c index 7cf0df8..cfd55dd 100644
> > --- a/arch/powerpc/platforms/powernv/eeh-powernv.c
> > +++ b/arch/powerpc/platforms/powernv/eeh-powernv.c
> > @@ -1524,6 +1524,22 @@ static struct eeh_ops pnv_eeh_ops = {
> > .restore_config = pnv_eeh_restore_config
> > };
> >
> > +void pcibios_bus_add_device(struct pci_dev *pdev)
> > +{
> > + struct pci_dn *pdn = pci_get_pdn(pdev);
> > +
> > + if (!pdev->is_virtfn)
> > + return;
> > +
> > + /*
> > + * The following operations will fail if VF's sysfs files
> > + * aren't created or its resources aren't finalized.
> > + */
> > + eeh_add_device_early(pdn);
> > + eeh_add_device_late(pdev);
> > + eeh_sysfs_add_device(pdev);
> > +}
> > +
> > /**
> > * eeh_powernv_init - Register platform dependent EEH operations
> > *
> >
>
>
> --
> Alexey
--
Richard Yang
Help you, Help me
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic