From 49fae45c526622c3c4a6e180395fc8312ef109be Mon Sep 17 00:00:00 2001 From: Jiabo Feng Date: Tue, 19 Dec 2023 10:00:23 +0800 Subject: [PATCH] remove useless patch files Signed-off-by: Jiabo Feng --- ...ude-vdpa-devices-in-node-device-list.patch | 322 ---------------- libvirt.spec | 5 +- node_device-fix-leak-of-DIR.patch | 46 --- ...-the-new-device-type-vdpa-to-hostdev.patch | 363 ------------------ ...-support-vdpa-device-hot-plug-unplug.patch | 150 -------- vdpa-support-vdpa-device-migrate.patch | 30 -- 6 files changed, 4 insertions(+), 912 deletions(-) delete mode 100644 Include-vdpa-devices-in-node-device-list.patch delete mode 100644 node_device-fix-leak-of-DIR.patch delete mode 100644 vdpa-Introduce-the-new-device-type-vdpa-to-hostdev.patch delete mode 100644 vdpa-support-vdpa-device-hot-plug-unplug.patch delete mode 100644 vdpa-support-vdpa-device-migrate.patch diff --git a/Include-vdpa-devices-in-node-device-list.patch b/Include-vdpa-devices-in-node-device-list.patch deleted file mode 100644 index 9fb0674..0000000 --- a/Include-vdpa-devices-in-node-device-list.patch +++ /dev/null @@ -1,322 +0,0 @@ -From e8597e64126a5cf77fbb9422977268878a6376b6 Mon Sep 17 00:00:00 2001 -From: AlexChen -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 - - vdpa_vdpa0 - /sys/devices/vdpa0 - computer - - vhost_vdpa - - - /dev/vhost-vdpa-0 - - - -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 -Signed-off-by: AlexChen ---- - 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 @@ -
The device number.
- - -+
vdpa
-+
Describes a virtual datapath acceleration (vDPA) network device. -+ Since 6.9.0. Sub-elements include: -+
-+
chardev
-+
The path to the character device that is used to access the -+ device.
-+
-+
- - - -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 @@ - - - -+ - - - -@@ -651,6 +652,15 @@ - - - -+ -+ -+ vdpa -+ -+ -+ -+ -+ -+ - - - -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, "\n"); - } - -+static void -+virNodeDeviceCapVDPADefFormat(virBufferPtr buf, -+ const virNodeDevCapData *data) -+{ -+ virBufferEscapeString(buf, "%s\n", data->vdpa.chardev); -+} - - char * - virNodeDeviceDefFormat(const virNodeDeviceDef *def) -@@ -595,6 +602,9 @@ virNodeDeviceDefFormat(const virNodeDeviceDef *def) - virBufferAsprintf(&buf, "0x%04x\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 - diff --git a/libvirt.spec b/libvirt.spec index a8c6c99..1622ca6 100644 --- a/libvirt.spec +++ b/libvirt.spec @@ -101,7 +101,7 @@ Summary: Library providing a simple virtualization API Name: libvirt Version: 6.2.0 -Release: 61 +Release: 62 License: LGPLv2+ URL: https://libvirt.org/ @@ -2237,6 +2237,9 @@ exit 0 %changelog +* Tue Dec 19 2023 Jiabo Feng - 6.2.0-62 +- remove useless patch files + * Wed Nov 29 2023 Jiabo Feng - 6.2.0-61 - 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. diff --git a/node_device-fix-leak-of-DIR.patch b/node_device-fix-leak-of-DIR.patch deleted file mode 100644 index f52b7b4..0000000 --- a/node_device-fix-leak-of-DIR.patch +++ /dev/null @@ -1,46 +0,0 @@ -From bbe1178cd6375270b01324dbbd4b34f17ff6ac1a Mon Sep 17 00:00:00 2001 -From: AlexChen -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 -Reviewed-by: Daniel Henrique Barboza -Reviewed-by: Ján Tomko -Signed-off-by: AlexChen ---- - 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 - diff --git a/vdpa-Introduce-the-new-device-type-vdpa-to-hostdev.patch b/vdpa-Introduce-the-new-device-type-vdpa-to-hostdev.patch deleted file mode 100644 index 2243995..0000000 --- a/vdpa-Introduce-the-new-device-type-vdpa-to-hostdev.patch +++ /dev/null @@ -1,363 +0,0 @@ -From ccb6ee3cd899a2209cbe29f6c3b70522b86323ba Mon Sep 17 00:00:00 2001 -From: AlexChen -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 -Signed-off-by: jiangdongxu -Signed-off-by: AlexChen ---- - 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 ")); -+ 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, "
\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 - diff --git a/vdpa-support-vdpa-device-hot-plug-unplug.patch b/vdpa-support-vdpa-device-hot-plug-unplug.patch deleted file mode 100644 index 5890c6f..0000000 --- a/vdpa-support-vdpa-device-hot-plug-unplug.patch +++ /dev/null @@ -1,150 +0,0 @@ -From 9033b938d402c3eb2cbc13b3dc2a87b191b03aed Mon Sep 17 00:00:00 2001 -From: AlexChen -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 -Signed-off-by: AlexChen ---- - 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 - diff --git a/vdpa-support-vdpa-device-migrate.patch b/vdpa-support-vdpa-device-migrate.patch deleted file mode 100644 index 1bb57d9..0000000 --- a/vdpa-support-vdpa-device-migrate.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 9c99d1cfbcd12f4def9a836b62c6f0c044aecb86 Mon Sep 17 00:00:00 2001 -From: AlexChen -Date: Sat, 25 Nov 2023 09:55:08 +0800 -Subject: [PATCH] vdpa: support vdpa device migrate - -support vdpa device migrate - -Signed-off-by: jiangdongxu -Signed-off-by: AlexChen ---- - 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 - -- Gitee