Signed-off-by: Andrea Bolognani <abologna(a)redhat.com>
---
docs/schemas/domaincommon.rng | 5 +++++
src/conf/domain_conf.c | 4 ++++
src/conf/domain_conf.h | 1 +
src/qemu/qemu_command.c | 5 +++++
src/qemu/qemu_domain.c | 1 +
tests/qemuxml2argvdata/pseries-features-invalid-machine.xml | 1 +
tests/qemuxml2argvdata/pseries-features.args | 2 +-
tests/qemuxml2argvdata/pseries-features.xml | 1 +
tests/qemuxml2argvtest.c | 1 +
tests/qemuxml2xmltest.c | 1 +
10 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
index 1a1e87ce31..59da540841 100644
--- a/docs/schemas/domaincommon.rng
+++ b/docs/schemas/domaincommon.rng
@@ -4812,6 +4812,11 @@
<ref name="hwbugstate"/>
</element>
</optional>
+ <optional>
+ <element name="ibs">
+ <ref name="hwbugstate"/>
+ </element>
+ </optional>
<optional>
<ref name="vmcoreinfo"/>
</optional>
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 7aa6c7d134..867ba2465e 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -155,6 +155,7 @@ VIR_ENUM_IMPL(virDomainFeature, VIR_DOMAIN_FEATURE_LAST,
"htm",
"sbbc",
"cfpc",
+ "ibs",
);
VIR_ENUM_IMPL(virDomainCapabilitiesPolicy, VIR_DOMAIN_CAPABILITIES_POLICY_LAST,
@@ -19365,6 +19366,7 @@ virDomainDefParseXML(xmlDocPtr xml,
case VIR_DOMAIN_FEATURE_SBBC:
case VIR_DOMAIN_FEATURE_CFPC:
+ case VIR_DOMAIN_FEATURE_IBS:
if (!(tmp = virXMLPropString(nodes[i], "state"))) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("missing state attribute '%s' of feature
'%s'"),
@@ -21550,6 +21552,7 @@ virDomainDefFeaturesCheckABIStability(virDomainDefPtr src,
case VIR_DOMAIN_FEATURE_SBBC:
case VIR_DOMAIN_FEATURE_CFPC:
+ case VIR_DOMAIN_FEATURE_IBS:
if (src->features[i] != dst->features[i]) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("State of feature '%s' differs: "
@@ -27094,6 +27097,7 @@ virDomainDefFormatInternal(virDomainDefPtr def,
case VIR_DOMAIN_FEATURE_SBBC:
case VIR_DOMAIN_FEATURE_CFPC:
+ case VIR_DOMAIN_FEATURE_IBS:
if (def->features[i] == VIR_DOMAIN_HWBUG_NONE)
break;
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 8f1d64b800..d595aad897 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -1749,6 +1749,7 @@ typedef enum {
VIR_DOMAIN_FEATURE_HTM,
VIR_DOMAIN_FEATURE_SBBC,
VIR_DOMAIN_FEATURE_CFPC,
+ VIR_DOMAIN_FEATURE_IBS,
VIR_DOMAIN_FEATURE_LAST
} virDomainFeature;
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 70082cafd8..1f42fc367f 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -7127,6 +7127,8 @@ virDomainFeatureToQEMUCaps(int feature)
return QEMU_CAPS_MACHINE_PSERIES_CAP_SBBC;
case VIR_DOMAIN_FEATURE_CFPC:
return QEMU_CAPS_MACHINE_PSERIES_CAP_CFPC;
+ case VIR_DOMAIN_FEATURE_IBS:
+ return QEMU_CAPS_MACHINE_PSERIES_CAP_IBS;
case VIR_DOMAIN_FEATURE_ACPI:
case VIR_DOMAIN_FEATURE_APIC:
case VIR_DOMAIN_FEATURE_PAE:
@@ -7161,6 +7163,8 @@ virDomainFeatureToMachineOption(int feature)
return "cap-sbbc";
case VIR_DOMAIN_FEATURE_CFPC:
return "cap-cfpc";
+ case VIR_DOMAIN_FEATURE_IBS:
+ return "cap-ibs";
case VIR_DOMAIN_FEATURE_ACPI:
case VIR_DOMAIN_FEATURE_APIC:
case VIR_DOMAIN_FEATURE_PAE:
@@ -7473,6 +7477,7 @@ qemuBuildMachineCommandLine(virCommandPtr cmd,
case VIR_DOMAIN_FEATURE_SBBC:
case VIR_DOMAIN_FEATURE_CFPC:
+ case VIR_DOMAIN_FEATURE_IBS:
if (def->features[i] == VIR_DOMAIN_HWBUG_NONE)
break;
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 2637c014e8..d2fb3f9d3c 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -3392,6 +3392,7 @@ qemuDomainDefValidateFeatures(const virDomainDef *def)
case VIR_DOMAIN_FEATURE_SBBC:
case VIR_DOMAIN_FEATURE_CFPC:
+ case VIR_DOMAIN_FEATURE_IBS:
if (def->features[i] != VIR_DOMAIN_HWBUG_NONE &&
!qemuDomainIsPSeries(def)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
diff --git a/tests/qemuxml2argvdata/pseries-features-invalid-machine.xml
b/tests/qemuxml2argvdata/pseries-features-invalid-machine.xml
index 1a59772341..2284e0eae2 100644
--- a/tests/qemuxml2argvdata/pseries-features-invalid-machine.xml
+++ b/tests/qemuxml2argvdata/pseries-features-invalid-machine.xml
@@ -12,6 +12,7 @@
<htm state='on'/>
<sbbc state='broken'/>
<cfpc state='workaround'/>
+ <ibs state='fixed'/>
</features>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
diff --git a/tests/qemuxml2argvdata/pseries-features.args
b/tests/qemuxml2argvdata/pseries-features.args
index 7c4bf5a2ef..9529c38264 100644
--- a/tests/qemuxml2argvdata/pseries-features.args
+++ b/tests/qemuxml2argvdata/pseries-features.args
@@ -8,7 +8,7 @@ QEMU_AUDIO_DRV=none \
-name guest \
-S \
-machine pseries,accel=tcg,resize-hpt=required,cap-htm=on,cap-sbbc=broken,\
-cap-cfpc=workaround \
+cap-cfpc=workaround,cap-ibs=fixed \
-m 512 \
-smp 1,sockets=1,cores=1,threads=1 \
-uuid 1ccfd97d-5eb4-478a-bbe6-88d254c16db7 \
diff --git a/tests/qemuxml2argvdata/pseries-features.xml
b/tests/qemuxml2argvdata/pseries-features.xml
index a0a60a4917..af19079ab3 100644
--- a/tests/qemuxml2argvdata/pseries-features.xml
+++ b/tests/qemuxml2argvdata/pseries-features.xml
@@ -13,6 +13,7 @@
<htm state='on'/>
<sbbc state='broken'/>
<cfpc state='workaround'/>
+ <ibs state='fixed'/>
</features>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index 86bf565f52..0778254ca8 100644
--- a/tests/qemuxml2argvtest.c
+++ b/tests/qemuxml2argvtest.c
@@ -1901,6 +1901,7 @@ mymain(void)
QEMU_CAPS_MACHINE_PSERIES_CAP_HTM,
QEMU_CAPS_MACHINE_PSERIES_CAP_SBBC,
QEMU_CAPS_MACHINE_PSERIES_CAP_CFPC,
+ QEMU_CAPS_MACHINE_PSERIES_CAP_IBS,
QEMU_CAPS_MACHINE_PSERIES_RESIZE_HPT);
DO_TEST_FAILURE("pseries-features",
QEMU_CAPS_MACHINE_OPT);
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
index 07f89291a0..d85e312ef8 100644
--- a/tests/qemuxml2xmltest.c
+++ b/tests/qemuxml2xmltest.c
@@ -768,6 +768,7 @@ mymain(void)
QEMU_CAPS_MACHINE_PSERIES_CAP_HTM,
QEMU_CAPS_MACHINE_PSERIES_CAP_SBBC,
QEMU_CAPS_MACHINE_PSERIES_CAP_CFPC,
+ QEMU_CAPS_MACHINE_PSERIES_CAP_IBS,
QEMU_CAPS_MACHINE_PSERIES_RESIZE_HPT);
DO_TEST("pseries-serial-native",
--
2.14.3