mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Govinda Tatti <govinda.tatti@oracle.com>
To: Jan Beulich <JBeulich@suse.com>, Konrad Wilk <konrad.wilk@oracle.com>
Cc: xen-devel@lists.xenproject.org,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Juergen Gross <jgross@suse.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [Xen-devel] [PATCH] Xen/pciback: Implement PCI slot or bus reset with 'do_flr' SysFS attribute
Date: Wed, 8 Nov 2017 09:44:48 -0600	[thread overview]
Message-ID: <8940b38d-715c-9fcb-cc74-46574d416703@oracle.com> (raw)
In-Reply-To: <5A01D3F3020000780018CE86@prv-mh.provo.novell.com>

Thanks Jan for your review comments. Please see below for my comments.

On 11/7/2017 8:40 AM, Jan Beulich wrote:
>>>> On 06.11.17 at 18:48, <Govinda.Tatti@Oracle.COM> wrote:
>> --- a/Documentation/ABI/testing/sysfs-driver-pciback
>> +++ b/Documentation/ABI/testing/sysfs-driver-pciback
>> @@ -11,3 +11,15 @@ Description:
>>                   #echo 00:19.0-E0:2:FF > /sys/bus/pci/drivers/pciback/quirks
>>                   will allow the guest to read and write to the configuration
>>                   register 0x0E.
>> +
>> +What:           /sys/bus/pci/drivers/pciback/do_flr
>> +Date:           Nov 2017
>> +KernelVersion:  4.15
>> +Contact:        xen-devel@lists.xenproject.org
>> +Description:
>> +                An option to perform a slot or bus reset when a PCI device
>> +		is owned by Xen PCI backend. Writing a string of DDDD:BB:DD.F
>> +		will cause the pciback driver to perform a slot or bus reset
>> +		if the device supports it. It also checks to make sure that
>> +		all of the devices under the bridge are owned by Xen PCI
>> +		backend.
> Why do you name this "do_flr" when you don't even try FLR, but
> go to slot or then bus reset right away.
Yes, I agree but xen toolstack has already been modified to 
consume"do_flr" attribute. Hence, we are using the
function that matches with sysfs attribute.
>
>> +static int pcistub_reset_dev(struct pci_dev *dev)
>> +{
>> +	struct xen_pcibk_dev_data *dev_data;
>> +	bool slot = false, bus = false;
>> +
>> +	if (!dev)
>> +		return -EINVAL;
>> +
>> +	dev_dbg(&dev->dev, "[%s]\n", __func__);
>> +
>> +	if (!pci_probe_reset_slot(dev->slot)) {
>> +		slot = true;
>> +	} else if (!pci_probe_reset_bus(dev->bus)) {
>> +		/* We won't attempt to reset a root bridge. */
>> +		if (!pci_is_root_bus(dev->bus))
>> +			bus = true;
>> +	}
>> +
>> +	if (!bus && !slot)
>> +		return -EOPNOTSUPP;
>> +
>> +	if (!slot) {
>> +		struct pcistub_args arg = { .dev = NULL, .dcount = 0 };
> Neither of the two initializers is really needed - just {} will do.
OK.
>
>> +		/*
>> +		 * Make sure all devices on this bus are owned by the
>> +		 * PCI backend so that we can safely reset the whole bus.
>> +		 */
>> +		pci_walk_bus(dev->bus, pcistub_search_dev, &arg);
>> +
>> +		/* All devices under the bus should be part of pcistub! */
>> +		if (arg.dev) {
>> +			dev_err(&dev->dev, "%s device on the bus is not owned by pcistub\n",
>> +				pci_name(arg.dev));
> I think "device" is superfluous here, while "the bus" could do with
> replacing by something actually identifying the bus.
I assume you want "bus" number to be printed in above msg. If yes, will do.
>
>> +			return -EBUSY;
>> +		}
>> +
>> +		dev_dbg(&dev->dev, "pcistub owns %d devices on the bus\n",
>> +			arg.dcount);
> Same here for "the bus", provided this log message is useful in the
> first place.
>
>> +	}
> Aren't you missing an "else" here? Aiui in the "slot" case it may
> still be multiple devices/functions which are affected.
Good catch.  Our original code was performing same check, both for bus 
and slot case
but somehow I removed it during internal review based on some comment.

I will post revised patch later this week. Thanks.

Cheers
GOVINDA

  reply	other threads:[~2017-11-08 15:45 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-06 17:48 Govinda Tatti
2017-11-07 11:21 ` [Xen-devel] " Roger Pau Monné
2017-11-08 15:00   ` Govinda Tatti
2017-11-08 15:09     ` Juergen Gross
2017-11-08 15:34       ` Govinda Tatti
2017-11-07 14:40 ` Jan Beulich
2017-11-08 15:44   ` Govinda Tatti [this message]
2017-11-08 17:38     ` Pasi Kärkkäinen
2017-11-08 23:26       ` Govinda Tatti
2017-11-09  8:28     ` Jan Beulich
2017-11-29 15:08       ` Govinda Tatti
2017-11-29 15:35         ` Jan Beulich
2017-11-29 16:29           ` Konrad Rzeszutek Wilk
2017-11-29 16:40             ` Jan Beulich
2017-11-29 19:26               ` Konrad Rzeszutek Wilk
2017-11-29 19:44                 ` Govinda Tatti
2017-11-30  8:29                   ` Jan Beulich
2017-11-30 13:55                     ` Govinda Tatti
2017-11-29 17:25           ` Govinda Tatti
2017-11-29 18:05             ` Pasi Kärkkäinen
2017-11-29 19:51               ` 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=8940b38d-715c-9fcb-cc74-46574d416703@oracle.com \
    --to=govinda.tatti@oracle.com \
    --cc=JBeulich@suse.com \
    --cc=boris.ostrovsky@oracle.com \
    --cc=jgross@suse.com \
    --cc=konrad.wilk@oracle.com \
    --cc=linux-kernel@vger.kernel.org \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®