Hi Cédric,
On 2/13/25 2:50 PM, Cédric Le Goater wrote: > 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-plateform, vfio-ap and vfio-ccw > devices are simpler. > > Organize the vfio-pci properties in topics. It would be great to have > a way to do the same for the output. > > Cc: Tony Krowiak <akrow...@linux.ibm.com> > Cc: Eric Farman <far...@linux.ibm.com> > Cc: Eric Auger <eric.au...@redhat.com> > Signed-off-by: Cédric Le Goater <c...@redhat.com> > --- > > Changes in v2: > > - Fixed version numbers > - Fixed #ifdef in vfio/ccw.c > - Addressed vfio-pci-nohotplug > - Organize the vfio-pci properties in topics > > hw/vfio/ap.c | 9 +++ > hw/vfio/ccw.c | 15 +++++ > hw/vfio/pci.c | 134 +++++++++++++++++++++++++++++++++++++++++++++ > hw/vfio/platform.c | 23 ++++++++ > 4 files changed, 181 insertions(+) > > diff --git a/hw/vfio/ap.c b/hw/vfio/ap.c > index > 30b08ad375d5ecae886c5000fbaa364799fe76d0..ec1150e5d627fce83a5a6319af471fd0aa45ae9b > 100644 > --- a/hw/vfio/ap.c > +++ b/hw/vfio/ap.c > @@ -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 = { > diff --git a/hw/vfio/ccw.c b/hw/vfio/ccw.c > index > 67bc137f9be6d43c5970c6271f3cdbfffd8a32de..242dc39660fcd028722093d637b7b64440649863 > 100644 > --- a/hw/vfio/ccw.c > +++ b/hw/vfio/ccw.c > @@ -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 = { > diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c > index > 9a55e7b77324babf7295132b08e3ba23b482a291..fbd8cf566b1cfd508ccb0042a395e3b79ba781c0 > 100644 > --- a/hw/vfio/pci.c > +++ b/hw/vfio/pci.c > @@ -3433,6 +3433,133 @@ 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, /* 2.6 */ > + "sysfsdev", > + "Host sysfs path of assigned > device"); > + /* > + * Display > + */ > + > + object_class_property_set_description(klass, /* 1.5 */ > + "x-vga", > + "Add support for VGA MMIO and I/O > port access"); > + object_class_property_set_description(klass, /* 2.12 */ > + "display", > + "Add display support"); > + 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"); > + > + /* > + * IGD > + */ > + > + object_class_property_set_description(klass, /* 2.7 */ > + "x-igd-opregion", > + "Add IGD OpRegion support for > (headless system)"); > + object_class_property_set_description(klass, /* 2.7 (See c4c45e943e51) */ > + "x-igd-gms", > + "Add Intel graphics legacy mode > device assignment support. " > + "Assign 00:02.0 from the host to > 00:02.0 in the VM"); > + > + /* > + * NVIDIA > + */ > + 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, /* 3.0 */ > + "x-no-kvm-ioeventfd", > + "Disable ioeventfd quirk > (NVIDIA)"); > + object_class_property_set_description(klass, /* 3.0 */ > + "x-no-vfio-ioeventfd", > + "Enable ioeventfd quirks to be > handled by VFIO directly. Improves performance"); > + object_class_property_set_description(klass, /* 2.11 */ > + "x-nv-gpudirect-clique", > + "Add NVIDIA GPUDirect Cliques > support"); > + > + /* > + * Migration support > + */ > + object_class_property_set_description(klass, /* 5.2 */ > + "x-pre-copy-dirty-page-tracking", > + "Disable dirty pages tracking > during iterative phase"); > + 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"); > + object_class_property_set_description(klass, /* 5.2, 8.0 non-experimetal > */ > + "enable-migration", > + "Enale device migration. Also > requires a host VFIO PCI variant " > + "driver with migration support > enabled"); > + 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. Useful for " > + "NVIDIA vGPU driver migration"); > + > + /* > + * debug, tracing > + */ > + object_class_property_set_description(klass, /* 2.4 and 2.5 */ > + "x-no-mmap", > + "Disable MMAP for device. Allows > to trace MMIO accesses"); > + object_class_property_set_description(klass, /* 2.5 */ > + "x-no-kvm-intx", > + "Bypass INTx interrupts. Allows > interrupt tracing"); > + object_class_property_set_description(klass, /* 2.5 */ > + "x-no-kvm-msi", > + "Bypass MSI interrupts. Allows > interrupt tracing"); > + object_class_property_set_description(klass, /* 2.5 */ > + "x-no-kvm-msix", > + "Bypass MSIx interrupts. Allows > interrupt tracing"); > + object_class_property_set_description(klass, /* 2.5 */ > + "x-pci-vendor-id", > + "Set emulated PCI Vendor ID. > Allows testing quirks"); > + object_class_property_set_description(klass, /* 2.5 */ > + "x-pci-device-id", > + "Set emulated PCI device ID. > Allows testing quirks"); > + > + /* > + * other > + */ > + object_class_property_set_description(klass, /* 8.1 */ > + "vf-token", > + "Add support for VF token among PF > and VFs (Linux 5.7+)"); > + object_class_property_set_description(klass, /* 1.3 */ > + "x-intx-mmap-timeout-ms", > + "Timeout value in milliseconds to > re-enable BAR mapping when under " > + "INTx interrupts. Improves > performance"); > + object_class_property_set_description(klass, /* 2.3 */ > + "x-req", > + "Add device request notification > support (Linux 4.0+)"); > + object_class_property_set_description(klass, /* 3.1 */ > + "x-balloon-allowed", > + "Allow devices to opt-in for > ballooning"); > + object_class_property_set_description(klass, /* 2.5 */ > + "x-pci-sub-vendor-id", > + "Set emulated PCI Sub-vendor ID"); > + object_class_property_set_description(klass, /* 2.5 */ > + "x-pci-sub-device-id", > + "Set emulated PCI Sub-device ID"); > + object_class_property_set_description(klass, /* 2.12 */ > + "x-msix-relocation", > + "Allow relocating MSI-X MMIO on > systems which page size is larger " > + "than the PCI spec recommendation. > Mostly for sPAPR"); > +#ifdef CONFIG_IOMMUFD > + object_class_property_set_description(klass, /* 9.0 */ > + "iommufd", > + "Set host IOMMUFD backend device > "); > +#endif > } > > static const TypeInfo vfio_pci_dev_info = { > @@ -3461,6 +3588,13 @@ 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", > + "Add ramfb support"); > + object_class_property_set_description(klass, /* 8.2 */ > + "x-ramfb-migrate", > + "Add ramfb migration support"); > + > } > > static const TypeInfo vfio_pci_nohotplug_dev_info = { > diff --git a/hw/vfio/platform.c b/hw/vfio/platform.c > index > 1070a2113a17edb9ebafb5066e51ee2bc52a767d..8e646e543692221e86b16fecd8bf40316f064a7d > 100644 > --- a/hw/vfio/platform.c > +++ b/hw/vfio/platform.c > @@ -674,6 +674,29 @@ static void vfio_platform_class_init(ObjectClass *klass, > void *data) > set_bit(DEVICE_CATEGORY_MISC, dc->categories); > /* Supported by TYPE_VIRT_MACHINE */ > dc->user_creatable = true; > + > + object_class_property_set_description(klass, /* 2.4 */ > + "host", > + "Host device name of assigned > device"); > + object_class_property_set_description(klass, /* 2.6 */ > + "sysfsdev", > + "Host sysfs path 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"); > + object_class_property_set_description(klass, /* 2.4 */ > + "mmap-timeout-ms", > + "Timeout value in milliseconds to > re-enable BAR mapping"); > + object_class_property_set_description(klass, /* 2.4 */ > + "x-irqfd", > + "Use irqfd for IRQ handling"); nit: why not reorder by release of introduction then? Same for other devices. Thanks Eric > + > +#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 = {