Signed-off-by: Jiri Denemark <jdenemar(a)redhat.com>
---
docs/formatdomaincaps.html.in | 13 +++++++++++--
docs/schemas/domaincaps.rng | 3 +++
src/conf/domain_capabilities.c | 13 ++++++++++++-
src/conf/domain_capabilities.h | 1 +
4 files changed, 27 insertions(+), 3 deletions(-)
diff --git a/docs/formatdomaincaps.html.in b/docs/formatdomaincaps.html.in
index 7df9f0bbbf..1506f79818 100644
--- a/docs/formatdomaincaps.html.in
+++ b/docs/formatdomaincaps.html.in
@@ -201,7 +201,12 @@
<domainCapabilities>
...
<cpu>
- <mode name='host-passthrough' supported='yes'/>
+ <mode name='host-passthrough' supported='yes'>
+ <enum name='hostPassthroughMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='allow'>Broadwell</model>
<vendor>Intel</vendor>
@@ -227,7 +232,11 @@
<dl>
<dt><code>host-passthrough</code></dt>
- <dd>No mode specific details are provided.</dd>
+ <dd>
+ The <code>hostPassthroughMigratable</code> enum shows possible
values
+ of the <code>migratable</code> attribute for the <cpu>
element
+ with <code>mode='host-passthrough'</code> in the domain XML.
+ </dd>
<dt><code>host-model</code></dt>
<dd>
diff --git a/docs/schemas/domaincaps.rng b/docs/schemas/domaincaps.rng
index 682cc82177..325581476d 100644
--- a/docs/schemas/domaincaps.rng
+++ b/docs/schemas/domaincaps.rng
@@ -99,6 +99,9 @@
<value>host-passthrough</value>
</attribute>
<ref name='supported'/>
+ <optional>
+ <ref name='enum'/>
+ </optional>
</element>
</define>
diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c
index 921d795630..0fa8aee78e 100644
--- a/src/conf/domain_capabilities.c
+++ b/src/conf/domain_capabilities.c
@@ -412,10 +412,21 @@ virDomainCapsCPUFormat(virBufferPtr buf,
virBufferAddLit(buf, "<cpu>\n");
virBufferAdjustIndent(buf, 2);
- virBufferAsprintf(buf, "<mode name='%s'
supported='%s'/>\n",
+ virBufferAsprintf(buf, "<mode name='%s'
supported='%s'",
virCPUModeTypeToString(VIR_CPU_MODE_HOST_PASSTHROUGH),
cpu->hostPassthrough ? "yes" : "no");
+ if (cpu->hostPassthrough && cpu->hostPassthroughMigratable.report) {
+ virBufferAddLit(buf, ">\n");
+ virBufferAdjustIndent(buf, 2);
+ ENUM_PROCESS(cpu, hostPassthroughMigratable,
+ virTristateSwitchTypeToString);
+ virBufferAdjustIndent(buf, -2);
+ virBufferAddLit(buf, "</mode>\n");
+ } else {
+ virBufferAddLit(buf, "/>\n");
+ }
+
virBufferAsprintf(buf, "<mode name='%s' ",
virCPUModeTypeToString(VIR_CPU_MODE_HOST_MODEL));
if (cpu->hostModel) {
diff --git a/src/conf/domain_capabilities.h b/src/conf/domain_capabilities.h
index 9f4a23d015..685d5e2a44 100644
--- a/src/conf/domain_capabilities.h
+++ b/src/conf/domain_capabilities.h
@@ -145,6 +145,7 @@ typedef struct _virDomainCapsCPU virDomainCapsCPU;
typedef virDomainCapsCPU *virDomainCapsCPUPtr;
struct _virDomainCapsCPU {
bool hostPassthrough;
+ virDomainCapsEnum hostPassthroughMigratable;
virCPUDefPtr hostModel;
virDomainCapsCPUModelsPtr custom;
};
--
2.27.0