All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Gunthorpe <jgg@nvidia.com>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: "Tian, Kevin" <kevin.tian@intel.com>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"aaronlewis@google.com" <aaronlewis@google.com>,
	"bhelgaas@google.com" <bhelgaas@google.com>,
	"dmatlack@google.com" <dmatlack@google.com>,
	"vipinsh@google.com" <vipinsh@google.com>,
	"seanjc@google.com" <seanjc@google.com>,
	"jrhilke@google.com" <jrhilke@google.com>
Subject: Re: [PATCH] vfio/pci: Separate SR-IOV VF dev_set
Date: Thu, 3 Jul 2025 20:35:33 -0300	[thread overview]
Message-ID: <20250703233533.GI1209783@nvidia.com> (raw)
In-Reply-To: <20250703142904.56924edf.alex.williamson@redhat.com>

On Thu, Jul 03, 2025 at 02:29:04PM -0600, Alex Williamson wrote:

> > > Is there any reset which doesn't disable SRIOV? According to PCIe
> > > spec both conventional reset and FLR targeting a PF clears the
> > > VF enable bit.  
> > 
> > This is my understanding, I think there might be a little hole here in
> > the vfio SRIOV support?
> 
> I wrote a test case and we don't prevent a vfio-pci userspace driver
> from resetting the PF while also having open a VF, but I'm also not
> sure what problem that causes.
> 
> pci_restore_state() calls pci_restore_iov_state(), so VF Enable does get
> cleared by the reset (we don't actively tear down SR-IOV before reset),
> but it's restored. 

Oh interesting, I did not know that happened. Makes sense.

> Also, PF->bus != VF->bus, 

Unrelated, but I've been looking at this and I haven't tried it yet,
but it looked to me like:

	bus = virtfn_add_bus(dev->bus, pci_iov_virtfn_bus(dev, id));
 [.. inside virtfn_add_bus ]
	child = pci_find_bus(pci_domain_nr(bus), busnr);
	if (child)
		return child;

Will re-use the bus of the PF if they happen to have the same bus
numbers. I thought the virtual busses come up if the VF RID calculation:

	return dev->bus->number + ((dev->devfn + dev->sriov->offset +
				    dev->sriov->stride * vf_id) >> 8);

Exceeds the primary bus?

> so VFs don't get added to the PF dev_set.
> The PF will do a hot reset with just the PF group fd and of course FLR
> doesn't require proof of ownership of other devices.  

If the semantic of the hot reset check was to require userspace to
prove ownership of everything that gets reset it does seem like any
reset on a PF should also have ownership of the VFs. I think the UUID
is probably good enough for this though?

So that seems OK.

> Should we do more here?  What problem are we solving?  Thanks,

I think it is OK. I was originally worried the SRIOV would not come
back, but since it does that part seems fine.

Jason

  reply	other threads:[~2025-07-03 23:35 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-26 22:56 [PATCH] vfio/pci: Separate SR-IOV VF dev_set Alex Williamson
2025-06-30  6:32 ` Tian, Kevin
2025-06-30 13:15 ` Yi Liu
2025-06-30 14:57   ` Alex Williamson
2025-07-02 16:00 ` Jason Gunthorpe
2025-07-02 17:50   ` Alex Williamson
2025-07-02 17:55     ` Jason Gunthorpe
2025-07-03  6:10       ` Tian, Kevin
2025-07-03 13:23         ` Jason Gunthorpe
2025-07-03 20:29           ` Alex Williamson
2025-07-03 23:35             ` Jason Gunthorpe [this message]
2025-07-15 18:42               ` Alex Williamson
2025-07-15 18:53                 ` Jason Gunthorpe

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=20250703233533.GI1209783@nvidia.com \
    --to=jgg@nvidia.com \
    --cc=aaronlewis@google.com \
    --cc=alex.williamson@redhat.com \
    --cc=bhelgaas@google.com \
    --cc=dmatlack@google.com \
    --cc=jrhilke@google.com \
    --cc=kevin.tian@intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=seanjc@google.com \
    --cc=vipinsh@google.com \
    /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.