All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bjorn Helgaas <helgaas@kernel.org>
To: Govinda Tatti <Govinda.Tatti@Oracle.COM>
Cc: Christoph Hellwig <hch@infradead.org>,
	jgross@suse.com, linux-pci@vger.kernel.org,
	linux-kernel@vger.kernel.org, JBeulich@suse.com,
	bhelgaas@google.com, xen-devel@lists.xenproject.org,
	boris.ostrovsky@Oracle.COM, roger.pau@citrix.com,
	Russell Currey <ruscur@russell.cc>,
	Sinan Kaya <okaya@codeaurora.org>,
	Herbert Xu <herbert@gondor.apana.org.au>,
	Srikanth Jampala <Jampala.Srikanth@cavium.com>,
	Derek Chickles <derek.chickles@caviumnetworks.com>,
	Satanand Burla <satananda.burla@caviumnetworks.com>,
	Felix Manlunas <felix.manlunas@caviumnetworks.com>,
	Raghu Vatsavayi <raghu.vatsavayi@caviumnetworks.com>
Subject: Re: [Xen-devel] [PATCH V3 1/2] Drivers/PCI: Export pcie_has_flr() interface
Date: Fri, 15 Dec 2017 12:18:02 -0600	[thread overview]
Message-ID: <20171215181801.GU30595@bhelgaas-glaptop.roam.corp.google.com> (raw)
In-Reply-To: <fea075cf-fe6f-0d0b-11e4-4279fbfc280a@Oracle.COM>

[+cc Russell, Sinan, Herbert, Srikanth, Derek, Satanand, Felix, Raghu]

On Fri, Dec 15, 2017 at 09:48:02AM -0600, Govinda Tatti wrote:
> On 12/13/2017 3:24 PM, Bjorn Helgaas wrote:
> >On Wed, Dec 13, 2017 at 02:46:57PM -0600, Govinda Tatti wrote:

> >>>>>>-static bool pcie_has_flr(struct pci_dev *dev)
> >>>>>>+bool pcie_has_flr(struct pci_dev *dev)
> >>>>>>  {
> >>>>>>  	u32 cap;
> >>>>>>@@ -3882,6 +3882,7 @@ static bool pcie_has_flr(struct pci_dev *dev)
> >>>>>>  	pcie_capability_read_dword(dev, PCI_EXP_DEVCAP, &cap);
> >>>>>>  	return cap & PCI_EXP_DEVCAP_FLR;
> >>>>>>  }
> >>>>>>+EXPORT_SYMBOL_GPL(pcie_has_flr);

> >>>>>I'd rather change pcie_flr() so you could *always* call it, and
> >>>>>it would return 0, -ENOTTY, or whatever, based on whether FLR
> >>>>>is supported.  Is that feasible?

> >>>>Sure, I will add pcie_has_flr() logic inside pcie_flr() and
> >>>>return appropriate values as suggested by you. Do we still want
> >>>>to retain pcie_has_flr() and its usage inside pci.c?.Otherwise,
> >>>>I will remove it and do required cleanup.

> >>>If you can restructure the code and remove pcie_has_flr() while
> >>>retaining the existing behavior of its callers, that would be
> >>>great.

> >>I checked the current usage of pcie_has_flr() and pcie_flr(). I
> >>have a couple of questions or need some clarification.
> >>
> >>1. pcie_has_flr() usage inside pci_probe_reset_function().
> >>
> >>    This function is only calling pcie_has_flr() but not pcie_flr().
> >>    Rest of the code is trying to do specific type of reset except
> >>    pcie_flr().
> >>
> >>         rc = pci_dev_specific_reset(dev, 1);
> >>         if (rc != -ENOTTY)
> >>                 return rc;
> >>         if (pcie_has_flr(dev))
> >>                 return 0;
> >>         rc = pci_af_flr(dev, 1);
> >>         if (rc != -ENOTTY)
> >>                 return rc;
> >>
> >>    In other-words, I can remove usage of pcie_has_flr() in all
> >>    other places in pci.c except in above function.

> >I think we should keep the EXPORT_SYMBOL_GPL() part of a60a2b73ba69
> >("PCI: Export pcie_flr()"), but revert the restructuring part.
> >
> >Prior to a60a2b73ba69, we had
> >
> >   int pcie_flr(struct pci_dev *dev, int probe);
> >
> >like all the other reset methods.  AFAICT, the addition of
> >pcie_has_flr() was to optimize the path slightly because when
> >drivers call pcie_flr(), they should already know that their
> >hardware supports FLR.  But I don't think that optimization is
> >worth the extra code complexity.  If we do need to optimize it, we
> >can check this in the core during enumeration and set
> >PCI_DEV_FLAGS_NO_FLR_RESET accordingly.

> Not all code paths are aware of FLR capability and also, not
> using pcie_flr().  For example,
> 
> arch/powerpc/platforms/powernv/eeh-powernv.c

I assume you're referring to pnv_eeh_do_flr() (which contains code similar
to pcie_flr()) and pnv_eeh_do_af_flr() (which has code similar to
pci_af_flr()).  I agree that those are problematic and would ideally be
unified with the PCI core implementations.

Powerpc has quite a bit of this sort of special-case code for several
reasons, some just historical and some more concrete, so I don't know how
feasible this is.

> drivers/crypto/cavium/nitrox/nitrox_main.c

This has nitrox_reset_device(), which should definitely be replaced with a
core interface.

> drivers/net/ethernet/cavium/liquidio/octeon_mailbox.c

And this has octeon_mbox_process_cmd() which also does a home-grown
PCI_EXP_DEVCTL_BCR_FLR request and also should definitely use a core
interface.

> So, we should consider one of these options.
> 
> - set PCI_DEV_FLAGS_NO_FLR_RESET if it is not supported.
> - pcie_flr() should return if it is not supported
> 
> If we modify pcie_flr() to return error codes, then we need to modify
> all existing modules that are calling this function.

Yes, of course.

> Please let me know your preference, so that I can move accordingly. Thanks.

I think Christoph volunteered to do some restructuring, but I don't
know his timeframe.  If you can, I would probably wait for that
because there's so much overlap here.

The other paths that use PCI_EXP_DEVCTL_BCR_FLR are definitely issues
and should be fixed, but again should wait for the revised pcie_flr()
interface.  And if they're not actually required for your Xen issue,
they sound like "nice to have" cleanups that will not gate your Xen
fixes.  I added this to my ever-growing list of cleanups to do.

Bjorn

  reply	other threads:[~2017-12-15 18:18 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-07 22:21 [PATCH V3 0/2] Xen/PCIback: PCI reset using 'reset' SysFS attribute Govinda Tatti
2017-12-07 22:21 ` [PATCH V3 1/2] Drivers/PCI: Export pcie_has_flr() interface Govinda Tatti
2017-12-07 22:21   ` Govinda Tatti
2017-12-08 20:24   ` Bjorn Helgaas
2017-12-12  0:29     ` Govinda Tatti
2017-12-12  0:59       ` Bjorn Helgaas
2017-12-12  0:59       ` Bjorn Helgaas
2017-12-13 20:46         ` Govinda Tatti
2017-12-13 20:46         ` [Xen-devel] " Govinda Tatti
2017-12-13 21:24           ` Bjorn Helgaas
2017-12-13 21:24           ` [Xen-devel] " Bjorn Helgaas
2017-12-14 12:52             ` Christoph Hellwig
2017-12-14 12:52             ` [Xen-devel] " Christoph Hellwig
2017-12-15  0:24               ` Bjorn Helgaas
2017-12-15  0:24               ` Bjorn Helgaas
2017-12-15 15:48             ` [Xen-devel] " Govinda Tatti
2017-12-15 15:48               ` Govinda Tatti
2017-12-15 18:18               ` Bjorn Helgaas [this message]
2017-12-15 20:01                 ` [Xen-devel] " Govinda Tatti
2017-12-15 20:01                 ` Govinda Tatti
2017-12-18  3:09                 ` Alexey Kardashevskiy
2017-12-18  3:09                 ` [Xen-devel] " Alexey Kardashevskiy
2017-12-18 12:26                 ` Christoph Hellwig
2017-12-18 12:26                 ` [Xen-devel] " Christoph Hellwig
2017-12-18 17:22                   ` Govinda Tatti
2017-12-18 17:22                   ` [Xen-devel] " Govinda Tatti
2018-09-09 18:59                   ` Pasi Kärkkäinen
2018-09-09 18:59                   ` [Xen-devel] " Pasi Kärkkäinen
2018-09-10  2:33                     ` Sinan Kaya
2018-09-10  9:52                       ` Pasi Kärkkäinen
2018-09-10  9:52                       ` [Xen-devel] " Pasi Kärkkäinen
2018-09-10 17:04                         ` Sinan Kaya
2018-09-10 17:04                         ` Sinan Kaya
2018-09-10  2:33                     ` Sinan Kaya
2017-12-15 18:18               ` Bjorn Helgaas
2017-12-12  0:29     ` Govinda Tatti
2017-12-12 15:07     ` Christoph Hellwig
2017-12-12 15:07     ` Christoph Hellwig
2017-12-08 20:24   ` Bjorn Helgaas
2017-12-07 22:21 ` [PATCH V3 2/2] Xen/PCIback: Implement PCI flr/slot/bus reset with 'reset' SysFS attribute Govinda Tatti
2017-12-08  9:34   ` Jan Beulich
2017-12-08  9:34     ` Jan Beulich
2017-12-12 14:48     ` Govinda Tatti
2017-12-12 15:01       ` Jan Beulich
2017-12-12 15:14         ` Govinda Tatti
2017-12-12 15:14         ` [Xen-devel] " Govinda Tatti
2017-12-12 15:01       ` Jan Beulich
2017-12-15 19:52       ` Govinda Tatti
2017-12-15 19:52       ` Govinda Tatti
2017-12-18  7:36         ` Jan Beulich
2017-12-18  7:36         ` Jan Beulich
2017-12-18 17:32           ` Boris Ostrovsky
2017-12-18 17:32           ` Boris Ostrovsky
2018-09-16 11:43             ` [Xen-devel] " Pasi Kärkkäinen
2018-09-17 18:06               ` Boris Ostrovsky
2018-09-17 18:06               ` [Xen-devel] " Boris Ostrovsky
2018-09-18  7:15                 ` Pasi Kärkkäinen
2018-09-18  9:32                   ` George Dunlap
2018-09-18  9:32                   ` [Xen-devel] " George Dunlap
2018-09-18  9:32                     ` George Dunlap
2018-09-18 18:09                     ` Boris Ostrovsky
2018-09-18 18:09                     ` [Xen-devel] " Boris Ostrovsky
2018-09-19  9:05                       ` Roger Pau Monné
2018-09-19  9:05                       ` [Xen-devel] " Roger Pau Monné
2018-10-03 15:51                         ` Pasi Kärkkäinen
2018-10-08 14:32                           ` Boris Ostrovsky
2018-10-08 14:32                           ` [Xen-devel] " Boris Ostrovsky
2018-10-23 18:40                             ` Håkon Alstadheim
2018-10-29 15:30                               ` Pasi Kärkkäinen
2018-11-14 14:24                               ` [PATCH cargo-cult-version] For linux-4.19.x . " Håkon Alstadheim
2019-08-26 21:05                             ` [Xen-devel] [PATCH V3 2/2] " Pasi Kärkkäinen
2019-08-26 21:05                               ` Pasi Kärkkäinen
2018-10-03 15:51                         ` Pasi Kärkkäinen
2018-09-18  7:15                 ` Pasi Kärkkäinen
2018-09-16 11:43             ` Pasi Kärkkäinen
2017-12-12 15:01     ` Govinda Tatti
2017-12-12 15:01     ` Govinda Tatti
2017-12-07 22:21 ` Govinda Tatti

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=20171215181801.GU30595@bhelgaas-glaptop.roam.corp.google.com \
    --to=helgaas@kernel.org \
    --cc=Govinda.Tatti@Oracle.COM \
    --cc=JBeulich@suse.com \
    --cc=Jampala.Srikanth@cavium.com \
    --cc=bhelgaas@google.com \
    --cc=boris.ostrovsky@Oracle.COM \
    --cc=derek.chickles@caviumnetworks.com \
    --cc=felix.manlunas@caviumnetworks.com \
    --cc=hch@infradead.org \
    --cc=herbert@gondor.apana.org.au \
    --cc=jgross@suse.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=okaya@codeaurora.org \
    --cc=raghu.vatsavayi@caviumnetworks.com \
    --cc=roger.pau@citrix.com \
    --cc=ruscur@russell.cc \
    --cc=satananda.burla@caviumnetworks.com \
    --cc=xen-devel@lists.xenproject.org \
    /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.