Add suport for invariant TSC flag (CPUID 0x80000007, bit 8 of EDX). If this flag is enabled, the TSC ticks at a constant rate across all ACPI P-, C- and T-states. This can be enabled by adding: <feature name='invtsc'/> to the <cpu> element. Migration and saving the domain does not work with this flag. QEMU support for this is not merged yet: https://lists.gnu.org/archive/html/qemu-devel/2014-04/msg05024.html The feature name "invtsc" differs from the name "" used by the linux kernel: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/x86/kernel/cpu/powerflags.c?id=30321c7b#n18 --- v1: https://www.redhat.com/archives/libvir-list/2014-May/msg00183.html src/cpu/cpu_map.xml | 5 +++++ src/qemu/qemu_migration.c | 14 ++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/cpu/cpu_map.xml b/src/cpu/cpu_map.xml index 7d34d40..ffaeb92 100644 --- a/src/cpu/cpu_map.xml +++ b/src/cpu/cpu_map.xml @@ -327,6 +327,11 @@ <cpuid function='0x00000007' ebx='0x00100000'/> </feature> + <!-- Advanced Power Management edx features --> + <feature name='invtsc'> + <cpuid function='0x80000007' edx='0x00000100'/> + </feature> + <!-- models --> <model name='486'> <feature name='fpu'/> diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index a9f7fea..9ae3047 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -1513,6 +1513,20 @@ qemuMigrationIsAllowed(virQEMUDriverPtr driver, virDomainObjPtr vm, return false; } + for (i = 0; i < def->cpu->nfeatures; i++) { + virCPUFeatureDefPtr feature = &def->cpu->features[i]; + + if (feature->policy != VIR_CPU_FEATURE_REQUIRE) + continue; + + if (STREQ(feature->name, "invtsc")) { + virReportError(VIR_ERR_OPERATION_INVALID, + _("domain has CPU feature: %s"), + feature->name); + return false; + } + } + return true; } -- 1.8.3.2 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list