!261 libvirt update to version 6.2.0-60
From: @JiaboFeng Reviewed-by: @mdsc Signed-off-by: @mdsc
This commit is contained in:
commit
9eddeae9c7
322
Include-vdpa-devices-in-node-device-list.patch
Normal file
322
Include-vdpa-devices-in-node-device-list.patch
Normal file
@ -0,0 +1,322 @@
|
||||
From e8597e64126a5cf77fbb9422977268878a6376b6 Mon Sep 17 00:00:00 2001
|
||||
From: AlexChen <alex.chen@huawei.com>
|
||||
Date: Wed, 14 Oct 2020 12:08:30 -0500
|
||||
Subject: [PATCH] Include vdpa devices in node device list
|
||||
|
||||
The current udev node device driver ignores all events related to vdpa
|
||||
devices. Since libvirt now supports vDPA network devices, include these
|
||||
devices in the device list.
|
||||
|
||||
Example output:
|
||||
|
||||
virsh # nodedev-list
|
||||
[...ommitted long list of nodedevs...]
|
||||
vdpa_vdpa0
|
||||
|
||||
virsh # nodedev-dumpxml vdpa_vdpa0
|
||||
<device>
|
||||
<name>vdpa_vdpa0</name>
|
||||
<path>/sys/devices/vdpa0</path>
|
||||
<parent>computer</parent>
|
||||
<driver>
|
||||
<name>vhost_vdpa</name>
|
||||
</driver>
|
||||
<capability type='vdpa'>
|
||||
<chardev>/dev/vhost-vdpa-0</chardev>
|
||||
</capability>
|
||||
</device>
|
||||
|
||||
NOTE: normally the 'parent' would be a PCI device instead of 'computer',
|
||||
but this example output is from the vdpa_sim kernel module, so it
|
||||
doesn't have a normal parent device.
|
||||
|
||||
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
|
||||
Signed-off-by: AlexChen <alex.chen@huawei.com>
|
||||
---
|
||||
docs/formatnode.html.in | 9 ++++++
|
||||
docs/schemas/nodedev.rng | 10 ++++++
|
||||
include/libvirt/libvirt-nodedev.h | 1 +
|
||||
src/conf/node_device_conf.c | 13 ++++++++
|
||||
src/conf/node_device_conf.h | 11 ++++++-
|
||||
src/conf/virnodedeviceobj.c | 4 ++-
|
||||
src/node_device/node_device_udev.c | 51 ++++++++++++++++++++++++++++++
|
||||
tools/virsh-nodedev.c | 3 ++
|
||||
8 files changed, 100 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/docs/formatnode.html.in b/docs/formatnode.html.in
|
||||
index c2a8f8fb7a..573391ef0f 100644
|
||||
--- a/docs/formatnode.html.in
|
||||
+++ b/docs/formatnode.html.in
|
||||
@@ -341,6 +341,15 @@
|
||||
<dd>The device number.</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
+ <dt><code>vdpa</code></dt>
|
||||
+ <dd>Describes a virtual datapath acceleration (vDPA) network device.
|
||||
+ <span class="since">Since 6.9.0</span>. Sub-elements include:
|
||||
+ <dl>
|
||||
+ <dt><code>chardev</code></dt>
|
||||
+ <dd>The path to the character device that is used to access the
|
||||
+ device.</dd>
|
||||
+ </dl>
|
||||
+ </dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
diff --git a/docs/schemas/nodedev.rng b/docs/schemas/nodedev.rng
|
||||
index fe6ffa0b53..4f197b327a 100644
|
||||
--- a/docs/schemas/nodedev.rng
|
||||
+++ b/docs/schemas/nodedev.rng
|
||||
@@ -85,6 +85,7 @@
|
||||
<ref name="capdrm"/>
|
||||
<ref name="capmdev"/>
|
||||
<ref name="capccwdev"/>
|
||||
+ <ref name="capvdpa"/>
|
||||
</choice>
|
||||
</element>
|
||||
</define>
|
||||
@@ -651,6 +652,15 @@
|
||||
</element>
|
||||
</define>
|
||||
|
||||
+ <define name="capvdpa">
|
||||
+ <attribute name="type">
|
||||
+ <value>vdpa</value>
|
||||
+ </attribute>
|
||||
+ <element name="chardev">
|
||||
+ <ref name="path"/>
|
||||
+ </element>
|
||||
+ </define>
|
||||
+
|
||||
<define name='address'>
|
||||
<element name='address'>
|
||||
<attribute name='domain'><ref name='hexuint'/></attribute>
|
||||
diff --git a/include/libvirt/libvirt-nodedev.h b/include/libvirt/libvirt-nodedev.h
|
||||
index a2ad61ac6d..4129f1afed 100644
|
||||
--- a/include/libvirt/libvirt-nodedev.h
|
||||
+++ b/include/libvirt/libvirt-nodedev.h
|
||||
@@ -81,6 +81,7 @@ typedef enum {
|
||||
VIR_CONNECT_LIST_NODE_DEVICES_CAP_MDEV_TYPES = 1 << 13, /* Capable of mediated devices */
|
||||
VIR_CONNECT_LIST_NODE_DEVICES_CAP_MDEV = 1 << 14, /* Mediated device */
|
||||
VIR_CONNECT_LIST_NODE_DEVICES_CAP_CCW_DEV = 1 << 15, /* CCW device */
|
||||
+ VIR_CONNECT_LIST_NODE_DEVICES_CAP_VDPA = 1 << 17, /* vDPA device */
|
||||
} virConnectListAllNodeDeviceFlags;
|
||||
|
||||
int virConnectListAllNodeDevices (virConnectPtr conn,
|
||||
diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c
|
||||
index d64f6d3986..41d7c7d12e 100644
|
||||
--- a/src/conf/node_device_conf.c
|
||||
+++ b/src/conf/node_device_conf.c
|
||||
@@ -65,6 +65,7 @@ VIR_ENUM_IMPL(virNodeDevCap,
|
||||
"mdev_types",
|
||||
"mdev",
|
||||
"ccw",
|
||||
+ "vdpa",
|
||||
);
|
||||
|
||||
VIR_ENUM_IMPL(virNodeDevNetCap,
|
||||
@@ -500,6 +501,12 @@ virNodeDeviceCapStorageDefFormat(virBufferPtr buf,
|
||||
virBufferAddLit(buf, "<capability type='hotpluggable'/>\n");
|
||||
}
|
||||
|
||||
+static void
|
||||
+virNodeDeviceCapVDPADefFormat(virBufferPtr buf,
|
||||
+ const virNodeDevCapData *data)
|
||||
+{
|
||||
+ virBufferEscapeString(buf, "<chardev>%s</chardev>\n", data->vdpa.chardev);
|
||||
+}
|
||||
|
||||
char *
|
||||
virNodeDeviceDefFormat(const virNodeDeviceDef *def)
|
||||
@@ -595,6 +602,9 @@ virNodeDeviceDefFormat(const virNodeDeviceDef *def)
|
||||
virBufferAsprintf(&buf, "<devno>0x%04x</devno>\n",
|
||||
data->ccw_dev.devno);
|
||||
break;
|
||||
+ case VIR_NODE_DEV_CAP_VDPA:
|
||||
+ virNodeDeviceCapVDPADefFormat(&buf, data);
|
||||
+ break;
|
||||
case VIR_NODE_DEV_CAP_MDEV_TYPES:
|
||||
case VIR_NODE_DEV_CAP_FC_HOST:
|
||||
case VIR_NODE_DEV_CAP_VPORTS:
|
||||
@@ -1897,6 +1907,7 @@ virNodeDevCapsDefParseXML(xmlXPathContextPtr ctxt,
|
||||
case VIR_NODE_DEV_CAP_FC_HOST:
|
||||
case VIR_NODE_DEV_CAP_VPORTS:
|
||||
case VIR_NODE_DEV_CAP_SCSI_GENERIC:
|
||||
+ case VIR_NODE_DEV_CAP_VDPA:
|
||||
case VIR_NODE_DEV_CAP_LAST:
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unknown capability type '%d' for '%s'"),
|
||||
@@ -2209,6 +2220,7 @@ virNodeDevCapsDefFree(virNodeDevCapsDefPtr caps)
|
||||
case VIR_NODE_DEV_CAP_FC_HOST:
|
||||
case VIR_NODE_DEV_CAP_VPORTS:
|
||||
case VIR_NODE_DEV_CAP_CCW_DEV:
|
||||
+ case VIR_NODE_DEV_CAP_VDPA:
|
||||
case VIR_NODE_DEV_CAP_LAST:
|
||||
/* This case is here to shutup the compiler */
|
||||
break;
|
||||
@@ -2262,6 +2274,7 @@ virNodeDeviceUpdateCaps(virNodeDeviceDefPtr def)
|
||||
case VIR_NODE_DEV_CAP_MDEV_TYPES:
|
||||
case VIR_NODE_DEV_CAP_MDEV:
|
||||
case VIR_NODE_DEV_CAP_CCW_DEV:
|
||||
+ case VIR_NODE_DEV_CAP_VDPA:
|
||||
case VIR_NODE_DEV_CAP_LAST:
|
||||
break;
|
||||
}
|
||||
diff --git a/src/conf/node_device_conf.h b/src/conf/node_device_conf.h
|
||||
index 9e4b0847fb..a14eaef742 100644
|
||||
--- a/src/conf/node_device_conf.h
|
||||
+++ b/src/conf/node_device_conf.h
|
||||
@@ -64,6 +64,7 @@ typedef enum {
|
||||
VIR_NODE_DEV_CAP_MDEV_TYPES, /* Device capable of mediated devices */
|
||||
VIR_NODE_DEV_CAP_MDEV, /* Mediated device */
|
||||
VIR_NODE_DEV_CAP_CCW_DEV, /* s390 CCW device */
|
||||
+ VIR_NODE_DEV_CAP_VDPA, /* vDPA device */
|
||||
|
||||
VIR_NODE_DEV_CAP_LAST
|
||||
} virNodeDevCapType;
|
||||
@@ -271,6 +272,12 @@ struct _virNodeDevCapCCW {
|
||||
unsigned int devno;
|
||||
};
|
||||
|
||||
+typedef struct _virNodeDevCapVDPA virNodeDevCapVDPA;
|
||||
+typedef virNodeDevCapVDPA *virNodeDevCapVDPAPtr;
|
||||
+struct _virNodeDevCapVDPA {
|
||||
+ char *chardev;
|
||||
+};
|
||||
+
|
||||
typedef struct _virNodeDevCapData virNodeDevCapData;
|
||||
typedef virNodeDevCapData *virNodeDevCapDataPtr;
|
||||
struct _virNodeDevCapData {
|
||||
@@ -289,6 +296,7 @@ struct _virNodeDevCapData {
|
||||
virNodeDevCapDRM drm;
|
||||
virNodeDevCapMdev mdev;
|
||||
virNodeDevCapCCW ccw_dev;
|
||||
+ virNodeDevCapVDPA vdpa;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -364,7 +372,8 @@ virNodeDevCapsDefFree(virNodeDevCapsDefPtr caps);
|
||||
VIR_CONNECT_LIST_NODE_DEVICES_CAP_DRM | \
|
||||
VIR_CONNECT_LIST_NODE_DEVICES_CAP_MDEV_TYPES | \
|
||||
VIR_CONNECT_LIST_NODE_DEVICES_CAP_MDEV | \
|
||||
- VIR_CONNECT_LIST_NODE_DEVICES_CAP_CCW_DEV)
|
||||
+ VIR_CONNECT_LIST_NODE_DEVICES_CAP_CCW_DEV | \
|
||||
+ VIR_CONNECT_LIST_NODE_DEVICES_CAP_VDPA)
|
||||
|
||||
int
|
||||
virNodeDeviceGetSCSIHostCaps(virNodeDevCapSCSIHostPtr scsi_host);
|
||||
diff --git a/src/conf/virnodedeviceobj.c b/src/conf/virnodedeviceobj.c
|
||||
index 3a34a324ca..be111741bf 100644
|
||||
--- a/src/conf/virnodedeviceobj.c
|
||||
+++ b/src/conf/virnodedeviceobj.c
|
||||
@@ -676,6 +676,7 @@ virNodeDeviceObjHasCap(const virNodeDeviceObj *obj,
|
||||
case VIR_NODE_DEV_CAP_MDEV_TYPES:
|
||||
case VIR_NODE_DEV_CAP_MDEV:
|
||||
case VIR_NODE_DEV_CAP_CCW_DEV:
|
||||
+ case VIR_NODE_DEV_CAP_VDPA:
|
||||
case VIR_NODE_DEV_CAP_LAST:
|
||||
break;
|
||||
}
|
||||
@@ -826,7 +827,8 @@ virNodeDeviceObjMatch(virNodeDeviceObjPtr obj,
|
||||
MATCH(DRM) ||
|
||||
MATCH(MDEV_TYPES) ||
|
||||
MATCH(MDEV) ||
|
||||
- MATCH(CCW_DEV)))
|
||||
+ MATCH(CCW_DEV) ||
|
||||
+ MATCH(VDPA)))
|
||||
return false;
|
||||
}
|
||||
|
||||
diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c
|
||||
index 0d8a7db5c6..2764315325 100644
|
||||
--- a/src/node_device/node_device_udev.c
|
||||
+++ b/src/node_device/node_device_udev.c
|
||||
@@ -1089,6 +1089,53 @@ udevProcessCCW(struct udev_device *device,
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int
|
||||
+udevGetVDPACharDev(const char *sysfs_path,
|
||||
+ virNodeDevCapDataPtr data)
|
||||
+{
|
||||
+ struct dirent *entry;
|
||||
+ DIR *dir = NULL;
|
||||
+ int direrr;
|
||||
+
|
||||
+ if (virDirOpenIfExists(&dir, sysfs_path) <= 0)
|
||||
+ return -1;
|
||||
+
|
||||
+ while ((direrr = virDirRead(dir, &entry, NULL)) > 0) {
|
||||
+ if (g_str_has_prefix(entry->d_name, "vhost-vdpa")) {
|
||||
+ g_autofree char *chardev = g_strdup_printf("/dev/%s", entry->d_name);
|
||||
+
|
||||
+ if (!virFileExists(chardev)) {
|
||||
+ virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
+ _("vDPA chardev path '%s' does not exist"),
|
||||
+ chardev);
|
||||
+ return -1;
|
||||
+ }
|
||||
+ VIR_DEBUG("vDPA chardev is at '%s'", chardev);
|
||||
+
|
||||
+ data->vdpa.chardev = g_steal_pointer(&chardev);
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (direrr < 0)
|
||||
+ return -1;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
+udevProcessVDPA(struct udev_device *device,
|
||||
+ virNodeDeviceDefPtr def)
|
||||
+{
|
||||
+ if (udevGenerateDeviceName(device, def, NULL) != 0)
|
||||
+ return -1;
|
||||
+
|
||||
+ if (udevGetVDPACharDev(def->sysfs_path, &def->caps->data) < 0)
|
||||
+ return -1;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
|
||||
static int
|
||||
udevGetDeviceNodes(struct udev_device *device,
|
||||
@@ -1168,6 +1215,8 @@ udevGetDeviceType(struct udev_device *device,
|
||||
*type = VIR_NODE_DEV_CAP_MDEV;
|
||||
else if (STREQ_NULLABLE(subsystem, "ccw"))
|
||||
*type = VIR_NODE_DEV_CAP_CCW_DEV;
|
||||
+ else if (STREQ_NULLABLE(subsystem, "vdpa"))
|
||||
+ *type = VIR_NODE_DEV_CAP_VDPA;
|
||||
|
||||
VIR_FREE(subsystem);
|
||||
}
|
||||
@@ -1212,6 +1261,8 @@ udevGetDeviceDetails(struct udev_device *device,
|
||||
return udevProcessMediatedDevice(device, def);
|
||||
case VIR_NODE_DEV_CAP_CCW_DEV:
|
||||
return udevProcessCCW(device, def);
|
||||
+ case VIR_NODE_DEV_CAP_VDPA:
|
||||
+ return udevProcessVDPA(device, def);
|
||||
case VIR_NODE_DEV_CAP_MDEV_TYPES:
|
||||
case VIR_NODE_DEV_CAP_SYSTEM:
|
||||
case VIR_NODE_DEV_CAP_FC_HOST:
|
||||
diff --git a/tools/virsh-nodedev.c b/tools/virsh-nodedev.c
|
||||
index 7f091d7cf8..f831b36054 100644
|
||||
--- a/tools/virsh-nodedev.c
|
||||
+++ b/tools/virsh-nodedev.c
|
||||
@@ -462,6 +462,9 @@ cmdNodeListDevices(vshControl *ctl, const vshCmd *cmd G_GNUC_UNUSED)
|
||||
case VIR_NODE_DEV_CAP_CCW_DEV:
|
||||
flags |= VIR_CONNECT_LIST_NODE_DEVICES_CAP_CCW_DEV;
|
||||
break;
|
||||
+ case VIR_NODE_DEV_CAP_VDPA:
|
||||
+ flags |= VIR_CONNECT_LIST_NODE_DEVICES_CAP_VDPA;
|
||||
+ break;
|
||||
case VIR_NODE_DEV_CAP_LAST:
|
||||
break;
|
||||
}
|
||||
--
|
||||
2.27.0
|
||||
|
||||
100
Use-un-signed-printf-specifiers-correctly.patch
Normal file
100
Use-un-signed-printf-specifiers-correctly.patch
Normal file
@ -0,0 +1,100 @@
|
||||
From 37a05df2eb7e880c1bde301adf2b2eb32fc9a891 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?J=C3=A1n=20Tomko?= <jtomko@redhat.com>
|
||||
Date: Tue, 22 Sep 2020 22:17:03 +0200
|
||||
Subject: [PATCH] Use (un)signed printf specifiers correctly
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Various places reported by cppcheck's invalidPrintfArgType_sint
|
||||
and invalidPrintfArgType_uint.
|
||||
|
||||
Signed-off-by: Ján Tomko <jtomko@redhat.com>
|
||||
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
|
||||
Signed-off-by: zhujun2 <zhujun2_yewu@cmss.chinamobile.com>
|
||||
(cherry-pick from 8b80d9f0f924ddf900b726871916f8ba5ae29243)
|
||||
---
|
||||
examples/c/domain/domtop.c | 2 +-
|
||||
examples/c/domain/suspend.c | 2 +-
|
||||
tests/qemusecuritymock.c | 2 +-
|
||||
tests/virhashtest.c | 4 ++--
|
||||
tests/virpcimock.c | 2 +-
|
||||
5 files changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/examples/c/domain/domtop.c b/examples/c/domain/domtop.c
|
||||
index 15611c586d..5228445b7c 100644
|
||||
--- a/examples/c/domain/domtop.c
|
||||
+++ b/examples/c/domain/domtop.c
|
||||
@@ -115,7 +115,7 @@ parse_argv(int argc, char *argv[],
|
||||
}
|
||||
*milliseconds = val;
|
||||
if (*milliseconds != val) {
|
||||
- ERROR("Integer overflow: %ld", val);
|
||||
+ ERROR("Integer overflow: %lu", val);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
break;
|
||||
diff --git a/examples/c/domain/suspend.c b/examples/c/domain/suspend.c
|
||||
index 980c4584c7..3ff24f6861 100644
|
||||
--- a/examples/c/domain/suspend.c
|
||||
+++ b/examples/c/domain/suspend.c
|
||||
@@ -105,7 +105,7 @@ parse_argv(int argc, char *argv[],
|
||||
}
|
||||
*seconds = val;
|
||||
if (*seconds != val) {
|
||||
- ERROR("Integer overflow: %ld", val);
|
||||
+ ERROR("Integer overflow: %lu", val);
|
||||
return -1;
|
||||
}
|
||||
break;
|
||||
diff --git a/tests/qemusecuritymock.c b/tests/qemusecuritymock.c
|
||||
index ad182c7bf7..e1057bef7b 100644
|
||||
--- a/tests/qemusecuritymock.c
|
||||
+++ b/tests/qemusecuritymock.c
|
||||
@@ -269,7 +269,7 @@ mock_chown(const char *path,
|
||||
int ret = -1;
|
||||
|
||||
if (gid >> 16 || uid >> 16) {
|
||||
- fprintf(stderr, "Attempt to set too high UID or GID: %lld %lld",
|
||||
+ fprintf(stderr, "Attempt to set too high UID or GID: %llu %llu",
|
||||
(unsigned long long) uid, (unsigned long long) gid);
|
||||
abort();
|
||||
}
|
||||
diff --git a/tests/virhashtest.c b/tests/virhashtest.c
|
||||
index 4d05cbb0f8..af30791241 100644
|
||||
--- a/tests/virhashtest.c
|
||||
+++ b/tests/virhashtest.c
|
||||
@@ -34,7 +34,7 @@ testHashInit(int size)
|
||||
}
|
||||
|
||||
if (virHashTableSize(hash) != oldsize) {
|
||||
- VIR_TEST_DEBUG("hash grown from %zd to %zd",
|
||||
+ VIR_TEST_DEBUG("hash grown from %zu to %zu",
|
||||
(size_t)oldsize, (size_t)virHashTableSize(hash));
|
||||
}
|
||||
}
|
||||
@@ -313,7 +313,7 @@ testHashRemoveSet(const void *data G_GNUC_UNUSED)
|
||||
|
||||
if (count != rcount) {
|
||||
VIR_TEST_VERBOSE("\nvirHashRemoveSet didn't remove expected number of"
|
||||
- " entries, %d != %u",
|
||||
+ " entries, %d != %d",
|
||||
rcount, count);
|
||||
goto cleanup;
|
||||
}
|
||||
diff --git a/tests/virpcimock.c b/tests/virpcimock.c
|
||||
index 92b6f810d8..d0fe11e5f1 100644
|
||||
--- a/tests/virpcimock.c
|
||||
+++ b/tests/virpcimock.c
|
||||
@@ -120,7 +120,7 @@ struct pciDeviceAddress {
|
||||
unsigned int device;
|
||||
unsigned int function;
|
||||
};
|
||||
-# define ADDR_STR_FMT "%04x:%02x:%02x.%d"
|
||||
+# define ADDR_STR_FMT "%04x:%02x:%02x.%u"
|
||||
|
||||
struct pciDevice {
|
||||
struct pciDeviceAddress addr;
|
||||
--
|
||||
2.27.0
|
||||
|
||||
62
admin-fix-leak-of-typed-parameters-on-error.patch
Normal file
62
admin-fix-leak-of-typed-parameters-on-error.patch
Normal file
@ -0,0 +1,62 @@
|
||||
From 90b8168fd93490f3a0fadadb38030163712a0e85 Mon Sep 17 00:00:00 2001
|
||||
From: wangmeiyang <wangmeiyang@xfusion.com>
|
||||
Date: Fri, 21 Apr 2023 14:43:45 +0800
|
||||
Subject: [PATCH] admin: fix leak of typed parameters on error
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
A few admin client methods had the xdr_free call the wrong
|
||||
side of the cleanup label, so typed parameters would not
|
||||
be freed on error.
|
||||
|
||||
origin commit: https://gitlab.com/libvirt/libvirt/-/commit/0edf44664e9f2f75c7ba5faab91e2e190b5626af
|
||||
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
|
||||
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
|
||||
Signed-off-by: Meiyang Wang <wangmeiyang@xfusion.com>
|
||||
---
|
||||
src/admin/admin_remote.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/admin/admin_remote.c b/src/admin/admin_remote.c
|
||||
index ca5e0c9fe4..2499fb8b0f 100644
|
||||
--- a/src/admin/admin_remote.c
|
||||
+++ b/src/admin/admin_remote.c
|
||||
@@ -271,9 +271,9 @@ remoteAdminServerGetThreadPoolParameters(virAdmServerPtr srv,
|
||||
goto cleanup;
|
||||
|
||||
rv = 0;
|
||||
- xdr_free((xdrproc_t)xdr_admin_server_get_threadpool_parameters_ret, (char *) &ret);
|
||||
|
||||
cleanup:
|
||||
+ xdr_free((xdrproc_t)xdr_admin_server_get_threadpool_parameters_ret, (char *) &ret);
|
||||
virObjectUnlock(priv);
|
||||
return rv;
|
||||
}
|
||||
@@ -344,9 +344,9 @@ remoteAdminClientGetInfo(virAdmClientPtr client,
|
||||
goto cleanup;
|
||||
|
||||
rv = 0;
|
||||
- xdr_free((xdrproc_t)xdr_admin_client_get_info_ret, (char *) &ret);
|
||||
|
||||
cleanup:
|
||||
+ xdr_free((xdrproc_t)xdr_admin_client_get_info_ret, (char *) &ret);
|
||||
virObjectUnlock(priv);
|
||||
return rv;
|
||||
}
|
||||
@@ -382,10 +382,10 @@ remoteAdminServerGetClientLimits(virAdmServerPtr srv,
|
||||
goto cleanup;
|
||||
|
||||
rv = 0;
|
||||
- xdr_free((xdrproc_t) xdr_admin_server_get_client_limits_ret,
|
||||
- (char *) &ret);
|
||||
|
||||
cleanup:
|
||||
+ xdr_free((xdrproc_t) xdr_admin_server_get_client_limits_ret,
|
||||
+ (char *) &ret);
|
||||
virObjectUnlock(priv);
|
||||
return rv;
|
||||
}
|
||||
--
|
||||
2.27.0
|
||||
|
||||
42
esx-call-freeaddrinfo-earlier-in-esxUtil_ResolveHost.patch
Normal file
42
esx-call-freeaddrinfo-earlier-in-esxUtil_ResolveHost.patch
Normal file
@ -0,0 +1,42 @@
|
||||
From 9b80543fb6ebccf64d0bcbe91a2e97873886164c Mon Sep 17 00:00:00 2001
|
||||
From: tangbinzy <tangbin_yewu@cmss.chinamobile.com>
|
||||
Date: Thu, 16 Mar 2023 07:03:51 +0000
|
||||
Subject: [PATCH] esx: call freeaddrinfo earlier in esxUtil_ResolveHostname
|
||||
Call freeaddrinfo() as soon as @result is not needed anymore, i.e. right
|
||||
after getnameinfo(); this avoids calling freeaddrinfo() in two branches.
|
||||
|
||||
Signed-off-by: Pino Toscano <ptoscano@redhat.com>
|
||||
Reviewed-by: Laine Stump <laine@redhat.com>
|
||||
|
||||
Signed-off-by: tangbin <tangbin_yewu@cmss.chinamobile.com>
|
||||
(cherry-pick from 3aaf23ff69cea9abb7b7a43d9ff3eb687a916a2e)
|
||||
---
|
||||
src/esx/esx_util.c | 4 +---
|
||||
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/esx/esx_util.c b/src/esx/esx_util.c
|
||||
index 89d136248f..98ce462ff0 100644
|
||||
--- a/src/esx/esx_util.c
|
||||
+++ b/src/esx/esx_util.c
|
||||
@@ -311,17 +311,15 @@ esxUtil_ResolveHostname(const char *hostname,
|
||||
|
||||
errcode = getnameinfo(result->ai_addr, result->ai_addrlen, ipAddress,
|
||||
ipAddress_length, NULL, 0, NI_NUMERICHOST);
|
||||
+ freeaddrinfo(result);
|
||||
|
||||
if (errcode != 0) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("Formatting IP address for host '%s' failed: %s"), hostname,
|
||||
gai_strerror(errcode));
|
||||
- freeaddrinfo(result);
|
||||
return -1;
|
||||
}
|
||||
|
||||
- freeaddrinfo(result);
|
||||
-
|
||||
return 0;
|
||||
}
|
||||
|
||||
--
|
||||
2.27.0
|
||||
|
||||
24
fix-the-issue-of-errors-when-saving-after-virsh-edit.patch
Normal file
24
fix-the-issue-of-errors-when-saving-after-virsh-edit.patch
Normal file
@ -0,0 +1,24 @@
|
||||
From d5c1bd627d522b16eb87e2684a912c16ce79c12b Mon Sep 17 00:00:00 2001
|
||||
From: lifeng 71117973 <lif121@chinatelecom.cn>
|
||||
Date: Mon, 15 May 2023 15:39:32 +0800
|
||||
Subject: [PATCH] fix the issue of errors when saving after 'virsh edit'
|
||||
|
||||
---
|
||||
docs/schemas/basictypes.rng | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/docs/schemas/basictypes.rng b/docs/schemas/basictypes.rng
|
||||
index 34d285db48..8b430e71a6 100644
|
||||
--- a/docs/schemas/basictypes.rng
|
||||
+++ b/docs/schemas/basictypes.rng
|
||||
@@ -440,6 +440,7 @@
|
||||
<value>sh4eb</value>
|
||||
<value>sparc</value>
|
||||
<value>sparc64</value>
|
||||
+ <value>sw_64</value>
|
||||
<value>unicore32</value>
|
||||
<value>x86_64</value>
|
||||
<value>xtensa</value>
|
||||
--
|
||||
2.27.0
|
||||
|
||||
35
libvirt.spec
35
libvirt.spec
@ -101,7 +101,7 @@
|
||||
Summary: Library providing a simple virtualization API
|
||||
Name: libvirt
|
||||
Version: 6.2.0
|
||||
Release: 59
|
||||
Release: 60
|
||||
License: LGPLv2+
|
||||
URL: https://libvirt.org/
|
||||
|
||||
@ -489,6 +489,21 @@ Patch0376: selinux-adapt-to-libselinux.patch
|
||||
Patch0377: Revert-selinux-adapt-to-libselinux.patch
|
||||
Patch0378: selinux-Reflect-context_str-type-change.patch
|
||||
Patch0379: virnetsshsession-Adapt-to-change-libssh2-API.patch
|
||||
Patch0380: qemu-Fix-incorrect-command-name-in-error-messages.patch
|
||||
Patch0381: esx-call-freeaddrinfo-earlier-in-esxUtil_ResolveHost.patch
|
||||
Patch0382: admin-fix-leak-of-typed-parameters-on-error.patch
|
||||
Patch0383: Use-un-signed-printf-specifiers-correctly.patch
|
||||
Patch0384: fix-the-issue-of-errors-when-saving-after-virsh-edit.patch
|
||||
Patch0385: virrandom-Fix-printf-format-string-in-virRandomGener.patch
|
||||
Patch0386: qemu_migration_cookie-Rename-ret-in-qemuDomainExtrac.patch
|
||||
Patch0387: tests-upstream-Fixing-compiler-warning-in-cputest.patch
|
||||
Patch0388: qemu-Return-perf-status-that-affect-next-boot-for-sh.patch
|
||||
Patch0389: lxc-fix-lxcContainerMountAllFS-DEREF_BEFORE_CHECK.patch
|
||||
Patch0390: Include-vdpa-devices-in-node-device-list.patch
|
||||
Patch0391: node_device-fix-leak-of-DIR.patch
|
||||
Patch0392: vdpa-Introduce-the-new-device-type-vdpa-to-hostdev.patch
|
||||
Patch0393: vdpa-support-vdpa-device-hot-plug-unplug.patch
|
||||
Patch0394: vdpa-support-vdpa-device-migrate.patch
|
||||
|
||||
Requires: libvirt-daemon = %{version}-%{release}
|
||||
Requires: libvirt-daemon-config-network = %{version}-%{release}
|
||||
@ -2225,6 +2240,24 @@ exit 0
|
||||
|
||||
|
||||
%changelog
|
||||
* Wed Nov 29 2023 Jiabo Feng <fengjiabo1@huawei.com> - 6.2.0-60
|
||||
- vdpa: support vdpa device migrate
|
||||
- vdpa: support vdpa device hot plug/unplug
|
||||
- vdpa: Introduce the new device type vdpa to hostdev
|
||||
- node_device: fix leak of DIR*
|
||||
- Include vdpa devices in node device list
|
||||
- lxc: fix lxcContainerMountAllFS() DEREF_BEFORE_CHECK
|
||||
- qemu: Return perf status that affect next boot for shutoff domains While we set up perf events for a shutoff domain and check the settings, All of perf events are reported as 'disabled', unless we add --config, This is redundant for a shutoff domain.
|
||||
- tests: upstream Fixing compiler warning in cputest
|
||||
- qemu_migration_cookie: Rename ret in qemuDomainExtractTLSSubject
|
||||
- virrandom: Fix printf format string in virRandomGenerateWWN()
|
||||
- fix the issue of errors when saving after 'virsh edit'
|
||||
- Use (un)signed printf specifiers correctly
|
||||
- admin: fix leak of typed parameters on error
|
||||
- esx: call freeaddrinfo earlier in esxUtil_ResolveHostname Call freeaddrinfo() as soon as @result is not needed anymore, i.e. right after getnameinfo(); this avoids calling freeaddrinfo() in two branches.
|
||||
- qemu: Fix incorrect command name in error messages
|
||||
|
||||
|
||||
* Wed Aug 9 2023 Jiabo Feng <fengjiabo1@huawei.com> - 6.2.0-59
|
||||
- virnetsshsession: Adapt to change libssh2 API
|
||||
- selinux: Reflect context_str() type change
|
||||
|
||||
42
lxc-fix-lxcContainerMountAllFS-DEREF_BEFORE_CHECK.patch
Normal file
42
lxc-fix-lxcContainerMountAllFS-DEREF_BEFORE_CHECK.patch
Normal file
@ -0,0 +1,42 @@
|
||||
From 24994ec0adb7385e56b740f85a1bc0ed0a8002cd Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Frolov <frolov@swemel.ru>
|
||||
Date: Thu, 7 Sep 2023 12:04:57 +0300
|
||||
Subject: [PATCH] lxc: fix lxcContainerMountAllFS() DEREF_BEFORE_CHECK
|
||||
|
||||
vmDef->fss[i]->src->path may be NULL,
|
||||
so check is needed before passing it to VIR_DEBUG.
|
||||
Also removed checking vmDef->fss[i]->src for NULL, since it may not be NULL.
|
||||
|
||||
Fixes: 57487085dc ("lxc: don't try to reference NULL when mounting filesystems")
|
||||
|
||||
Signed-off-by: Dmitry Frolov <frolov@swemel.ru>
|
||||
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
||||
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||
Signed-off-by: zhujun2 <zhujun2_yewu@cmss.chinamobile.com>
|
||||
---
|
||||
src/lxc/lxc_container.c | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c
|
||||
index 1c28ecfdb7..4736c14cb7 100644
|
||||
--- a/src/lxc/lxc_container.c
|
||||
+++ b/src/lxc/lxc_container.c
|
||||
@@ -1579,12 +1579,13 @@ static int lxcContainerMountAllFS(virDomainDefPtr vmDef,
|
||||
if (STREQ(vmDef->fss[i]->dst, "/"))
|
||||
continue;
|
||||
|
||||
- VIR_DEBUG("Mounting '%s' -> '%s'", vmDef->fss[i]->src->path, vmDef->fss[i]->dst);
|
||||
+ VIR_DEBUG("Mounting '%s' -> '%s'", NULLSTR(vmDef->fss[i]->src->path),
|
||||
+ vmDef->fss[i]->dst);
|
||||
|
||||
if (lxcContainerResolveSymlinks(vmDef->fss[i], false) < 0)
|
||||
return -1;
|
||||
|
||||
- if (!(vmDef->fss[i]->src && vmDef->fss[i]->src->path &&
|
||||
+ if (!(vmDef->fss[i]->src->path &&
|
||||
STRPREFIX(vmDef->fss[i]->src->path, vmDef->fss[i]->dst)) &&
|
||||
lxcContainerUnmountSubtree(vmDef->fss[i]->dst, false) < 0)
|
||||
return -1;
|
||||
--
|
||||
2.27.0
|
||||
|
||||
46
node_device-fix-leak-of-DIR.patch
Normal file
46
node_device-fix-leak-of-DIR.patch
Normal file
@ -0,0 +1,46 @@
|
||||
From bbe1178cd6375270b01324dbbd4b34f17ff6ac1a Mon Sep 17 00:00:00 2001
|
||||
From: AlexChen <alex.chen@huawei.com>
|
||||
Date: Tue, 27 Oct 2020 21:43:47 -0400
|
||||
Subject: [PATCH] node_device: fix leak of DIR*
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Commit 53aec799fa31 introduced the function udevGetVDPACharDev(),
|
||||
which scans a directory using virDirOpenIfExists() and
|
||||
virDirRead(). It unfortunately forgets to close the DIR* when it is
|
||||
finished with it. This patch fixes that omission.
|
||||
|
||||
Fixes: 53aec799fa31711ffaeacc7ec17ec6d3c2e3cadf
|
||||
Signed-off-by: Laine Stump <laine@redhat.com>
|
||||
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
|
||||
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
||||
Signed-off-by: AlexChen <alex.chen@huawei.com>
|
||||
---
|
||||
src/node_device/node_device_udev.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c
|
||||
index 2764315325..a5a018652b 100644
|
||||
--- a/src/node_device/node_device_udev.c
|
||||
+++ b/src/node_device/node_device_udev.c
|
||||
@@ -1108,6 +1108,7 @@ udevGetVDPACharDev(const char *sysfs_path,
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("vDPA chardev path '%s' does not exist"),
|
||||
chardev);
|
||||
+ VIR_DIR_CLOSE(dir);
|
||||
return -1;
|
||||
}
|
||||
VIR_DEBUG("vDPA chardev is at '%s'", chardev);
|
||||
@@ -1117,6 +1118,8 @@ udevGetVDPACharDev(const char *sysfs_path,
|
||||
}
|
||||
}
|
||||
|
||||
+ VIR_DIR_CLOSE(dir);
|
||||
+
|
||||
if (direrr < 0)
|
||||
return -1;
|
||||
|
||||
--
|
||||
2.27.0
|
||||
|
||||
28
qemu-Fix-incorrect-command-name-in-error-messages.patch
Normal file
28
qemu-Fix-incorrect-command-name-in-error-messages.patch
Normal file
@ -0,0 +1,28 @@
|
||||
From a538fbbfb2d12de1b3c33db7c7f25a133a4e94df Mon Sep 17 00:00:00 2001
|
||||
From: Xu Zheng <xuzheng_yewu@cmss.chinamobile.com>
|
||||
Date: Wed, 2 Aug 2023 16:56:49 +0800
|
||||
Subject: [PATCH] qemu: Fix incorrect command name in error messages
|
||||
|
||||
cherry-pick from 194cfb44e77ce25d99240f24321559f569251e68
|
||||
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||
Signed-off-by: Xu Zheng <xuzheng_yewu@cmss.chinamobile.com>
|
||||
---
|
||||
src/qemu/qemu_monitor_json.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
|
||||
index afd826bc2f..8f040bbe59 100644
|
||||
--- a/src/qemu/qemu_monitor_json.c
|
||||
+++ b/src/qemu/qemu_monitor_json.c
|
||||
@@ -5665,7 +5665,7 @@ int qemuMonitorJSONGetMachines(qemuMonitorPtr mon,
|
||||
if (virJSONValueObjectHasKey(child, "numa-mem-supported")) {
|
||||
if (virJSONValueObjectGetBoolean(child, "numa-mem-supported", &info->numaMemSupported) < 0) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
- _("qemu-machines reply has malformed "
|
||||
+ _("query-machines reply has malformed "
|
||||
"'numa-mem-supported' data"));
|
||||
goto cleanup;
|
||||
}
|
||||
--
|
||||
2.27.0
|
||||
|
||||
95
qemu-Return-perf-status-that-affect-next-boot-for-sh.patch
Normal file
95
qemu-Return-perf-status-that-affect-next-boot-for-sh.patch
Normal file
@ -0,0 +1,95 @@
|
||||
From 1686b198dcf9b695a864f82d18fbc9b2e76f54df Mon Sep 17 00:00:00 2001
|
||||
From: tangbinzy <tangbin_yewu@cmss.chinamobile.com>
|
||||
Date: Thu, 16 Mar 2023 02:17:30 +0000
|
||||
Subject: [PATCH] qemu: Return perf status that affect next boot for shutoff
|
||||
domains While we set up perf events for a shutoff domain and check the
|
||||
settings, All of perf events are reported as 'disabled', unless we add
|
||||
--config, This is redundant for a shutoff domain.
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
# virsh domstate $GUEST
|
||||
shut off
|
||||
|
||||
# virsh perf --domain $GUEST
|
||||
cmt : disabled
|
||||
mbmt : disabled
|
||||
mbml : disabled
|
||||
......
|
||||
|
||||
# virsh perf --domain $GUEST --enable mbmt
|
||||
mbmt : enabled
|
||||
|
||||
# virsh perf --domain $GUEST
|
||||
cmt : disabled
|
||||
mbmt : disabled
|
||||
mbml : disabled
|
||||
......
|
||||
|
||||
Use virDomainObjGetOneDefState instead of virDomainObjGetOneDef to fix
|
||||
the issue. After patch, The perf event status of a shutoff domain is
|
||||
reported correctly:
|
||||
|
||||
# virsh domstate $GUEST
|
||||
shut off
|
||||
|
||||
# virsh perf --domain $GUEST
|
||||
cmt : disabled
|
||||
mbmt : disabled
|
||||
mbml : disabled
|
||||
......
|
||||
|
||||
# virsh perf --domain $GUEST --enable mbmt
|
||||
mbmt : enabled
|
||||
|
||||
# virsh perf --domain $GUEST
|
||||
cmt : disabled
|
||||
mbmt : enabled
|
||||
mbml : disabled
|
||||
......
|
||||
|
||||
Signed-off-by: Lin Ma <lma@suse.de>
|
||||
Reviewed-by: Erik Skultety <eskultet@redhat.com>
|
||||
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
||||
Signed-off-by: Ján Tomko <jtomko@redhat.com>
|
||||
|
||||
Signed-off-by: tangbin <tangbin_yewu@cmss.chinamobile.com>
|
||||
(cherry-pick from 10841b6cb612fed1a4cb9be05c4f5e150008cac7)
|
||||
---
|
||||
src/qemu/qemu_driver.c | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
|
||||
index 32b3ef3cf1..ed621262aa 100644
|
||||
--- a/src/qemu/qemu_driver.c
|
||||
+++ b/src/qemu/qemu_driver.c
|
||||
@@ -9952,6 +9952,7 @@ qemuDomainGetPerfEvents(virDomainPtr dom,
|
||||
int npar = 0;
|
||||
size_t i;
|
||||
int ret = -1;
|
||||
+ bool live = false;
|
||||
|
||||
virCheckFlags(VIR_DOMAIN_AFFECT_LIVE |
|
||||
VIR_DOMAIN_AFFECT_CONFIG |
|
||||
@@ -9966,7 +9967,7 @@ qemuDomainGetPerfEvents(virDomainPtr dom,
|
||||
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_QUERY) < 0)
|
||||
goto cleanup;
|
||||
|
||||
- if (!(def = virDomainObjGetOneDef(vm, flags)))
|
||||
+ if (!(def = virDomainObjGetOneDefState(vm, flags, &live)))
|
||||
goto endjob;
|
||||
|
||||
priv = vm->privateData;
|
||||
@@ -9974,7 +9975,7 @@ qemuDomainGetPerfEvents(virDomainPtr dom,
|
||||
for (i = 0; i < VIR_PERF_EVENT_LAST; i++) {
|
||||
bool perf_enabled;
|
||||
|
||||
- if (flags & VIR_DOMAIN_AFFECT_CONFIG)
|
||||
+ if ((flags & VIR_DOMAIN_AFFECT_CONFIG) || !live)
|
||||
perf_enabled = def->perf.events[i] == VIR_TRISTATE_BOOL_YES;
|
||||
else
|
||||
perf_enabled = virPerfEventIsEnabled(priv->perf, i);
|
||||
--
|
||||
2.27.0
|
||||
|
||||
66
qemu_migration_cookie-Rename-ret-in-qemuDomainExtrac.patch
Normal file
66
qemu_migration_cookie-Rename-ret-in-qemuDomainExtrac.patch
Normal file
@ -0,0 +1,66 @@
|
||||
From b054dea7aa794414e7245721178937ab989596b2 Mon Sep 17 00:00:00 2001
|
||||
From: wangjinlei <wangjinlei_yewu@cmss.chinamobile.com>
|
||||
Date: Tue, 29 Aug 2023 19:30:40 +0800
|
||||
Subject: [PATCH] qemu_migration_cookie: Rename ret in
|
||||
qemuDomainExtractTLSSubject
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
We use 'ret' for storing values to be returned from a function. Return
|
||||
values from called functions that are not supposed to be returned
|
||||
further are usually called 'rv' (or 'rc').
|
||||
|
||||
upstream commit: d116f187c69c3eefa9bfeafaf7242009f2adf531
|
||||
|
||||
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||||
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
||||
---
|
||||
src/qemu/qemu_migration_cookie.c | 14 +++++++-------
|
||||
1 file changed, 7 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/src/qemu/qemu_migration_cookie.c b/src/qemu/qemu_migration_cookie.c
|
||||
index 1d88ac1d22..0a0ac11d88 100644
|
||||
--- a/src/qemu/qemu_migration_cookie.c
|
||||
+++ b/src/qemu/qemu_migration_cookie.c
|
||||
@@ -138,7 +138,7 @@ qemuDomainExtractTLSSubject(const char *certdir)
|
||||
char *pemdata = NULL;
|
||||
gnutls_datum_t pemdatum;
|
||||
gnutls_x509_crt_t cert;
|
||||
- int ret;
|
||||
+ int rc;
|
||||
size_t subjectlen;
|
||||
|
||||
certfile = g_strdup_printf("%s/server-cert.pem", certdir);
|
||||
@@ -149,22 +149,22 @@ qemuDomainExtractTLSSubject(const char *certdir)
|
||||
goto error;
|
||||
}
|
||||
|
||||
- ret = gnutls_x509_crt_init(&cert);
|
||||
- if (ret < 0) {
|
||||
+ rc = gnutls_x509_crt_init(&cert);
|
||||
+ if (rc < 0) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("cannot initialize cert object: %s"),
|
||||
- gnutls_strerror(ret));
|
||||
+ gnutls_strerror(rc));
|
||||
goto error;
|
||||
}
|
||||
|
||||
pemdatum.data = (unsigned char *)pemdata;
|
||||
pemdatum.size = strlen(pemdata);
|
||||
|
||||
- ret = gnutls_x509_crt_import(cert, &pemdatum, GNUTLS_X509_FMT_PEM);
|
||||
- if (ret < 0) {
|
||||
+ rc = gnutls_x509_crt_import(cert, &pemdatum, GNUTLS_X509_FMT_PEM);
|
||||
+ if (rc < 0) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("cannot load cert data from %s: %s"),
|
||||
- certfile, gnutls_strerror(ret));
|
||||
+ certfile, gnutls_strerror(rc));
|
||||
goto error;
|
||||
}
|
||||
|
||||
--
|
||||
2.27.0
|
||||
|
||||
45
tests-upstream-Fixing-compiler-warning-in-cputest.patch
Normal file
45
tests-upstream-Fixing-compiler-warning-in-cputest.patch
Normal file
@ -0,0 +1,45 @@
|
||||
From 53ff014d6e62a0bbef7e9fda360ddfe197115324 Mon Sep 17 00:00:00 2001
|
||||
From: laokz <zhangkai@iscas.ac.cn>
|
||||
Date: Thu, 14 Sep 2023 11:46:39 +0800
|
||||
Subject: [PATCH] tests: upstream Fixing compiler warning in cputest
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Reference: https://github.com/libvirt/libvirt/commit/67c77744d74fe99a6b0e4ddef6869b305e29d6aa
|
||||
---
|
||||
tests: Fixing compiler warning in cputest
|
||||
|
||||
Found when building on Fedora 36 on s390x.
|
||||
|
||||
C compiler for the host machine: gcc (gcc 12.0.1 "gcc (GCC) 12.0.1 20220308 (Red Hat 12.0.1-0)")
|
||||
C linker for the host machine: gcc ld.bfd 2.37-24
|
||||
|
||||
In function ‘cpuTestUpdateLiveCompare’,
|
||||
inlined from ‘cpuTestUpdateLive’ at ../dist-unpack/libvirt-8.2.5/tests/cputest.c:784:12:
|
||||
../dist-unpack/libvirt-8.2.5/tests/cputest.c:696:21: warning: potential null pointer dereference [-Wnull-dereference]
|
||||
696 | featAct->policy == VIR_CPU_FEATURE_REQUIRE) ||
|
||||
| ~~~~~~~^~~~~~~~
|
||||
|
||||
Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
|
||||
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||
---
|
||||
tests/cputest.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/tests/cputest.c b/tests/cputest.c
|
||||
index 3657fa4095..8c22fb3ee9 100644
|
||||
--- a/tests/cputest.c
|
||||
+++ b/tests/cputest.c
|
||||
@@ -760,7 +760,7 @@ cpuTestUpdateLiveCompare(virArch arch,
|
||||
if ((cmp == 0 &&
|
||||
featAct->policy == VIR_CPU_FEATURE_REQUIRE &&
|
||||
featExp->policy == VIR_CPU_FEATURE_DISABLE) ||
|
||||
- (cmp < 0 &&
|
||||
+ (cmp < 0 && featAct &&
|
||||
featAct->policy == VIR_CPU_FEATURE_REQUIRE) ||
|
||||
(cmp > 0 &&
|
||||
featExp->policy == VIR_CPU_FEATURE_DISABLE)) {
|
||||
--
|
||||
2.27.0
|
||||
|
||||
363
vdpa-Introduce-the-new-device-type-vdpa-to-hostdev.patch
Normal file
363
vdpa-Introduce-the-new-device-type-vdpa-to-hostdev.patch
Normal file
@ -0,0 +1,363 @@
|
||||
From ccb6ee3cd899a2209cbe29f6c3b70522b86323ba Mon Sep 17 00:00:00 2001
|
||||
From: AlexChen <alex.chen@huawei.com>
|
||||
Date: Sat, 25 Nov 2023 10:34:05 +0800
|
||||
Subject: [PATCH] vdpa: Introduce the new device type vdpa to hostdev
|
||||
|
||||
Introduce the new device type vdpa to hostdev
|
||||
|
||||
Signed-off-by: libai <libai12@huawei.com>
|
||||
Signed-off-by: jiangdongxu <jiangdongxu1@huawei.com>
|
||||
Signed-off-by: AlexChen <alex.chen@huawei.com>
|
||||
---
|
||||
src/conf/domain_audit.c | 4 ++++
|
||||
src/conf/domain_conf.c | 38 +++++++++++++++++++++++++++++++++
|
||||
src/conf/domain_conf.h | 6 ++++++
|
||||
src/conf/virconftypes.h | 3 +++
|
||||
src/qemu/qemu_command.c | 29 +++++++++++++++++++++++++
|
||||
src/qemu/qemu_command.h | 4 ++++
|
||||
src/qemu/qemu_domain.c | 7 ++++++
|
||||
src/qemu/qemu_domain_address.c | 6 ++++--
|
||||
src/security/security_dac.c | 2 ++
|
||||
src/security/security_selinux.c | 2 ++
|
||||
10 files changed, 99 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/conf/domain_audit.c b/src/conf/domain_audit.c
|
||||
index 1b0abb21a0..d920dcbf09 100644
|
||||
--- a/src/conf/domain_audit.c
|
||||
+++ b/src/conf/domain_audit.c
|
||||
@@ -350,6 +350,7 @@ virDomainAuditHostdev(virDomainObjPtr vm, virDomainHostdevDefPtr hostdev,
|
||||
virDomainHostdevSubsysSCSIPtr scsisrc = &hostdev->source.subsys.u.scsi;
|
||||
virDomainHostdevSubsysSCSIVHostPtr hostsrc = &hostdev->source.subsys.u.scsi_host;
|
||||
virDomainHostdevSubsysMediatedDevPtr mdevsrc = &hostdev->source.subsys.u.mdev;
|
||||
+ virDomainHostdevSubsysVDPAPtr vdpasrc = &hostdev->source.subsys.u.vdpa;
|
||||
|
||||
virUUIDFormat(vm->def->uuid, uuidstr);
|
||||
if (!(vmname = virAuditEncode("vm", vm->def->name))) {
|
||||
@@ -393,6 +394,9 @@ virDomainAuditHostdev(virDomainObjPtr vm, virDomainHostdevDefPtr hostdev,
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV:
|
||||
address = g_strdup(mdevsrc->uuidstr);
|
||||
break;
|
||||
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
|
||||
+ address = g_strdup(vdpasrc->devpath);
|
||||
+ break;
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
|
||||
default:
|
||||
VIR_WARN("Unexpected hostdev type while encoding audit message: %d",
|
||||
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
|
||||
index 7ae403424d..5a04d1b5d1 100644
|
||||
--- a/src/conf/domain_conf.c
|
||||
+++ b/src/conf/domain_conf.c
|
||||
@@ -911,6 +911,7 @@ VIR_ENUM_IMPL(virDomainHostdevSubsys,
|
||||
"scsi",
|
||||
"scsi_host",
|
||||
"mdev",
|
||||
+ "vdpa",
|
||||
);
|
||||
|
||||
VIR_ENUM_IMPL(virDomainHostdevSubsysPCIBackend,
|
||||
@@ -2980,6 +2981,9 @@ void virDomainHostdevDefClear(virDomainHostdevDefPtr def)
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST:
|
||||
VIR_FREE(def->source.subsys.u.scsi_host.wwpn);
|
||||
break;
|
||||
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
|
||||
+ VIR_FREE(def->source.subsys.u.vdpa.devpath);
|
||||
+ break;
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB:
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI:
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV:
|
||||
@@ -6706,6 +6710,7 @@ virDomainHostdevDefValidate(const virDomainHostdevDef *hostdev)
|
||||
}
|
||||
break;
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV:
|
||||
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
|
||||
break;
|
||||
}
|
||||
@@ -8590,6 +8595,22 @@ virDomainHostdevSubsysMediatedDevDefParseXML(virDomainHostdevDefPtr def,
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int
|
||||
+virDomainHostdevSubsysVDPADefParseXML(virDomainHostdevDefPtr def,
|
||||
+ xmlNodePtr sourcenode)
|
||||
+{
|
||||
+ g_autofree char *devpath = NULL;
|
||||
+ virDomainHostdevSubsysVDPAPtr vdpa = &def->source.subsys.u.vdpa;
|
||||
+
|
||||
+ if (!(devpath = virXMLPropString(sourcenode, "dev"))) {
|
||||
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||
+ _("Missing 'dev' attribute for element <source>"));
|
||||
+ return -1;
|
||||
+ }
|
||||
+ vdpa->devpath = g_steal_pointer(&devpath);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static int
|
||||
virDomainHostdevDefParseXMLSubsys(xmlNodePtr node,
|
||||
xmlXPathContextPtr ctxt,
|
||||
@@ -8779,6 +8800,11 @@ virDomainHostdevDefParseXMLSubsys(xmlNodePtr node,
|
||||
if (virDomainHostdevSubsysMediatedDevDefParseXML(def, ctxt) < 0)
|
||||
return -1;
|
||||
break;
|
||||
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
|
||||
+ if (virDomainHostdevSubsysVDPADefParseXML(def, sourcenode) < 0) {
|
||||
+ return -1;
|
||||
+ }
|
||||
+ break;
|
||||
|
||||
default:
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
@@ -16328,6 +16354,7 @@ virDomainHostdevDefParseXML(virDomainXMLOptionPtr xmlopt,
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI:
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST:
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV:
|
||||
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
|
||||
break;
|
||||
}
|
||||
@@ -17407,6 +17434,9 @@ virDomainHostdevMatchSubsys(virDomainHostdevDefPtr a,
|
||||
return 0;
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV:
|
||||
return virDomainHostdevMatchSubsysMediatedDev(a, b);
|
||||
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
|
||||
+ return STREQ(a->source.subsys.u.vdpa.devpath,
|
||||
+ b->source.subsys.u.vdpa.devpath);
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
|
||||
return 0;
|
||||
}
|
||||
@@ -25891,6 +25921,7 @@ virDomainHostdevDefFormatSubsys(virBufferPtr buf,
|
||||
virDomainHostdevSubsysSCSIPtr scsisrc = &def->source.subsys.u.scsi;
|
||||
virDomainHostdevSubsysSCSIVHostPtr hostsrc = &def->source.subsys.u.scsi_host;
|
||||
virDomainHostdevSubsysMediatedDevPtr mdevsrc = &def->source.subsys.u.mdev;
|
||||
+ virDomainHostdevSubsysVDPAPtr vdpasrc = &def->source.subsys.u.vdpa;
|
||||
virDomainHostdevSubsysSCSIHostPtr scsihostsrc = &scsisrc->u.host;
|
||||
virDomainHostdevSubsysSCSIiSCSIPtr iscsisrc = &scsisrc->u.iscsi;
|
||||
|
||||
@@ -25940,6 +25971,11 @@ virDomainHostdevDefFormatSubsys(virBufferPtr buf,
|
||||
protocol, hostsrc->wwpn);
|
||||
}
|
||||
|
||||
+ if (def->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA) {
|
||||
+ closedSource = true;
|
||||
+ virBufferAsprintf(buf, " dev='%s'/", vdpasrc->devpath);
|
||||
+ }
|
||||
+
|
||||
virBufferAddLit(buf, ">\n");
|
||||
|
||||
virBufferAdjustIndent(buf, 2);
|
||||
@@ -25998,6 +26034,8 @@ virDomainHostdevDefFormatSubsys(virBufferPtr buf,
|
||||
virBufferAsprintf(buf, "<address uuid='%s'/>\n",
|
||||
mdevsrc->uuidstr);
|
||||
break;
|
||||
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
|
||||
+ break;
|
||||
default:
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected hostdev type %d"),
|
||||
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
|
||||
index 98fa323679..6d56ef0282 100644
|
||||
--- a/src/conf/domain_conf.h
|
||||
+++ b/src/conf/domain_conf.h
|
||||
@@ -199,6 +199,7 @@ typedef enum {
|
||||
VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI,
|
||||
VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST,
|
||||
VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV,
|
||||
+ VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA,
|
||||
|
||||
VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST
|
||||
} virDomainHostdevSubsysType;
|
||||
@@ -267,6 +268,10 @@ struct _virDomainHostdevSubsysMediatedDev {
|
||||
int ramfb; /* virTristateSwitch */
|
||||
};
|
||||
|
||||
+struct _virDomainHostdevSubsysVDPA {
|
||||
+ char *devpath; /* vDPA device path */
|
||||
+};
|
||||
+
|
||||
typedef enum {
|
||||
VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_HOST_PROTOCOL_TYPE_NONE,
|
||||
VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_HOST_PROTOCOL_TYPE_VHOST,
|
||||
@@ -301,6 +306,7 @@ struct _virDomainHostdevSubsys {
|
||||
virDomainHostdevSubsysSCSI scsi;
|
||||
virDomainHostdevSubsysSCSIVHost scsi_host;
|
||||
virDomainHostdevSubsysMediatedDev mdev;
|
||||
+ virDomainHostdevSubsysVDPA vdpa;
|
||||
} u;
|
||||
};
|
||||
|
||||
diff --git a/src/conf/virconftypes.h b/src/conf/virconftypes.h
|
||||
index 1c62cde251..ca1a17b262 100644
|
||||
--- a/src/conf/virconftypes.h
|
||||
+++ b/src/conf/virconftypes.h
|
||||
@@ -174,6 +174,9 @@ typedef virDomainHostdevSubsys *virDomainHostdevSubsysPtr;
|
||||
typedef struct _virDomainHostdevSubsysMediatedDev virDomainHostdevSubsysMediatedDev;
|
||||
typedef virDomainHostdevSubsysMediatedDev *virDomainHostdevSubsysMediatedDevPtr;
|
||||
|
||||
+typedef struct _virDomainHostdevSubsysVDPA virDomainHostdevSubsysVDPA;
|
||||
+typedef virDomainHostdevSubsysVDPA *virDomainHostdevSubsysVDPAPtr;
|
||||
+
|
||||
typedef struct _virDomainHostdevSubsysPCI virDomainHostdevSubsysPCI;
|
||||
typedef virDomainHostdevSubsysPCI *virDomainHostdevSubsysPCIPtr;
|
||||
|
||||
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
|
||||
index 832c17b602..d7db30d19b 100644
|
||||
--- a/src/qemu/qemu_command.c
|
||||
+++ b/src/qemu/qemu_command.c
|
||||
@@ -5476,6 +5476,25 @@ qemuBuildHostdevMediatedDevStr(const virDomainDef *def,
|
||||
return virBufferContentAndReset(&buf);
|
||||
}
|
||||
|
||||
+char *
|
||||
+qemuBuildHostdevVDPAStr(const virDomainDef *def,
|
||||
+ virDomainHostdevDefPtr dev,
|
||||
+ virQEMUCapsPtr qemuCaps)
|
||||
+{
|
||||
+ g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
|
||||
+ virDomainHostdevSubsysVDPAPtr vdpa = &dev->source.subsys.u.vdpa;
|
||||
+ if (!vdpa->devpath) {
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ virBufferAdd(&buf, "vhost-vdpa-device-pci", -1);
|
||||
+ virBufferAsprintf(&buf, ",id=%s", dev->info->alias);
|
||||
+ virBufferAsprintf(&buf, ",vhostdev=%s", vdpa->devpath);
|
||||
+ if (qemuBuildDeviceAddressStr(&buf, def, dev->info, qemuCaps) < 0)
|
||||
+ return NULL;
|
||||
+ return virBufferContentAndReset(&buf);
|
||||
+}
|
||||
+
|
||||
static int
|
||||
qemuBuildHostdevCommandLine(virCommandPtr cmd,
|
||||
const virDomainDef *def,
|
||||
@@ -5607,6 +5626,16 @@ qemuBuildHostdevCommandLine(virCommandPtr cmd,
|
||||
|
||||
break;
|
||||
|
||||
+ /* VDPA */
|
||||
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
|
||||
+ virCommandAddArg(cmd, "-device");
|
||||
+ if (!(devstr = qemuBuildHostdevVDPAStr(def, hostdev, qemuCaps))) {
|
||||
+ return -1;
|
||||
+ }
|
||||
+ virCommandAddArg(cmd, devstr);
|
||||
+
|
||||
+ break;
|
||||
+
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
|
||||
break;
|
||||
}
|
||||
diff --git a/src/qemu/qemu_command.h b/src/qemu/qemu_command.h
|
||||
index 283aaf358c..080cf41b81 100644
|
||||
--- a/src/qemu/qemu_command.h
|
||||
+++ b/src/qemu/qemu_command.h
|
||||
@@ -198,6 +198,10 @@ char *
|
||||
qemuBuildHostdevMediatedDevStr(const virDomainDef *def,
|
||||
virDomainHostdevDefPtr dev,
|
||||
virQEMUCapsPtr qemuCaps);
|
||||
+char *
|
||||
+qemuBuildHostdevVDPAStr(const virDomainDef *def,
|
||||
+ virDomainHostdevDefPtr dev,
|
||||
+ virQEMUCapsPtr qemuCaps);
|
||||
|
||||
char *qemuBuildRedirdevDevStr(const virDomainDef *def,
|
||||
virDomainRedirdevDefPtr dev,
|
||||
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
|
||||
index 5933039f5c..fd3e3f64c0 100644
|
||||
--- a/src/qemu/qemu_domain.c
|
||||
+++ b/src/qemu/qemu_domain.c
|
||||
@@ -6879,6 +6879,8 @@ qemuDomainDeviceDefValidateHostdev(const virDomainHostdevDef *hostdev,
|
||||
break;
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV:
|
||||
return qemuDomainMdevDefValidate(hostdev, def, qemuCaps);
|
||||
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
|
||||
+ break;
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
|
||||
default:
|
||||
virReportEnumRangeError(virDomainHostdevSubsysType,
|
||||
@@ -14442,6 +14444,7 @@ qemuDomainGetHostdevPath(virDomainHostdevDefPtr dev,
|
||||
virDomainHostdevSubsysSCSIPtr scsisrc = &dev->source.subsys.u.scsi;
|
||||
virDomainHostdevSubsysSCSIVHostPtr hostsrc = &dev->source.subsys.u.scsi_host;
|
||||
virDomainHostdevSubsysMediatedDevPtr mdevsrc = &dev->source.subsys.u.mdev;
|
||||
+ virDomainHostdevSubsysVDPAPtr vdpasrc = &dev->source.subsys.u.vdpa;
|
||||
g_autoptr(virUSBDevice) usb = NULL;
|
||||
g_autoptr(virSCSIDevice) scsi = NULL;
|
||||
g_autoptr(virSCSIVHostDevice) host = NULL;
|
||||
@@ -14512,6 +14515,10 @@ qemuDomainGetHostdevPath(virDomainHostdevDefPtr dev,
|
||||
if (!(tmpPath = virMediatedDeviceGetIOMMUGroupDev(mdevsrc->uuidstr)))
|
||||
return -1;
|
||||
|
||||
+ perm = VIR_CGROUP_DEVICE_RW;
|
||||
+ break;
|
||||
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
|
||||
+ tmpPath = g_strdup(vdpasrc->devpath);
|
||||
perm = VIR_CGROUP_DEVICE_RW;
|
||||
break;
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
|
||||
diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c
|
||||
index 7f48773832..6649553486 100644
|
||||
--- a/src/qemu/qemu_domain_address.c
|
||||
+++ b/src/qemu/qemu_domain_address.c
|
||||
@@ -792,7 +792,8 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDeviceDefPtr dev,
|
||||
if (!virHostdevIsMdevDevice(hostdev) &&
|
||||
(hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS ||
|
||||
(hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI &&
|
||||
- hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST))) {
|
||||
+ hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST &&
|
||||
+ hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA))) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2418,7 +2419,8 @@ qemuDomainAssignDevicePCISlots(virDomainDefPtr def,
|
||||
if (subsys->type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI &&
|
||||
subsys->type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST &&
|
||||
!(subsys->type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV &&
|
||||
- subsys->u.mdev.model == VIR_MDEV_MODEL_TYPE_VFIO_PCI)) {
|
||||
+ subsys->u.mdev.model == VIR_MDEV_MODEL_TYPE_VFIO_PCI) &&
|
||||
+ subsys->type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA) {
|
||||
continue;
|
||||
}
|
||||
|
||||
diff --git a/src/security/security_dac.c b/src/security/security_dac.c
|
||||
index 51cabf1961..52b3c156e4 100644
|
||||
--- a/src/security/security_dac.c
|
||||
+++ b/src/security/security_dac.c
|
||||
@@ -1357,6 +1357,7 @@ virSecurityDACSetHostdevLabel(virSecurityManagerPtr mgr,
|
||||
break;
|
||||
}
|
||||
|
||||
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
|
||||
ret = 0;
|
||||
break;
|
||||
@@ -1520,6 +1521,7 @@ virSecurityDACRestoreHostdevLabel(virSecurityManagerPtr mgr,
|
||||
break;
|
||||
}
|
||||
|
||||
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
|
||||
ret = 0;
|
||||
break;
|
||||
diff --git a/src/security/security_selinux.c b/src/security/security_selinux.c
|
||||
index cb4dc3e101..54cb42fb8d 100644
|
||||
--- a/src/security/security_selinux.c
|
||||
+++ b/src/security/security_selinux.c
|
||||
@@ -2213,6 +2213,7 @@ virSecuritySELinuxSetHostdevSubsysLabel(virSecurityManagerPtr mgr,
|
||||
break;
|
||||
}
|
||||
|
||||
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
|
||||
ret = 0;
|
||||
break;
|
||||
@@ -2449,6 +2450,7 @@ virSecuritySELinuxRestoreHostdevSubsysLabel(virSecurityManagerPtr mgr,
|
||||
break;
|
||||
}
|
||||
|
||||
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
|
||||
ret = 0;
|
||||
break;
|
||||
--
|
||||
2.27.0
|
||||
|
||||
150
vdpa-support-vdpa-device-hot-plug-unplug.patch
Normal file
150
vdpa-support-vdpa-device-hot-plug-unplug.patch
Normal file
@ -0,0 +1,150 @@
|
||||
From 9033b938d402c3eb2cbc13b3dc2a87b191b03aed Mon Sep 17 00:00:00 2001
|
||||
From: AlexChen <alex.chen@huawei.com>
|
||||
Date: Sat, 25 Nov 2023 09:51:46 +0800
|
||||
Subject: [PATCH] vdpa: support vdpa device hot plug/unplug
|
||||
|
||||
support vdpa device hot plug/unplug
|
||||
|
||||
Signed-off-by: jiangdongxu <jiangdongxu1@huawei.com>
|
||||
Signed-off-by: AlexChen <alex.chen@huawei.com>
|
||||
---
|
||||
src/qemu/qemu_hotplug.c | 95 +++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 95 insertions(+)
|
||||
|
||||
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
|
||||
index e13879cde3..3c5540291b 100644
|
||||
--- a/src/qemu/qemu_hotplug.c
|
||||
+++ b/src/qemu/qemu_hotplug.c
|
||||
@@ -2907,6 +2907,89 @@ qemuDomainAttachMediatedDevice(virQEMUDriverPtr driver,
|
||||
}
|
||||
|
||||
|
||||
+static int
|
||||
+qemuDomainAttachVDPADevice(virQEMUDriverPtr driver,
|
||||
+ virDomainObjPtr vm,
|
||||
+ virDomainHostdevDefPtr hostdev)
|
||||
+{
|
||||
+ int ret = -1;
|
||||
+ g_autofree char *devstr = NULL;
|
||||
+ bool teardowncgroup = false;
|
||||
+ bool teardownlabel = false;
|
||||
+ bool teardowndevice = false;
|
||||
+ bool teardownmemlock = false;
|
||||
+ bool releaseaddr = false;
|
||||
+ qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||
+ virDomainDeviceDef dev = { VIR_DOMAIN_DEVICE_HOSTDEV,
|
||||
+ { .hostdev = hostdev } };
|
||||
+
|
||||
+ if (qemuDomainNamespaceSetupHostdev(vm, hostdev) < 0)
|
||||
+ goto error;
|
||||
+ teardowndevice = true;
|
||||
+
|
||||
+ if (qemuSetupHostdevCgroup(vm, hostdev) < 0)
|
||||
+ goto error;
|
||||
+ teardowncgroup = true;
|
||||
+
|
||||
+ if (qemuSecuritySetHostdevLabel(driver, vm, hostdev) < 0)
|
||||
+ goto error;
|
||||
+ teardownlabel = true;
|
||||
+
|
||||
+ if (qemuDomainEnsurePCIAddress(vm, &dev, driver) < 0)
|
||||
+ goto error;
|
||||
+ releaseaddr = true;
|
||||
+
|
||||
+ if (qemuAssignDeviceHostdevAlias(vm->def, &hostdev->info->alias, -1) < 0)
|
||||
+ goto error;
|
||||
+
|
||||
+ if (!virDomainObjIsActive(vm)) {
|
||||
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
+ _("guest unexpectedly quit during hotplug"));
|
||||
+ goto error;
|
||||
+ }
|
||||
+
|
||||
+ if (!(devstr = qemuBuildHostdevVDPAStr(vm->def, hostdev, priv->qemuCaps)))
|
||||
+ goto error;
|
||||
+
|
||||
+ if (VIR_REALLOC_N(vm->def->hostdevs, vm->def->nhostdevs + 1) < 0)
|
||||
+ goto error;
|
||||
+
|
||||
+ if (qemuDomainAdjustMaxMemLockHostdev(vm, hostdev) < 0)
|
||||
+ goto error;
|
||||
+ teardownmemlock = true;
|
||||
+
|
||||
+ qemuDomainObjEnterMonitor(driver, vm);
|
||||
+ ret = qemuMonitorAddDevice(priv->mon, devstr);
|
||||
+ if (qemuDomainObjExitMonitor(driver, vm) < 0) {
|
||||
+ goto error;
|
||||
+ }
|
||||
+
|
||||
+ virDomainAuditHostdev(vm, hostdev, "attach", ret == 0);
|
||||
+ if (ret < 0)
|
||||
+ goto error;
|
||||
+
|
||||
+ vm->def->hostdevs[vm->def->nhostdevs++] = hostdev;
|
||||
+
|
||||
+ return 0;
|
||||
+
|
||||
+ error:
|
||||
+ if (teardowncgroup && qemuTeardownHostdevCgroup(vm, hostdev) < 0)
|
||||
+ VIR_WARN("Unable to remove host device cgroup ACL on hotplug fail");
|
||||
+ if (teardownlabel &&
|
||||
+ qemuSecurityRestoreHostdevLabel(driver, vm, hostdev) < 0)
|
||||
+ VIR_WARN("Unable to restore host device labelling on hotplug fail");
|
||||
+ if (teardowndevice &&
|
||||
+ qemuDomainNamespaceTeardownHostdev(vm, hostdev) < 0)
|
||||
+ VIR_WARN("Unable to remove host device from /dev");
|
||||
+ if (teardownmemlock && qemuDomainAdjustMaxMemLock(vm, false) < 0)
|
||||
+ VIR_WARN("Unable to reset maximum locked memory on hotplug fail");
|
||||
+ if (releaseaddr)
|
||||
+ qemuDomainReleaseDeviceAddress(vm, hostdev->info);
|
||||
+
|
||||
+ return -1;
|
||||
+}
|
||||
+
|
||||
+
|
||||
int
|
||||
qemuDomainAttachHostDevice(virQEMUDriverPtr driver,
|
||||
virDomainObjPtr vm,
|
||||
@@ -2947,6 +3030,11 @@ qemuDomainAttachHostDevice(virQEMUDriverPtr driver,
|
||||
return -1;
|
||||
break;
|
||||
|
||||
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
|
||||
+ if (qemuDomainAttachVDPADevice(driver, vm, hostdev) < 0)
|
||||
+ return -1;
|
||||
+ break;
|
||||
+
|
||||
default:
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("hotplug is not supported for hostdev subsys type '%s'"),
|
||||
@@ -4564,6 +4652,7 @@ qemuDomainRemoveHostDevice(virQEMUDriverPtr driver,
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV:
|
||||
qemuDomainRemoveMediatedDevice(driver, vm, hostdev);
|
||||
break;
|
||||
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
|
||||
break;
|
||||
}
|
||||
@@ -5397,6 +5486,7 @@ qemuDomainDetachPrepHostdev(virDomainObjPtr vm,
|
||||
virDomainHostdevSubsysPCIPtr pcisrc = &subsys->u.pci;
|
||||
virDomainHostdevSubsysSCSIPtr scsisrc = &subsys->u.scsi;
|
||||
virDomainHostdevSubsysMediatedDevPtr mdevsrc = &subsys->u.mdev;
|
||||
+ virDomainHostdevSubsysVDPAPtr vdpasrc = &subsys->u.vdpa;
|
||||
virDomainHostdevDefPtr hostdev = NULL;
|
||||
int idx;
|
||||
|
||||
@@ -5454,6 +5544,11 @@ qemuDomainDetachPrepHostdev(virDomainObjPtr vm,
|
||||
break;
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST:
|
||||
break;
|
||||
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
|
||||
+ virReportError(VIR_ERR_DEVICE_MISSING,
|
||||
+ _("vdpa device '%s' not found"),
|
||||
+ vdpasrc->devpath);
|
||||
+ break;
|
||||
default:
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("unexpected hostdev type %d"), subsys->type);
|
||||
--
|
||||
2.27.0
|
||||
|
||||
30
vdpa-support-vdpa-device-migrate.patch
Normal file
30
vdpa-support-vdpa-device-migrate.patch
Normal file
@ -0,0 +1,30 @@
|
||||
From 9c99d1cfbcd12f4def9a836b62c6f0c044aecb86 Mon Sep 17 00:00:00 2001
|
||||
From: AlexChen <alex.chen@huawei.com>
|
||||
Date: Sat, 25 Nov 2023 09:55:08 +0800
|
||||
Subject: [PATCH] vdpa: support vdpa device migrate
|
||||
|
||||
support vdpa device migrate
|
||||
|
||||
Signed-off-by: jiangdongxu <jiangdongxu1@huawei.com>
|
||||
Signed-off-by: AlexChen <alex.chen@huawei.com>
|
||||
---
|
||||
src/qemu/qemu_migration.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
|
||||
index c2a694eff1..04b9333fae 100644
|
||||
--- a/src/qemu/qemu_migration.c
|
||||
+++ b/src/qemu/qemu_migration.c
|
||||
@@ -1114,7 +1114,8 @@ qemuMigrationSrcIsAllowedHostdev(const virDomainDef *def)
|
||||
case VIR_DOMAIN_HOSTDEV_MODE_SUBSYS:
|
||||
switch ((virDomainHostdevSubsysType)hostdev->source.subsys.type) {
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB:
|
||||
- /* USB devices can be "migrated" */
|
||||
+ case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_VDPA:
|
||||
+ /* USB and VDPA devices can be "migrated" */
|
||||
continue;
|
||||
|
||||
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI:
|
||||
--
|
||||
2.27.0
|
||||
|
||||
33
virrandom-Fix-printf-format-string-in-virRandomGener.patch
Normal file
33
virrandom-Fix-printf-format-string-in-virRandomGener.patch
Normal file
@ -0,0 +1,33 @@
|
||||
From 4fa96d435fb3a60b4757b41b1d9f273225c79158 Mon Sep 17 00:00:00 2001
|
||||
From: zhujun2 <zhujun2@cmss.chinamobile.com>
|
||||
Date: Mon, 31 Jul 2023 20:08:11 -0700
|
||||
Subject: [PATCH] virrandom: Fix printf format string in virRandomGenerateWWN()
|
||||
|
||||
Firstly, drop needless concatenation of two static strings.
|
||||
Secondly, use proper (portable) formatter for uint64_t so that
|
||||
typecast to ULL can be dropped.
|
||||
|
||||
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
||||
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
|
||||
Signed-off-by: zhujun2 <zhujun2_yewu@cmss.chinamobile.com>
|
||||
(cherry-pick form b857ad0696ca5177eccf482f244665c246b3ace8)
|
||||
---
|
||||
src/util/virrandom.c | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/util/virrandom.c b/src/util/virrandom.c
|
||||
index 0487b4e70b..1b4102cf58 100644
|
||||
--- a/src/util/virrandom.c
|
||||
+++ b/src/util/virrandom.c
|
||||
@@ -158,7 +158,6 @@ virRandomGenerateWWN(char **wwn,
|
||||
return -1;
|
||||
}
|
||||
|
||||
- *wwn = g_strdup_printf("5" "%s%09llx", oui,
|
||||
- (unsigned long long)virRandomBits(36));
|
||||
+ *wwn = g_strdup_printf("5%s%09" PRIx64, oui, virRandomBits(36));
|
||||
return 0;
|
||||
}
|
||||
--
|
||||
2.27.0
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user