All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bjorn Helgaas <bhelgaas@google.com>
To: Joerg Roedel <jroedel@suse.de>
Cc: linux-pci@vger.kernel.org, Gregor Dick <gdick@solarflare.com>
Subject: Re: [PATCH 7/8] PCI: Clean up ATS error handling
Date: Mon, 20 Jul 2015 10:57:43 -0500	[thread overview]
Message-ID: <20150720155743.GC16841@google.com> (raw)
In-Reply-To: <20150720142400.GG13082@suse.de>

On Mon, Jul 20, 2015 at 04:24:00PM +0200, Joerg Roedel wrote:
> On Fri, Jul 17, 2015 at 04:32:40PM -0500, Bjorn Helgaas wrote:
> > There's no need to BUG() if we enable ATS when it's already enabled.  We
> > don't need to BUG() when disabling ATS on a device that doesn't support ATS
> > or if it's already disabled.  If ATS is enabled, certainly we found an ATS
> > capability in the past, so it should still be there now.
> > 
> > Clean up these error paths.
> > 
> > Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
> > ---
> >  drivers/pci/ats.c |    7 ++-----
> >  1 file changed, 2 insertions(+), 5 deletions(-)
> > 
> > diff --git a/drivers/pci/ats.c b/drivers/pci/ats.c
> > index c35de8e..9069126 100644
> > --- a/drivers/pci/ats.c
> > +++ b/drivers/pci/ats.c
> > @@ -43,8 +43,6 @@ int pci_enable_ats(struct pci_dev *dev, int ps)
> >  {
> >  	u16 ctrl;
> >  
> > -	BUG_ON(dev->ats_cap && dev->ats_enabled);
> > -
> >  	if (!dev->ats_cap)
> >  		return -EINVAL;
> 
> Hmm, what happens if pci_enable_ats is called twice for the same
> device? Can we change the STU without disabling ATS first, for example?
> 
> The function should probably return if it finds ATS already enabled (or
> at least WARN when it is enabled and ps != last ps value).

It would probably be nicest if:

  - enabling PF fails if ATS is already enabled
  - enabling VF fails if (PF ATS is disabled || PS != PF PS)
  - disabling PF fails if ATS is enabled on any VF

I added the first (which we basically had before in the BUG_ON()), and I
already had the second.

The third is where it gets messy because we have either add a refcount and
associated locking, or we have to iterate through all the VFs.  I did
consider both of those but thought it was a lot of work for the way it's
currently used: it looks like ATS is enabled for every device when it is
enumerated, with a fixed PS, and never changed.

But I guess a refcount with atomic_inc() probably wouldn't be too hard.
Let me poke at that.

Bjorn

  reply	other threads:[~2015-07-20 15:57 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-17 21:31 [PATCH 0/8] PCI: Fix ATS deadlock Bjorn Helgaas
2015-07-17 21:31 ` [PATCH 1/8] PCI: Allocate ATS struct during enumeration Bjorn Helgaas
2015-07-20 13:47   ` Bjorn Helgaas
2015-07-20 13:55   ` Joerg Roedel
2015-07-20 15:34     ` Bjorn Helgaas
2015-07-17 21:32 ` [PATCH 2/8] PCI: Embed ATS info directly into struct pci_dev Bjorn Helgaas
2015-07-20 14:03   ` Joerg Roedel
2015-07-20 16:26     ` Bjorn Helgaas
2015-07-17 21:32 ` [PATCH 3/8] PCI: Reduce size of ATS structure elements Bjorn Helgaas
2015-07-20 14:27   ` Joerg Roedel
2015-07-17 21:32 ` [PATCH 4/8] PCI: Rationalize pci_ats_queue_depth() error checking Bjorn Helgaas
2015-07-20 14:15   ` Joerg Roedel
2015-07-17 21:32 ` [PATCH 5/8] PCI: Inline the ATS setup code into pci_ats_init() Bjorn Helgaas
2015-07-20 14:15   ` Joerg Roedel
2015-07-17 21:32 ` [PATCH 6/8] PCI: Use pci_physfn() rather than looking up physfn by hand Bjorn Helgaas
2015-07-20 14:17   ` Joerg Roedel
2015-07-17 21:32 ` [PATCH 7/8] PCI: Clean up ATS error handling Bjorn Helgaas
2015-07-20 14:24   ` Joerg Roedel
2015-07-20 15:57     ` Bjorn Helgaas [this message]
2015-07-17 21:32 ` [PATCH 8/8] PCI: Move ATS declarations to linux/pci.h so they're all together Bjorn Helgaas
2015-07-20 14:25   ` Joerg Roedel

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=20150720155743.GC16841@google.com \
    --to=bhelgaas@google.com \
    --cc=gdick@solarflare.com \
    --cc=jroedel@suse.de \
    --cc=linux-pci@vger.kernel.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.