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 1/8] PCI: Allocate ATS struct during enumeration
Date: Mon, 20 Jul 2015 10:34:08 -0500 [thread overview]
Message-ID: <20150720153408.GB16841@google.com> (raw)
In-Reply-To: <20150720135516.GB13082@suse.de>
On Mon, Jul 20, 2015 at 03:55:16PM +0200, Joerg Roedel wrote:
> Hi Bjorn,
>
> On Fri, Jul 17, 2015 at 04:31:52PM -0500, Bjorn Helgaas wrote:
> > -static int ats_alloc_one(struct pci_dev *dev, int ps)
> > +static void ats_alloc_one(struct pci_dev *dev)
> > {
> > int pos;
> > u16 cap;
> > @@ -25,20 +25,17 @@ static int ats_alloc_one(struct pci_dev *dev, int ps)
> >
> > pos = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ATS);
> > if (!pos)
> > - return -ENODEV;
> > + return;
> >
> > ats = kzalloc(sizeof(*ats), GFP_KERNEL);
> > if (!ats)
> > - return -ENOMEM;
> > + return;
>
> I think we should print a warning here when the allocation fails.
> Otherwise the user wonders why ATS can't be used despite the available
> capability.
Good idea, done (although it gets removed right away in the next patch :))
>
> > - if (dev->is_physfn || dev->is_virtfn) {
> > - struct pci_dev *pdev = dev->is_physfn ? dev : dev->physfn;
> > -
> > - mutex_lock(&pdev->sriov->lock);
> > - if (pdev->ats)
> > - rc = pdev->ats->stu == ps ? 0 : -EINVAL;
> > - else
> > - rc = ats_alloc_one(pdev, ps);
> > + if (ps < PCI_ATS_MIN_STU)
> > + return -EINVAL;
> >
> > - if (!rc)
> > - pdev->ats->ref_cnt++;
> > - mutex_unlock(&pdev->sriov->lock);
> > - if (rc)
> > - return rc;
> > - }
> > + ctrl = PCI_ATS_CTRL_ENABLE;
> > + if (dev->is_virtfn) {
> > + struct pci_dev *pdev = dev->physfn;
> >
> > - if (!dev->is_physfn) {
> > - rc = ats_alloc_one(dev, ps);
> > - if (rc)
> > - return rc;
> > + if (pdev->ats->stu != ps)
> > + return -EINVAL;
> > + } else {
> > + dev->ats->stu = ps;
> > + ctrl |= PCI_ATS_CTRL_STU(dev->ats->stu - PCI_ATS_MIN_STU);
> > }
>
> Okay, enabling ATS for the virt_fn will now fail when it is not
> already enabled for the phys_fn. The drivers probe function, which might
> enable SR-IOV, runs after BUS_NOTIFY_ADD_DEVICE has finished, so this
> should be safe.
>
> But I think a comment explaining these dependencies would be good here.
Comment added, thanks!
Bjorn
next prev parent reply other threads:[~2015-07-20 15:34 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 [this message]
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
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=20150720153408.GB16841@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.