On Wed, Apr 24, 2019 at 04:24:01PM +0100, Stefan Hajnoczi wrote: > How to use .base_name, .generic_name, .transitional_name, and > .non_transitional_name can be confusing. > > Existing devices have .generic_name but its behavior is somewhat magic. > > Devices added to new versions of the VIRTIO specification should forego > transitional mode completely and always operate in non-transitional mode > because there are no existing drivers for them that require backwards > compatibility. > > This patch adds comments that hopefully make it easier for developers to > decide how to fill out VirtioPCIDeviceTypeInfo. > > Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> > --- > hw/virtio/virtio-pci.h | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/hw/virtio/virtio-pci.h b/hw/virtio/virtio-pci.h > index 18581854ca..debdee28b3 100644 > --- a/hw/virtio/virtio-pci.h > +++ b/hw/virtio/virtio-pci.h > @@ -209,7 +209,9 @@ typedef struct VirtioPCIDeviceTypeInfo { > * Implements both INTERFACE_PCIE_DEVICE and > INTERFACE_CONVENTIONAL_PCI_DEVICE, > * but PCI Express is supported only in non-transitional mode. > * > - * The only type implemented by QEMU 3.1 and older. > + * The only type implemented by QEMU 3.1 and older. This type is less > + * explicit than the transitional and non-transitional device types. Its > + * behavior can be affected by machine type compat properties.
I'm not sure what you mean here. All types can be affected by machine type compat properties when necessary, don't they? > */ > const char *generic_name; > /* > @@ -222,6 +224,9 @@ typedef struct VirtioPCIDeviceTypeInfo { > * The non-transitional device type. Optional. > * > * Implements INTERFACE_CONVENTIONAL_PCI_DEVICE only. > + * > + * New virtio device types should only define this and base_name, thereby > + * allowing only non-transitional mode. > */ > const char *non_transitional_name; > > -- > 2.20.1 > -- Eduardo