Pull VFIO update from Alex Williamson: "VFIO updates include safer default file flags for VFIO device fds, an external user interface exported to allow other modules to hold references to VFIO groups, a fix to test for extended config space on PCIe and PCI-x, and new hot reset interfaces for PCI devices which allows the user to do PCI bus/slot resets when all of the devices affected by the reset are owned by the user. For this last feature, the PCI bus reset interface, I depend on changes already merged from Bjorn's PCI pull request. I therefore merged my tree up to commit cb3e433, which I think was the correct action, but as Stephen Rothwell noted, I failed to provide a commit message indicating why the merge was required. Sorry for that. Thanks, Alex" * tag 'vfio-v3.12-rc0' of git://github.com/awilliam/linux-vfio: vfio: fix documentation vfio-pci: PCI hot reset interface vfio-pci: Test for extended config space vfio-pci: Use fdget() rather than eventfd_fget() vfio: Add O_CLOEXEC flag to vfio device fd vfio: use get_unused_fd_flags(0) instead of get_unused_fd() vfio: add external user support
Showing the changes to include/uapi/linux (1 of 7 files). Show all
Unified · Split
| @@ -324,6 +324,44 @@ enum { · 323 unmodified lines | ||
| 324 | 324 | VFIO_PCI_NUM_IRQS |
| 325 | 325 | }; |
| 326 | 326 | |
| 327 | +/** | |
| 328 | + * VFIO_DEVICE_GET_PCI_HOT_RESET_INFO - _IORW(VFIO_TYPE, VFIO_BASE + 12, | |
| 329 | + * struct vfio_pci_hot_reset_info) | |
| 330 | + * | |
| 331 | + * Return: 0 on success, -errno on failure: | |
| 332 | + * -enospc = insufficient buffer, -enodev = unsupported for device. | |
| 333 | + */ | |
| 334 | +struct vfio_pci_dependent_device { | |
| 335 | + __u32 group_id; | |
| 336 | + __u16 segment; | |
| 337 | + __u8 bus; | |
| 338 | + __u8 devfn; /* Use PCI_SLOT/PCI_FUNC */ | |
| 339 | +}; | |
| 340 | + | |
| 341 | +struct vfio_pci_hot_reset_info { | |
| 342 | + __u32 argsz; | |
| 343 | + __u32 flags; | |
| 344 | + __u32 count; | |
| 345 | + struct vfio_pci_dependent_device devices[]; | |
| 346 | +}; | |
| 347 | + | |
| 348 | +#define VFIO_DEVICE_GET_PCI_HOT_RESET_INFO _IO(VFIO_TYPE, VFIO_BASE + 12) | |
| 349 | + | |
| 350 | +/** | |
| 351 | + * VFIO_DEVICE_PCI_HOT_RESET - _IOW(VFIO_TYPE, VFIO_BASE + 13, | |
| 352 | + * struct vfio_pci_hot_reset) | |
| 353 | + * | |
| 354 | + * Return: 0 on success, -errno on failure. | |
| 355 | + */ | |
| 356 | +struct vfio_pci_hot_reset { | |
| 357 | + __u32 argsz; | |
| 358 | + __u32 flags; | |
| 359 | + __u32 count; | |
| 360 | + __s32 group_fds[]; | |
| 361 | +}; | |
| 362 | + | |
| 363 | +#define VFIO_DEVICE_PCI_HOT_RESET _IO(VFIO_TYPE, VFIO_BASE + 13) | |
| 364 | + | |
| 327 | 365 | /* -------- API for Type1 VFIO IOMMU -------- */ |
| 328 | 366 | |
| 329 | 367 | /** |