Hello All, We discovered guests hanging when using the 4.1.y kernel after 4.1.16 with live migration after CentOS applied this patch to the latest version of qemu-kvm user space: https://git.centos.org/blob/rpms!!qemu-kvm.git/34b32196890e2c41b0aee042e600ba422f29db17/SOURCES!kvm-target-i386-get-put-MSR_TSC_AUX-across-reset-and-mig.patch Please also see this Bugzilla entry: https://bugzilla.redhat.com/show_bug.cgi?id=1408333 After a bisect, We found this commit to be causing the hang: 8a3185c54d650a86dafc8d8bcafa124b50944315 KVM: x86: expose MSR_TSC_AUX to userspace It turns out that this is not actually the problem, but rather these commits need to be pulled in as well to support the 8a31 commit: 609e36d372a KVM: x86: pass host_initiated to functions that read MSRs 81b1b9ca6d5 KVM: VMX: Fix host initiated access to guest MSR_TSC_AUX Thus, we need to either: 1. Revert commit 8a3185c54d650a86dafc8d8bcafa124b50944315 - or - 2. Merge commits 609e36d372a and 81b1b9ca6d5 into 4.1.y. If you choose the latter options, then please see below for the backport patch of 81b1b9ca6d5 (609e36d372a cherry-picks just fine). What do you believe would be best? -- Eric Wheeler >From 788baceebe8a7bbfab4da82caebbca8cdf188e1a Mon Sep 17 00:00:00 2001 From: Haozhong Zhang <haozhong.zhang@xxxxxxxxx> Date: Mon, 14 Dec 2015 23:13:38 +0800 Subject: [PATCH] KVM: VMX: Fix host initiated access to guest MSR_TSC_AUX The current handling of accesses to guest MSR_TSC_AUX returns error if vcpu does not support rdtscp, though those accesses are initiated by host. This can result in the reboot failure of some versions of QEMU. This patch fixes this issue by passing those host initiated accesses for further handling instead. Signed-off-by: Haozhong Zhang <haozhong.zhang@xxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> Conflicts: arch/x86/kvm/vmx.c --- arch/x86/kvm/vmx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index 341ea55..6b219a7 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c @@ -2697,7 +2697,7 @@ static int vmx_get_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 *pdata) data = vcpu->arch.ia32_xss; break; case MSR_TSC_AUX: - if (!to_vmx(vcpu)->rdtscp_enabled) + if (!to_vmx(vcpu)->rdtscp_enabled && !msr_info->host_initiated) return 1; /* Otherwise falls through */ default: @@ -2804,7 +2804,7 @@ static int vmx_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info) clear_atomic_switch_msr(vmx, MSR_IA32_XSS); break; case MSR_TSC_AUX: - if (!vmx->rdtscp_enabled) + if (!vmx->rdtscp_enabled && !msr_info->host_initiated) return 1; /* Check reserved bit, higher 32 bits should be zero */ if ((data >> 32) != 0) -- 1.8.3.1