
On 8/23/23 3:52 AM, Michal Prívozník wrote:
On 8/21/23 21:32, Laine Stump wrote:
There can be many different drivers that are of the type "VFIO", so add the driver name to the object and allow getting/setting it.
Signed-off-by: Laine Stump <laine@redhat.com> --- src/libvirt_private.syms | 2 ++ src/util/virpci.c | 16 ++++++++++++++++ src/util/virpci.h | 3 +++ 3 files changed, 21 insertions(+)
diff --git a/src/util/virpci.c b/src/util/virpci.c index 88a020fb86..103bc4254e 100644 --- a/src/util/virpci.c +++ b/src/util/virpci.c
@@ -1580,6 +1583,19 @@ virPCIDeviceGetStubDriverType(virPCIDevice *dev) return dev->stubDriverType; }
+void +virPCIDeviceSetStubDriverName(virPCIDevice *dev, + const char *driverName) +{ + dev->stubDriverName = g_strdup(driverName); +}
I think it's worth freeing dev->stubDriverName before setting another one. Please consider squashing this in:
diff --git i/src/util/virpci.c w/src/util/virpci.c index 3f207a24f3..15e53e6749 100644 --- i/src/util/virpci.c +++ w/src/util/virpci.c @@ -1586,8 +1586,9 @@ virPCIDeviceGetStubDriverType(virPCIDevice *dev)
void virPCIDeviceSetStubDriverName(virPCIDevice *dev, - const char *driverName) + const char *driverName) { + g_free(dev->stubDriverName); dev->stubDriverName = g_strdup(driverName); }
Sure, that seems prudent.
And just a thought (maybe it was covered in earlier discussions, maybe it'll be covered in next patches) - what about the following scenario:
virPCIDeviceSetStubDriverType(&dev, VIR_PCI_STUB_DRIVER_VFIO); virPCIDeviceSetStubDriverName(&dev, "blah");
Should the latter reset dev->stubDriverType to _NONE? Similarly, what if the two are reversed? But I guess we can always fine tune this later.
Although the two settings are conceptually intertwined, I think the APIs should be orthogonal, with the setting of one not affecting the other; otherwise people would get confused about which one should come first and/or be surprised when it didn't do what they wanted.