提交 0e3b3094 编写于 作者: B Bjoern Walk 提交者: Ján Tomko

conf: domain: support for virtio packed option

Expose the virtio parameter for packed virtqueues as an optional libvirt
XML attribute to virtio-backed devices, e.g.:

    <interface type='user'>
      <mac address='00:11:22:33:44:55'/>
      <model type='virtio'/>
      <driver packed='on'/>
    </interface>

If the attribute is omitted, the default value for this attribute is 'off' and
regular split virtqueues are used.
Reviewed-by: NJán Tomko <jtomko@redhat.com>
Reviewed-by: NBoris Fiuczynski <fiuczy@linux.ibm.com>
Signed-off-by: NBjoern Walk <bwalk@linux.ibm.com>
Signed-off-by: NJán Tomko <jtomko@redhat.com>
上级 979500e1
......@@ -5961,6 +5961,11 @@
<ref name="virOnOff"/>
</attribute>
</optional>
<optional>
<attribute name="packed">
<ref name="virOnOff"/>
</attribute>
</optional>
</define>
<define name="usbmaster">
......
......@@ -1512,6 +1512,16 @@ virDomainVirtioOptionsParseXML(xmlNodePtr driver,
}
res->ats = val;
}
VIR_FREE(str);
if ((str = virXMLPropString(driver, "packed"))) {
if ((val = virTristateSwitchTypeFromString(str)) <= 0) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("invalid packed value"));
return -1;
}
res->packed = val;
}
return 0;
}
......@@ -5091,6 +5101,12 @@ virDomainCheckVirtioOptions(virDomainVirtioOptionsPtr virtio)
"for virtio devices"));
return -1;
}
if (virtio->packed != VIR_TRISTATE_SWITCH_ABSENT) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("packed driver option is only supported "
"for virtio devices"));
return -1;
}
return 0;
}
......@@ -7377,6 +7393,10 @@ virDomainVirtioOptionsFormat(virBufferPtr buf,
virBufferAsprintf(buf, " ats='%s'",
virTristateSwitchTypeToString(virtio->ats));
}
if (virtio->packed != VIR_TRISTATE_SWITCH_ABSENT) {
virBufferAsprintf(buf, " packed='%s'",
virTristateSwitchTypeToString(virtio->packed));
}
}
......@@ -22415,6 +22435,14 @@ virDomainVirtioOptionsCheckABIStability(virDomainVirtioOptionsPtr src,
virTristateSwitchTypeToString(src->ats));
return false;
}
if (src->packed != dst->packed) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Target device packed option '%s' does not "
"match source '%s'"),
virTristateSwitchTypeToString(dst->packed),
virTristateSwitchTypeToString(src->packed));
return false;
}
return true;
}
......
......@@ -2417,6 +2417,7 @@ struct _virDomainVsockDef {
struct _virDomainVirtioOptions {
virTristateSwitch iommu;
virTristateSwitch ats;
virTristateSwitch packed;
};
/*
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册