On 5/14/21 11:28 PM, Jonathon Jongsma wrote: > From: Boris Fiuczynski <fiuczy@xxxxxxxxxxxxx> > > This adds a new element to the mdev capabilities xml schema that > represents the start policy for a defined mediated device. The actual > auto-start functionality is handled behind the scenes by mdevctl, but it > wasn't yet hooked up in libvirt. > > Signed-off-by: Boris Fiuczynski <fiuczy@xxxxxxxxxxxxx> > Signed-off-by: Jonathon Jongsma <jjongsma@xxxxxxxxxx> > --- > docs/formatnode.html.in | 10 ++++++++++ > docs/schemas/nodedev.rng | 11 ++++++++++ > src/conf/node_device_conf.c | 20 ++++++++++++++++++- > src/conf/node_device_conf.h | 12 +++++++++++ > src/libvirt_private.syms | 2 ++ > src/node_device/node_device_driver.c | 7 ++++++- > .../mdevctl-list-multiple.out.xml | 4 ++++ > ...v_3627463d_b7f0_4fea_b468_f1da537d301b.xml | 1 + > ...v_ee0b88c4_f554_4dc1_809d_b2a01e8e48ad.xml | 1 + > 9 files changed, 66 insertions(+), 2 deletions(-) > > diff --git a/src/conf/node_device_conf.h b/src/conf/node_device_conf.h > index a60562e4fe..1a31133c4c 100644 > --- a/src/conf/node_device_conf.h > +++ b/src/conf/node_device_conf.h > @@ -124,6 +124,17 @@ typedef enum { > > VIR_ENUM_DECL(virNodeDevDRM); > > +typedef enum { > + /* Keep in sync with VIR_ENUM_IMPL in node_device_conf.c */ I know you copied this from pre-existing code, but it shouldn't be there either. If this enum ever changes and corresponding VIR_ENUM_IMPL() is not updated, compiler throws an error. I admit it's very well hidden, but if you look at VIR_ENUM_IMPL() macro definition in src/util/virenum.h at the very end of it is a G_STATIC_ASSERT() which ensures that VIR_ENUM_IMPL() has as many items as the value of _LAST. > + VIR_NODE_DEV_MDEV_START_MANUAL, > + VIR_NODE_DEV_MDEV_START_AUTO, > + > + VIR_NODE_DEV_MDEV_START_LAST > +} virNodeDevMdevStartType; > + > +VIR_ENUM_DECL(virNodeDevMdevStart); > + > + > typedef struct _virNodeDevCapSystemHardware virNodeDevCapSystemHardware; > struct _virNodeDevCapSystemHardware { > char *vendor_name; > @@ -151,6 +162,7 @@ struct _virNodeDevCapMdev { > char *type; > unsigned int iommuGroupNumber; > char *uuid; > + virNodeDevMdevStartType start; > virMediatedDeviceAttr **attributes; > size_t nattributes; > }; Michal