mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-01 06:42:22 +00:00
qemu: add support for Hyper-V Enlightened VMCS
QEMU 3.1 supports Hyper-V Enlightened VMCS feature which significantly speeds up nested Hyper-V on KVM environments. Reviewed-by: Andrea Bolognani <abologna@redhat.com> Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
This commit is contained in:
parent
c3d0d7cc8a
commit
362b4ee616
@ -6883,6 +6883,7 @@ qemuBuildCpuCommandLine(virCommandPtr cmd,
|
|||||||
case VIR_DOMAIN_HYPERV_REENLIGHTENMENT:
|
case VIR_DOMAIN_HYPERV_REENLIGHTENMENT:
|
||||||
case VIR_DOMAIN_HYPERV_TLBFLUSH:
|
case VIR_DOMAIN_HYPERV_TLBFLUSH:
|
||||||
case VIR_DOMAIN_HYPERV_IPI:
|
case VIR_DOMAIN_HYPERV_IPI:
|
||||||
|
case VIR_DOMAIN_HYPERV_EVMCS:
|
||||||
if (def->hyperv_features[i] == VIR_TRISTATE_SWITCH_ON)
|
if (def->hyperv_features[i] == VIR_TRISTATE_SWITCH_ON)
|
||||||
virBufferAsprintf(&buf, ",hv_%s",
|
virBufferAsprintf(&buf, ",hv_%s",
|
||||||
virDomainHypervTypeToString(i));
|
virDomainHypervTypeToString(i));
|
||||||
@ -6900,7 +6901,6 @@ qemuBuildCpuCommandLine(virCommandPtr cmd,
|
|||||||
def->hyperv_vendor_id);
|
def->hyperv_vendor_id);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_HYPERV_EVMCS:
|
|
||||||
/* coverity[dead_error_begin] */
|
/* coverity[dead_error_begin] */
|
||||||
case VIR_DOMAIN_HYPERV_LAST:
|
case VIR_DOMAIN_HYPERV_LAST:
|
||||||
break;
|
break;
|
||||||
|
@ -1540,6 +1540,7 @@ qemuParseCommandLineCPU(virDomainDefPtr dom,
|
|||||||
case VIR_DOMAIN_HYPERV_REENLIGHTENMENT:
|
case VIR_DOMAIN_HYPERV_REENLIGHTENMENT:
|
||||||
case VIR_DOMAIN_HYPERV_TLBFLUSH:
|
case VIR_DOMAIN_HYPERV_TLBFLUSH:
|
||||||
case VIR_DOMAIN_HYPERV_IPI:
|
case VIR_DOMAIN_HYPERV_IPI:
|
||||||
|
case VIR_DOMAIN_HYPERV_EVMCS:
|
||||||
if (value) {
|
if (value) {
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
_("HyperV feature '%s' should not "
|
_("HyperV feature '%s' should not "
|
||||||
@ -1580,7 +1581,6 @@ qemuParseCommandLineCPU(virDomainDefPtr dom,
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_HYPERV_EVMCS:
|
|
||||||
case VIR_DOMAIN_HYPERV_LAST:
|
case VIR_DOMAIN_HYPERV_LAST:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -3965,12 +3965,12 @@ qemuProcessVerifyHypervFeatures(virDomainDefPtr def,
|
|||||||
case VIR_DOMAIN_HYPERV_REENLIGHTENMENT:
|
case VIR_DOMAIN_HYPERV_REENLIGHTENMENT:
|
||||||
case VIR_DOMAIN_HYPERV_TLBFLUSH:
|
case VIR_DOMAIN_HYPERV_TLBFLUSH:
|
||||||
case VIR_DOMAIN_HYPERV_IPI:
|
case VIR_DOMAIN_HYPERV_IPI:
|
||||||
|
case VIR_DOMAIN_HYPERV_EVMCS:
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
_("host doesn't support hyperv '%s' feature"),
|
_("host doesn't support hyperv '%s' feature"),
|
||||||
virDomainHypervTypeToString(i));
|
virDomainHypervTypeToString(i));
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
case VIR_DOMAIN_HYPERV_EVMCS:
|
|
||||||
/* coverity[dead_error_begin] */
|
/* coverity[dead_error_begin] */
|
||||||
case VIR_DOMAIN_HYPERV_VENDOR_ID:
|
case VIR_DOMAIN_HYPERV_VENDOR_ID:
|
||||||
case VIR_DOMAIN_HYPERV_LAST:
|
case VIR_DOMAIN_HYPERV_LAST:
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
<reenlightenment state='off'/>
|
<reenlightenment state='off'/>
|
||||||
<tlbflush state='off'/>
|
<tlbflush state='off'/>
|
||||||
<ipi state='off'/>
|
<ipi state='off'/>
|
||||||
|
<evmcs state='off'/>
|
||||||
</hyperv>
|
</hyperv>
|
||||||
</features>
|
</features>
|
||||||
<clock offset='utc'/>
|
<clock offset='utc'/>
|
||||||
|
@ -10,7 +10,7 @@ QEMU_AUDIO_DRV=none \
|
|||||||
-machine pc,accel=tcg,usb=off,dump-guest-core=off \
|
-machine pc,accel=tcg,usb=off,dump-guest-core=off \
|
||||||
-cpu 'qemu32,hv_relaxed,hv_vapic,hv_spinlocks=0x2fff,hv_vpindex,hv_runtime,\
|
-cpu 'qemu32,hv_relaxed,hv_vapic,hv_spinlocks=0x2fff,hv_vpindex,hv_runtime,\
|
||||||
hv_synic,hv_stimer,hv_reset,hv_vendor_id=KVM Hv,hv_frequencies,\
|
hv_synic,hv_stimer,hv_reset,hv_vendor_id=KVM Hv,hv_frequencies,\
|
||||||
hv_reenlightenment,hv_tlbflush,hv_ipi' \
|
hv_reenlightenment,hv_tlbflush,hv_ipi,hv_evmcs' \
|
||||||
-m 214 \
|
-m 214 \
|
||||||
-smp 6,sockets=6,cores=1,threads=1 \
|
-smp 6,sockets=6,cores=1,threads=1 \
|
||||||
-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
|
-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
<reenlightenment state='on'/>
|
<reenlightenment state='on'/>
|
||||||
<tlbflush state='on'/>
|
<tlbflush state='on'/>
|
||||||
<ipi state='on'/>
|
<ipi state='on'/>
|
||||||
|
<evmcs state='on'/>
|
||||||
</hyperv>
|
</hyperv>
|
||||||
</features>
|
</features>
|
||||||
<clock offset='utc'/>
|
<clock offset='utc'/>
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
<reenlightenment state='off'/>
|
<reenlightenment state='off'/>
|
||||||
<tlbflush state='off'/>
|
<tlbflush state='off'/>
|
||||||
<ipi state='off'/>
|
<ipi state='off'/>
|
||||||
|
<evmcs state='off'/>
|
||||||
</hyperv>
|
</hyperv>
|
||||||
</features>
|
</features>
|
||||||
<clock offset='utc'/>
|
<clock offset='utc'/>
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
<reenlightenment state='on'/>
|
<reenlightenment state='on'/>
|
||||||
<tlbflush state='on'/>
|
<tlbflush state='on'/>
|
||||||
<ipi state='on'/>
|
<ipi state='on'/>
|
||||||
|
<evmcs state='on'/>
|
||||||
</hyperv>
|
</hyperv>
|
||||||
</features>
|
</features>
|
||||||
<clock offset='utc'/>
|
<clock offset='utc'/>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user