On Tue, 28 Mar 2023 13:29:23 -0300 Jason Gunthorpe <jgg@xxxxxxxxxx> wrote: > On Tue, Mar 28, 2023 at 09:18:01AM -0600, Alex Williamson wrote: > > > It's a niche case, but I think it needs to be allowed. We'd still > > report the bdf for those devices, but make use of the invalid/null > > dev-id. > > IDK, it makes the whole implementation much more complicated. Instead > of just copying the current dev_set to the output and calling > vfio_pci_dev_set_resettable() we need to do something more complex.. > > Keeping the current ioctl as-is means this IOCTL can be used to do any > debugging by getting the actual BDF list. > > It means we can make the a new ioctl simple and just return the dev_id > array without these edge complications. I don't think merging two > different ioctls is helping make things simple.. OTOH, we already have an ioctl that essentially "does the right thing", we just want to swap out one return field for another. So which is more complicated, adding another ioctl that does not quite the same thing but still needing to maintain the old ioctl for detailed information, or making the old ioctl bi-modal to return the appropriate information for the type of device used to access it? > It seems like it does what qemu wants: call the new IOCTL, if it > fails, call the old IOCTL and print out the BDF list to help debug and > then exit. Userspace is already dealing with a variable length array for the return value, why would it ever want to repeat that process to get debugging info. Besides, wouldn't QEMU prefer the similarity of making the same call for groups and cdev and simply keying on the data type of one field? > On success use the data in the new ioctl to generate the machine > configuration to pass the reset grouping into the VM. > > When reset actually comes in just trigger it. "Just trigger it" is the same in either case. It seems bold to play the complexity argument when we already have a function that does 90% the correct thing where we can share much of the implementation and userspace code without duplicating, but still relying on a legacy interface for debugging. Thanks, Alex