Hi all, Recently, I found migration failed when enable vPMU.
migrate vPMU state was introduced in linux-3.10 + qemu-1.7. As long as enable vPMU, qemu will save / load the vmstate_msr_architectural_pmu(msr_global_ctrl) register during the migration. But global_ctrl generated based on cpuid(0xA), the number of general-purpose performance monitoring counters(PMC) can vary according to Intel SDN. The number of PMC presented to vm, does not support configuration currently, it depend on host cpuid, and enable all pmc defaultly at KVM. It cause migration to fail between boards with different PMC counts. The return value of cpuid (0xA) is different dur to cpu, according to Intel SDN,18-10 Vol. 3B: Note: The number of general-purpose performance monitoring counters (i.e. N in Figure 18-9) can vary across processor generations within a processor family, across processor families, or could be different depending on the configuration chosen at boot time in the BIOS regarding Intel Hyper Threading Technology, (e.g. N=2 for 45 nm Intel Atom processors; N =4 for processors based on the Nehalem microarchitecture; for processors based on the Sandy Bridge microarchitecture, N = 4 if Intel Hyper Threading Technology is active and N=8 if not active). Also I found, N=8 if HT is not active based on the broadwell,, such as CPU E7-8890 v4 @ 2.20GHz # ./x86_64-softmmu/qemu-system-x86_64 --enable-kvm -smp 4 -m 4096 -hda /data/zyy/test_qemu.img.sles12sp1 -vnc :99 -cpu kvm64,pmu=true -incoming tcp::8888 Completed 100 % qemu-system-x86_64: error: failed to set MSR 0x38f to 0x7000000ff qemu-system-x86_64: /data/zyy/git/test/qemu/target/i386/kvm.c:1833: kvm_put_msrs: Assertion `ret == cpu->kvm_msr_buf->nmsrs' failed. Aborted So make number of pmc configurable to vm ? Any better idea ? Regards, -Zhuang Yanying