diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index b500d35f5b..0651975c88 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -1842,6 +1842,7 @@ Hypervisors may allow certain CPU / machine features to be toggled on/off. + @@ -1930,6 +1931,7 @@ are: hidden Hide the KVM hypervisor from standard MSR based discovery on, off :since:`1.2.8 (QEMU 2.1.0)` hint-dedicated Allows a guest to enable optimizations when running on dedicated vCPUs on, off :since:`5.7.0 (QEMU 2.12.0)` poll-control Decrease IO completion latency by introducing a grace period of busy waiting on, off :since:`6.10.0 (QEMU 4.2)` + pv-ipi Paravirtualized send IPIs on, off :since:`7.10.0 (QEMU 3.1)` ============== ============================================================================ ======= ============================ ``xen`` diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index f71e375a33..67df13d90d 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -7177,6 +7177,11 @@ + + + + + diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 8a7d241df1..4644d18120 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -204,6 +204,7 @@ VIR_ENUM_IMPL(virDomainKVM, "hidden", "hint-dedicated", "poll-control", + "pv-ipi", ); VIR_ENUM_IMPL(virDomainXen, @@ -21789,6 +21790,7 @@ virDomainDefFeaturesCheckABIStability(virDomainDef *src, case VIR_DOMAIN_KVM_HIDDEN: case VIR_DOMAIN_KVM_DEDICATED: case VIR_DOMAIN_KVM_POLLCONTROL: + case VIR_DOMAIN_KVM_PVIPI: if (src->kvm_features[i] != dst->kvm_features[i]) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("State of KVM feature '%s' differs: " @@ -27821,6 +27823,7 @@ virDomainDefFormatFeatures(virBuffer *buf, case VIR_DOMAIN_KVM_HIDDEN: case VIR_DOMAIN_KVM_DEDICATED: case VIR_DOMAIN_KVM_POLLCONTROL: + case VIR_DOMAIN_KVM_PVIPI: if (def->kvm_features[j]) virBufferAsprintf(&childBuf, "<%s state='%s'/>\n", virDomainKVMTypeToString(j), diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index f4be5c84f0..cb6d8975b8 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2073,6 +2073,7 @@ typedef enum { VIR_DOMAIN_KVM_HIDDEN = 0, VIR_DOMAIN_KVM_DEDICATED, VIR_DOMAIN_KVM_POLLCONTROL, + VIR_DOMAIN_KVM_PVIPI, VIR_DOMAIN_KVM_LAST } virDomainKVM; diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 77977c396e..45278c7108 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6848,6 +6848,11 @@ qemuBuildCpuCommandLine(virCommand *cmd, virBufferAddLit(&buf, ",kvm-poll-control=on"); break; + case VIR_DOMAIN_KVM_PVIPI: + if (def->kvm_features[i] == VIR_TRISTATE_SWITCH_OFF) + virBufferAddLit(&buf, ",kvm-pv-ipi=off"); + break; + case VIR_DOMAIN_KVM_LAST: break; }