forked from pool/libvirt
6db7ff9129
- hook: encode incoming XML to UTF-8 before passing to lxml etree fromstring method Modifed suse-qemu-domain-hook.py boo#1123642 - libxl: change autoballooning default to disabled suse-libxl-disable-autoballoon.patch jsc#SLE-3059 - conf: add new 'xenbus' controller type 09eb1ae0-conf-add-xenbus-controller.patch - libxl: support Xen's max_grant_frames setting with maxGrantFrames attribute on the xenbus controller fb059757-libxl-add-xenbus-controller.patch, ec5a1191-libxl-support-max-grant-frames.patch, 5a64c202-xenconfig-support-max-grant-frames.patch bsc#1126325 - Replace patches with upstream variants Old: 0001-apparmor-Check-libvirtd-profile-status-by-name.patch, 0001-qemu-Fix-query-cpus-fast-target-architecture-detecti.patch New: 411cdaf8-apparmor-check-profile-name.patch, 696239ba-qemu-fix-query-cpus-fast.patch OBS-URL: https://build.opensuse.org/request/show/684801 OBS-URL: https://build.opensuse.org/package/show/Virtualization/libvirt?expand=0&rev=740
202 lines
7.7 KiB
Diff
202 lines
7.7 KiB
Diff
commit 09eb1ae0ec7e592133eb98f4a0fe2f6daa5ba2d9
|
|
Author: Jim Fehlig <jfehlig@suse.com>
|
|
Date: Wed Mar 6 15:59:29 2019 -0700
|
|
|
|
conf: Add a new 'xenbus' controller type
|
|
|
|
xenbus is virtual controller (akin to virtio controllers) for Xen
|
|
paravirtual devices. Although all Xen VMs have a xenbus, it has
|
|
never been modeled in libvirt, or in Xen native VM config format
|
|
for that matter.
|
|
|
|
Recently there have been requests to support Xen's max_grant_frames
|
|
setting in libvirt. max_grant_frames is best modeled as an attribute
|
|
of xenbus. It describes the maximum IO buffer space (or DMA space)
|
|
available in xenbus for use by connected paravirtual devices. This
|
|
patch introduces a new xenbus controller type that includes a
|
|
maxGrantFrames attribute.
|
|
|
|
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
|
|
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
|
|
|
|
Index: libvirt-5.1.0/docs/formatdomain.html.in
|
|
===================================================================
|
|
--- libvirt-5.1.0.orig/docs/formatdomain.html.in
|
|
+++ libvirt-5.1.0/docs/formatdomain.html.in
|
|
@@ -4108,6 +4108,7 @@
|
|
<driver iothread='4'/>
|
|
<address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x0'/>
|
|
</controller>
|
|
+ <controller type='xenbus' maxGrantFrames='64'/>
|
|
...
|
|
</devices>
|
|
...</pre>
|
|
@@ -4155,6 +4156,11 @@
|
|
<dd><span class="since">Since 3.10.0</span> for the vbox driver, the
|
|
<code>ide</code> controller has an optional attribute
|
|
<code>model</code>, which is one of "piix3", "piix4" or "ich6".</dd>
|
|
+ <dt><code>xenbus</code></dt>
|
|
+ <dd><span class="since">Since 5.2.0</span>, the <code>xenbus</code>
|
|
+ controller has an optional attribute <code>maxGrantFrames</code>,
|
|
+ which specifies the maximum number of grant frames the controller
|
|
+ makes available for connected devices.</dd>
|
|
</dl>
|
|
|
|
<p>
|
|
Index: libvirt-5.1.0/docs/schemas/domaincommon.rng
|
|
===================================================================
|
|
--- libvirt-5.1.0.orig/docs/schemas/domaincommon.rng
|
|
+++ libvirt-5.1.0/docs/schemas/domaincommon.rng
|
|
@@ -2315,6 +2315,17 @@
|
|
</attribute>
|
|
</optional>
|
|
</group>
|
|
+ <!-- xenbus has an optional attribute "maxGrantFrames" -->
|
|
+ <group>
|
|
+ <attribute name="type">
|
|
+ <value>xenbus</value>
|
|
+ </attribute>
|
|
+ <optional>
|
|
+ <attribute name="maxGrantFrames">
|
|
+ <ref name="unsignedInt"/>
|
|
+ </attribute>
|
|
+ </optional>
|
|
+ </group>
|
|
</choice>
|
|
<optional>
|
|
<element name="driver">
|
|
Index: libvirt-5.1.0/src/conf/domain_conf.c
|
|
===================================================================
|
|
--- libvirt-5.1.0.orig/src/conf/domain_conf.c
|
|
+++ libvirt-5.1.0/src/conf/domain_conf.c
|
|
@@ -347,6 +347,7 @@ VIR_ENUM_IMPL(virDomainController, VIR_D
|
|
"ccid",
|
|
"usb",
|
|
"pci",
|
|
+ "xenbus",
|
|
);
|
|
|
|
VIR_ENUM_IMPL(virDomainControllerModelPCI, VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST,
|
|
@@ -2041,6 +2042,9 @@ virDomainControllerDefNew(virDomainContr
|
|
def->opts.pciopts.targetIndex = -1;
|
|
def->opts.pciopts.numaNode = -1;
|
|
break;
|
|
+ case VIR_DOMAIN_CONTROLLER_TYPE_XENBUS:
|
|
+ def->opts.xenbusopts.maxGrantFrames = -1;
|
|
+ break;
|
|
case VIR_DOMAIN_CONTROLLER_TYPE_IDE:
|
|
case VIR_DOMAIN_CONTROLLER_TYPE_FDC:
|
|
case VIR_DOMAIN_CONTROLLER_TYPE_SCSI:
|
|
@@ -10791,6 +10795,20 @@ virDomainControllerDefParseXML(virDomain
|
|
def->opts.pciopts.numaNode = numaNode;
|
|
}
|
|
break;
|
|
+ case VIR_DOMAIN_CONTROLLER_TYPE_XENBUS: {
|
|
+ VIR_AUTOFREE(char *) gntframes = virXMLPropString(node, "maxGrantFrames");
|
|
+
|
|
+ if (gntframes) {
|
|
+ int r = virStrToLong_i(gntframes, NULL, 10,
|
|
+ &def->opts.xenbusopts.maxGrantFrames);
|
|
+ if (r != 0 || def->opts.xenbusopts.maxGrantFrames < 0) {
|
|
+ virReportError(VIR_ERR_INTERNAL_ERROR,
|
|
+ _("Invalid maxGrantFrames: %s"), gntframes);
|
|
+ goto error;
|
|
+ }
|
|
+ }
|
|
+ break;
|
|
+ }
|
|
|
|
default:
|
|
break;
|
|
@@ -24752,6 +24770,13 @@ virDomainControllerDefFormat(virBufferPt
|
|
}
|
|
break;
|
|
|
|
+ case VIR_DOMAIN_CONTROLLER_TYPE_XENBUS:
|
|
+ if (def->opts.xenbusopts.maxGrantFrames != -1) {
|
|
+ virBufferAsprintf(buf, " maxGrantFrames='%d'",
|
|
+ def->opts.xenbusopts.maxGrantFrames);
|
|
+ }
|
|
+ break;
|
|
+
|
|
default:
|
|
break;
|
|
}
|
|
Index: libvirt-5.1.0/src/conf/domain_conf.h
|
|
===================================================================
|
|
--- libvirt-5.1.0.orig/src/conf/domain_conf.h
|
|
+++ libvirt-5.1.0/src/conf/domain_conf.h
|
|
@@ -687,6 +687,7 @@ typedef enum {
|
|
VIR_DOMAIN_CONTROLLER_TYPE_CCID,
|
|
VIR_DOMAIN_CONTROLLER_TYPE_USB,
|
|
VIR_DOMAIN_CONTROLLER_TYPE_PCI,
|
|
+ VIR_DOMAIN_CONTROLLER_TYPE_XENBUS,
|
|
|
|
VIR_DOMAIN_CONTROLLER_TYPE_LAST
|
|
} virDomainControllerType;
|
|
@@ -819,6 +820,12 @@ struct _virDomainUSBControllerOpts {
|
|
int ports; /* -1 == undef */
|
|
};
|
|
|
|
+typedef struct _virDomainXenbusControllerOpts virDomainXenbusControllerOpts;
|
|
+typedef virDomainXenbusControllerOpts *virDomainXenbusControllerOptsPtr;
|
|
+struct _virDomainXenbusControllerOpts {
|
|
+ int maxGrantFrames; /* -1 == undef */
|
|
+};
|
|
+
|
|
/* Stores the virtual disk controller configuration */
|
|
struct _virDomainControllerDef {
|
|
int type;
|
|
@@ -833,6 +840,7 @@ struct _virDomainControllerDef {
|
|
virDomainVirtioSerialOpts vioserial;
|
|
virDomainPCIControllerOpts pciopts;
|
|
virDomainUSBControllerOpts usbopts;
|
|
+ virDomainXenbusControllerOpts xenbusopts;
|
|
} opts;
|
|
virDomainDeviceInfo info;
|
|
virDomainVirtioOptionsPtr virtio;
|
|
Index: libvirt-5.1.0/src/qemu/qemu_command.c
|
|
===================================================================
|
|
--- libvirt-5.1.0.orig/src/qemu/qemu_command.c
|
|
+++ libvirt-5.1.0/src/qemu/qemu_command.c
|
|
@@ -3024,6 +3024,7 @@ qemuBuildControllerDevStr(const virDomai
|
|
|
|
case VIR_DOMAIN_CONTROLLER_TYPE_IDE:
|
|
case VIR_DOMAIN_CONTROLLER_TYPE_FDC:
|
|
+ case VIR_DOMAIN_CONTROLLER_TYPE_XENBUS:
|
|
case VIR_DOMAIN_CONTROLLER_TYPE_LAST:
|
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
|
_("Unsupported controller type: %s"),
|
|
Index: libvirt-5.1.0/src/qemu/qemu_domain.c
|
|
===================================================================
|
|
--- libvirt-5.1.0.orig/src/qemu/qemu_domain.c
|
|
+++ libvirt-5.1.0/src/qemu/qemu_domain.c
|
|
@@ -5841,6 +5841,7 @@ qemuDomainDeviceDefValidateController(co
|
|
case VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL:
|
|
case VIR_DOMAIN_CONTROLLER_TYPE_CCID:
|
|
case VIR_DOMAIN_CONTROLLER_TYPE_USB:
|
|
+ case VIR_DOMAIN_CONTROLLER_TYPE_XENBUS:
|
|
case VIR_DOMAIN_CONTROLLER_TYPE_LAST:
|
|
break;
|
|
}
|
|
@@ -6459,6 +6460,7 @@ qemuDomainControllerDefPostParse(virDoma
|
|
case VIR_DOMAIN_CONTROLLER_TYPE_CCID:
|
|
case VIR_DOMAIN_CONTROLLER_TYPE_IDE:
|
|
case VIR_DOMAIN_CONTROLLER_TYPE_FDC:
|
|
+ case VIR_DOMAIN_CONTROLLER_TYPE_XENBUS:
|
|
case VIR_DOMAIN_CONTROLLER_TYPE_LAST:
|
|
break;
|
|
}
|
|
Index: libvirt-5.1.0/src/qemu/qemu_domain_address.c
|
|
===================================================================
|
|
--- libvirt-5.1.0.orig/src/qemu/qemu_domain_address.c
|
|
+++ libvirt-5.1.0/src/qemu/qemu_domain_address.c
|
|
@@ -669,6 +669,7 @@ qemuDomainDeviceCalculatePCIConnectFlags
|
|
|
|
case VIR_DOMAIN_CONTROLLER_TYPE_FDC:
|
|
case VIR_DOMAIN_CONTROLLER_TYPE_CCID:
|
|
+ case VIR_DOMAIN_CONTROLLER_TYPE_XENBUS:
|
|
case VIR_DOMAIN_CONTROLLER_TYPE_LAST:
|
|
/* should be 0 */
|
|
return pciFlags;
|