mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 00:33:55 -06:00
vfio: Add property documentation
Investigate the git history to uncover when and why the VFIO properties were introduced and update the models. This is mostly targeting vfio-pci device, since vfio-platform, vfio-ap and vfio-ccw devices are simpler. Sort the properties based on the QEMU version in which they were introduced. Cc: Tony Krowiak <akrowiak@linux.ibm.com> Cc: Eric Farman <farman@linux.ibm.com> Cc: Eric Auger <eric.auger@redhat.com> Reviewed-by: Kirti Wankhede <kwankhede@nvidia.com> Reviewed-by: Anthony Krowiak <akrowiak@linux.ibm.com> Reviewed-by: Eric Farman <farman@linux.ibm.com> # vfio-ccw Reviewed-by: Alex Williamson <alex.williamson@redhat.com> Reviewed-by: Eric Auger <eric.auger@redhat.com> Link: https://lore.kernel.org/qemu-devel/20250217173455.449983-1-clg@redhat.com Signed-off-by: Cédric Le Goater <clg@redhat.com>
This commit is contained in:
parent
e8a0110293
commit
4526687bf1
4 changed files with 173 additions and 0 deletions
|
@ -257,6 +257,15 @@ static void vfio_ap_class_init(ObjectClass *klass, void *data)
|
|||
dc->hotpluggable = true;
|
||||
device_class_set_legacy_reset(dc, vfio_ap_reset);
|
||||
dc->bus_type = TYPE_AP_BUS;
|
||||
|
||||
object_class_property_set_description(klass, /* 3.1 */
|
||||
"sysfsdev",
|
||||
"Host sysfs path of assigned device");
|
||||
#ifdef CONFIG_IOMMUFD
|
||||
object_class_property_set_description(klass, /* 9.0 */
|
||||
"iommufd",
|
||||
"Set host IOMMUFD backend device");
|
||||
#endif
|
||||
}
|
||||
|
||||
static const TypeInfo vfio_ap_info = {
|
||||
|
|
|
@ -717,6 +717,21 @@ static void vfio_ccw_class_init(ObjectClass *klass, void *data)
|
|||
cdc->handle_halt = vfio_ccw_handle_halt;
|
||||
cdc->handle_clear = vfio_ccw_handle_clear;
|
||||
cdc->handle_store = vfio_ccw_handle_store;
|
||||
|
||||
object_class_property_set_description(klass, /* 2.10 */
|
||||
"sysfsdev",
|
||||
"Host sysfs path of assigned device");
|
||||
object_class_property_set_description(klass, /* 3.0 */
|
||||
"force-orb-pfch",
|
||||
"Force unlimited prefetch");
|
||||
#ifdef CONFIG_IOMMUFD
|
||||
object_class_property_set_description(klass, /* 9.0 */
|
||||
"iommufd",
|
||||
"Set host IOMMUFD backend device");
|
||||
#endif
|
||||
object_class_property_set_description(klass, /* 9.2 */
|
||||
"loadparm",
|
||||
"Define which devices that can be used for booting");
|
||||
}
|
||||
|
||||
static const TypeInfo vfio_ccw_info = {
|
||||
|
|
125
hw/vfio/pci.c
125
hw/vfio/pci.c
|
@ -3433,6 +3433,122 @@ static void vfio_pci_dev_class_init(ObjectClass *klass, void *data)
|
|||
pdc->exit = vfio_exitfn;
|
||||
pdc->config_read = vfio_pci_read_config;
|
||||
pdc->config_write = vfio_pci_write_config;
|
||||
|
||||
object_class_property_set_description(klass, /* 1.3 */
|
||||
"host",
|
||||
"Host PCI address [domain:]<bus:slot.function> of assigned device");
|
||||
object_class_property_set_description(klass, /* 1.3 */
|
||||
"x-intx-mmap-timeout-ms",
|
||||
"When EOI is not provided by KVM/QEMU, wait time "
|
||||
"(milliseconds) to re-enable device direct access "
|
||||
"after INTx (DEBUG)");
|
||||
object_class_property_set_description(klass, /* 1.5 */
|
||||
"x-vga",
|
||||
"Expose VGA address spaces for device");
|
||||
object_class_property_set_description(klass, /* 2.3 */
|
||||
"x-req",
|
||||
"Disable device request notification support (DEBUG)");
|
||||
object_class_property_set_description(klass, /* 2.4 and 2.5 */
|
||||
"x-no-mmap",
|
||||
"Disable MMAP for device. Allows to trace MMIO "
|
||||
"accesses (DEBUG)");
|
||||
object_class_property_set_description(klass, /* 2.5 */
|
||||
"x-no-kvm-intx",
|
||||
"Disable direct VFIO->KVM INTx injection. Allows to "
|
||||
"trace INTx interrupts (DEBUG)");
|
||||
object_class_property_set_description(klass, /* 2.5 */
|
||||
"x-no-kvm-msi",
|
||||
"Disable direct VFIO->KVM MSI injection. Allows to "
|
||||
"trace MSI interrupts (DEBUG)");
|
||||
object_class_property_set_description(klass, /* 2.5 */
|
||||
"x-no-kvm-msix",
|
||||
"Disable direct VFIO->KVM MSIx injection. Allows to "
|
||||
"trace MSIx interrupts (DEBUG)");
|
||||
object_class_property_set_description(klass, /* 2.5 */
|
||||
"x-pci-vendor-id",
|
||||
"Override PCI Vendor ID with provided value (DEBUG)");
|
||||
object_class_property_set_description(klass, /* 2.5 */
|
||||
"x-pci-device-id",
|
||||
"Override PCI device ID with provided value (DEBUG)");
|
||||
object_class_property_set_description(klass, /* 2.5 */
|
||||
"x-pci-sub-vendor-id",
|
||||
"Override PCI Subsystem Vendor ID with provided value "
|
||||
"(DEBUG)");
|
||||
object_class_property_set_description(klass, /* 2.5 */
|
||||
"x-pci-sub-device-id",
|
||||
"Override PCI Subsystem Device ID with provided value "
|
||||
"(DEBUG)");
|
||||
object_class_property_set_description(klass, /* 2.6 */
|
||||
"sysfsdev",
|
||||
"Host sysfs path of assigned device");
|
||||
object_class_property_set_description(klass, /* 2.7 */
|
||||
"x-igd-opregion",
|
||||
"Expose host IGD OpRegion to guest");
|
||||
object_class_property_set_description(klass, /* 2.7 (See c4c45e943e51) */
|
||||
"x-igd-gms",
|
||||
"Override IGD data stolen memory size (32MiB units)");
|
||||
object_class_property_set_description(klass, /* 2.11 */
|
||||
"x-nv-gpudirect-clique",
|
||||
"Add NVIDIA GPUDirect capability indicating P2P DMA "
|
||||
"clique for device [0-15]");
|
||||
object_class_property_set_description(klass, /* 2.12 */
|
||||
"x-no-geforce-quirks",
|
||||
"Disable GeForce quirks (for NVIDIA Quadro/GRID/Tesla). "
|
||||
"Improves performance");
|
||||
object_class_property_set_description(klass, /* 2.12 */
|
||||
"display",
|
||||
"Enable display support for device, ex. vGPU");
|
||||
object_class_property_set_description(klass, /* 2.12 */
|
||||
"x-msix-relocation",
|
||||
"Specify MSI-X MMIO relocation to the end of specified "
|
||||
"existing BAR or new BAR to avoid virtualization overhead "
|
||||
"due to adjacent device registers");
|
||||
object_class_property_set_description(klass, /* 3.0 */
|
||||
"x-no-kvm-ioeventfd",
|
||||
"Disable registration of ioeventfds with KVM (DEBUG)");
|
||||
object_class_property_set_description(klass, /* 3.0 */
|
||||
"x-no-vfio-ioeventfd",
|
||||
"Disable linking of KVM ioeventfds to VFIO ioeventfds "
|
||||
"(DEBUG)");
|
||||
object_class_property_set_description(klass, /* 3.1 */
|
||||
"x-balloon-allowed",
|
||||
"Override allowing ballooning with device (DEBUG, DANGER)");
|
||||
object_class_property_set_description(klass, /* 3.2 */
|
||||
"xres",
|
||||
"Set X display resolution the vGPU should use");
|
||||
object_class_property_set_description(klass, /* 3.2 */
|
||||
"yres",
|
||||
"Set Y display resolution the vGPU should use");
|
||||
object_class_property_set_description(klass, /* 5.2 */
|
||||
"x-pre-copy-dirty-page-tracking",
|
||||
"Disable dirty pages tracking during iterative phase "
|
||||
"(DEBUG)");
|
||||
object_class_property_set_description(klass, /* 5.2, 8.0 non-experimetal */
|
||||
"enable-migration",
|
||||
"Enale device migration. Also requires a host VFIO PCI "
|
||||
"variant or mdev driver with migration support enabled");
|
||||
object_class_property_set_description(klass, /* 8.1 */
|
||||
"vf-token",
|
||||
"Specify UUID VF token. Required for VF when PF is owned "
|
||||
"by another VFIO driver");
|
||||
#ifdef CONFIG_IOMMUFD
|
||||
object_class_property_set_description(klass, /* 9.0 */
|
||||
"iommufd",
|
||||
"Set host IOMMUFD backend device");
|
||||
#endif
|
||||
object_class_property_set_description(klass, /* 9.1 */
|
||||
"x-device-dirty-page-tracking",
|
||||
"Disable device dirty page tracking and use "
|
||||
"container-based dirty page tracking (DEBUG)");
|
||||
object_class_property_set_description(klass, /* 9.1 */
|
||||
"migration-events",
|
||||
"Emit VFIO migration QAPI event when a VFIO device "
|
||||
"changes its migration state. For management applications");
|
||||
object_class_property_set_description(klass, /* 9.1 */
|
||||
"skip-vsc-check",
|
||||
"Skip config space check for Vendor Specific Capability. "
|
||||
"Setting to false will enforce strict checking of VSC content "
|
||||
"(DEBUG)");
|
||||
}
|
||||
|
||||
static const TypeInfo vfio_pci_dev_info = {
|
||||
|
@ -3461,6 +3577,15 @@ static void vfio_pci_nohotplug_dev_class_init(ObjectClass *klass, void *data)
|
|||
|
||||
device_class_set_props(dc, vfio_pci_dev_nohotplug_properties);
|
||||
dc->hotpluggable = false;
|
||||
|
||||
object_class_property_set_description(klass, /* 3.1 */
|
||||
"ramfb",
|
||||
"Enable ramfb to provide pre-boot graphics for devices "
|
||||
"enabling display option");
|
||||
object_class_property_set_description(klass, /* 8.2 */
|
||||
"x-ramfb-migrate",
|
||||
"Override default migration support for ramfb support "
|
||||
"(DEBUG)");
|
||||
}
|
||||
|
||||
static const TypeInfo vfio_pci_nohotplug_dev_info = {
|
||||
|
|
|
@ -672,6 +672,30 @@ static void vfio_platform_class_init(ObjectClass *klass, void *data)
|
|||
dc->desc = "VFIO-based platform device assignment";
|
||||
sbc->connect_irq_notifier = vfio_start_irqfd_injection;
|
||||
set_bit(DEVICE_CATEGORY_MISC, dc->categories);
|
||||
|
||||
object_class_property_set_description(klass, /* 2.4 */
|
||||
"host",
|
||||
"Host device name of assigned device");
|
||||
object_class_property_set_description(klass, /* 2.4 and 2.5 */
|
||||
"x-no-mmap",
|
||||
"Disable MMAP for device. Allows to trace MMIO "
|
||||
"accesses (DEBUG)");
|
||||
object_class_property_set_description(klass, /* 2.4 */
|
||||
"mmap-timeout-ms",
|
||||
"When EOI is not provided by KVM/QEMU, wait time "
|
||||
"(milliseconds) to re-enable device direct access "
|
||||
"after level interrupt (DEBUG)");
|
||||
object_class_property_set_description(klass, /* 2.4 */
|
||||
"x-irqfd",
|
||||
"Allow disabling irqfd support (DEBUG)");
|
||||
object_class_property_set_description(klass, /* 2.6 */
|
||||
"sysfsdev",
|
||||
"Host sysfs path of assigned device");
|
||||
#ifdef CONFIG_IOMMUFD
|
||||
object_class_property_set_description(klass, /* 9.0 */
|
||||
"iommufd",
|
||||
"Set host IOMMUFD backend device");
|
||||
#endif
|
||||
}
|
||||
|
||||
static const TypeInfo vfio_platform_dev_info = {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue