On Thu, Mar 11, 2021 at 04:22:34PM -0400, Jason Gunthorpe wrote: > On Thu, Mar 11, 2021 at 12:16:02PM -0700, Keith Busch wrote: > > On Thu, Mar 11, 2021 at 12:17:29PM -0600, Bjorn Helgaas wrote: > > > On Wed, Mar 10, 2021 at 03:34:01PM -0800, Alexander Duyck wrote: > > > > > > > > I'm not so much worried about management software as the fact that > > > > this is a vendor specific implementation detail that is shaping how > > > > the kernel interfaces are meant to work. Other than the mlx5 I don't > > > > know if there are any other vendors really onboard with this sort of > > > > solution. > > > > > > I know this is currently vendor-specific, but I thought the value > > > proposition of dynamic configuration of VFs for different clients > > > sounded compelling enough that other vendors would do something > > > similar. But I'm not an SR-IOV guy and have no vendor insight, so > > > maybe that's not the case? > > > > NVMe has a similar feature defined by the standard where a PF controller can > > dynamically assign MSIx vectors to VFs. The whole thing is managed in user > > space with an ioctl, though. I guess we could wire up the driver to handle it > > through this sysfs interface too, but I think the protocol specific tooling is > > more appropriate for nvme. > > Really? Why not share a common uAPI? We associate interrupt vectors with other dynamically assigned nvme specific resources (IO queues), and these are not always allocated 1:1. A common uAPI for MSIx only gets us half way to configuring the VFs for that particular driver. > Do you have a standards reference for this? Yes, sections 5.22 and 8.5 from this spec: https://nvmexpress.org/wp-content/uploads/NVM-Express-1_4a-2020.03.09-Ratified.pdf An example of open source tooling implementing this is nvme-cli's "nvme virt-mgmt" command.