
On 5/14/21 11:28 PM, Jonathon Jongsma wrote:
From: Boris Fiuczynski <fiuczy@linux.ibm.com>
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@linux.ibm.com> Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com> --- 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