Message ID | 20200523161455.3940-1-mlevitsk@redhat.com (mailing list archive) |
---|---|
Headers | show |
Series | Fix issue with not starting nesting guests on my system | expand |
On 5/23/20 9:14 AM, Maxim Levitsky wrote: > On my AMD machine I noticed that I can't start any nested guests, > because nested KVM (everything from master git branches) complains > that it can't find msr MSR_IA32_UMWAIT_CONTROL which my system doesn't support > at all anyway. > > I traced it to the recently added UMWAIT support to qemu and kvm. > The kvm portion exposed the new MSR in KVM_GET_MSR_INDEX_LIST without > checking that it the underlying feature is supported in CPUID. > It happened to work when non nested because as a precation kvm, > tries to read each MSR on host before adding it to that list, > and when read gets a #GP it ignores it. > > When running nested, the L1 hypervisor can be set to ignore unknown > msr read/writes (I need this for some other guests), thus this safety > check doesn't work anymore. > > V2: * added a patch to setup correctly the X86_FEATURE_WAITPKG kvm capability > * dropped the cosmetic fix patch as it is now fixed in kvm/queue > > Best regards, > Maxim Levitsky > > Maxim Levitsky (2): > kvm/x86/vmx: enable X86_FEATURE_WAITPKG in KVM capabilities > kvm/x86: don't expose MSR_IA32_UMWAIT_CONTROL unconditionally > > arch/x86/kvm/vmx/vmx.c | 3 +++ > arch/x86/kvm/x86.c | 4 ++++ > 2 files changed, 7 insertions(+) > Nit: The added 'break' statement in patch# 2 is not required. Reviewed-by: Krish Sadhukhan <krish.sadhukhan@oracle.com>
On Sat, May 23, 2020 at 07:14:53PM +0300, Maxim Levitsky wrote: > On my AMD machine I noticed that I can't start any nested guests, > because nested KVM (everything from master git branches) complains > that it can't find msr MSR_IA32_UMWAIT_CONTROL which my system doesn't support > at all anyway. > > I traced it to the recently added UMWAIT support to qemu and kvm. > The kvm portion exposed the new MSR in KVM_GET_MSR_INDEX_LIST without > checking that it the underlying feature is supported in CPUID. > It happened to work when non nested because as a precation kvm, > tries to read each MSR on host before adding it to that list, > and when read gets a #GP it ignores it. > > When running nested, the L1 hypervisor can be set to ignore unknown > msr read/writes (I need this for some other guests), thus this safety > check doesn't work anymore. > > V2: * added a patch to setup correctly the X86_FEATURE_WAITPKG kvm capability > * dropped the cosmetic fix patch as it is now fixed in kvm/queue > > Best regards, > Maxim Levitsky > > Maxim Levitsky (2): > kvm/x86/vmx: enable X86_FEATURE_WAITPKG in KVM capabilities > kvm/x86: don't expose MSR_IA32_UMWAIT_CONTROL unconditionally Standard scoping in the shortlog is "KVM: VMX:" and "KVM: x86:". > > arch/x86/kvm/vmx/vmx.c | 3 +++ > arch/x86/kvm/x86.c | 4 ++++ > 2 files changed, 7 insertions(+) > > -- > 2.26.2 > >
On Tue, May 26, 2020 at 06:03:32PM -0700, Krish Sadhukhan wrote: > > On 5/23/20 9:14 AM, Maxim Levitsky wrote: > >On my AMD machine I noticed that I can't start any nested guests, > >because nested KVM (everything from master git branches) complains > >that it can't find msr MSR_IA32_UMWAIT_CONTROL which my system doesn't support > >at all anyway. > > > >I traced it to the recently added UMWAIT support to qemu and kvm. > >The kvm portion exposed the new MSR in KVM_GET_MSR_INDEX_LIST without > >checking that it the underlying feature is supported in CPUID. > >It happened to work when non nested because as a precation kvm, > >tries to read each MSR on host before adding it to that list, > >and when read gets a #GP it ignores it. > > > >When running nested, the L1 hypervisor can be set to ignore unknown > >msr read/writes (I need this for some other guests), thus this safety > >check doesn't work anymore. > > > >V2: * added a patch to setup correctly the X86_FEATURE_WAITPKG kvm capability > > * dropped the cosmetic fix patch as it is now fixed in kvm/queue > > > >Best regards, > > Maxim Levitsky > > > >Maxim Levitsky (2): > > kvm/x86/vmx: enable X86_FEATURE_WAITPKG in KVM capabilities > > kvm/x86: don't expose MSR_IA32_UMWAIT_CONTROL unconditionally > > > > arch/x86/kvm/vmx/vmx.c | 3 +++ > > arch/x86/kvm/x86.c | 4 ++++ > > 2 files changed, 7 insertions(+) > > > Nit: The added 'break' statement in patch# 2 is not required. It is unless you want to add a fallthrough annotation.
On Tue, 2020-05-26 at 18:13 -0700, Sean Christopherson wrote: > On Sat, May 23, 2020 at 07:14:53PM +0300, Maxim Levitsky wrote: > > On my AMD machine I noticed that I can't start any nested guests, > > because nested KVM (everything from master git branches) complains > > that it can't find msr MSR_IA32_UMWAIT_CONTROL which my system > > doesn't support > > at all anyway. > > > > I traced it to the recently added UMWAIT support to qemu and kvm. > > The kvm portion exposed the new MSR in KVM_GET_MSR_INDEX_LIST > > without > > checking that it the underlying feature is supported in CPUID. > > It happened to work when non nested because as a precation kvm, > > tries to read each MSR on host before adding it to that list, > > and when read gets a #GP it ignores it. > > > > When running nested, the L1 hypervisor can be set to ignore unknown > > msr read/writes (I need this for some other guests), thus this > > safety > > check doesn't work anymore. > > > > V2: * added a patch to setup correctly the X86_FEATURE_WAITPKG kvm > > capability > > * dropped the cosmetic fix patch as it is now fixed in > > kvm/queue > > > > Best regards, > > Maxim Levitsky > > > > Maxim Levitsky (2): > > kvm/x86/vmx: enable X86_FEATURE_WAITPKG in KVM capabilities > > kvm/x86: don't expose MSR_IA32_UMWAIT_CONTROL unconditionally > > Standard scoping in the shortlog is "KVM: VMX:" and "KVM: x86:". This another thing I usually mess up in the commit messages. Fixed and noted for futher patches > > > arch/x86/kvm/vmx/vmx.c | 3 +++ > > arch/x86/kvm/x86.c | 4 ++++ > > 2 files changed, 7 insertions(+) > > > > -- > > 2.26.2 > > > >
On Tue, 2020-05-26 at 18:13 -0700, Sean Christopherson wrote: > On Sat, May 23, 2020 at 07:14:53PM +0300, Maxim Levitsky wrote: > > On my AMD machine I noticed that I can't start any nested guests, > > because nested KVM (everything from master git branches) complains > > that it can't find msr MSR_IA32_UMWAIT_CONTROL which my system > > doesn't support > > at all anyway. > > > > I traced it to the recently added UMWAIT support to qemu and kvm. > > The kvm portion exposed the new MSR in KVM_GET_MSR_INDEX_LIST > > without > > checking that it the underlying feature is supported in CPUID. > > It happened to work when non nested because as a precation kvm, > > tries to read each MSR on host before adding it to that list, > > and when read gets a #GP it ignores it. > > > > When running nested, the L1 hypervisor can be set to ignore unknown > > msr read/writes (I need this for some other guests), thus this > > safety > > check doesn't work anymore. > > > > V2: * added a patch to setup correctly the X86_FEATURE_WAITPKG kvm > > capability > > * dropped the cosmetic fix patch as it is now fixed in kvm/queue > > > > Best regards, > > Maxim Levitsky > > > > Maxim Levitsky (2): > > kvm/x86/vmx: enable X86_FEATURE_WAITPKG in KVM capabilities > > kvm/x86: don't expose MSR_IA32_UMWAIT_CONTROL unconditionally > > Standard scoping in the shortlog is "KVM: VMX:" and "KVM: x86:". Noted and I will use it from now on. Thanks! Best regards, Maxim Levitsky > > > arch/x86/kvm/vmx/vmx.c | 3 +++ > > arch/x86/kvm/x86.c | 4 ++++ > > 2 files changed, 7 insertions(+) > > > > -- > > 2.26.2 > > > >
On 23/05/20 18:14, Maxim Levitsky wrote: > On my AMD machine I noticed that I can't start any nested guests, > because nested KVM (everything from master git branches) complains > that it can't find msr MSR_IA32_UMWAIT_CONTROL which my system doesn't support > at all anyway. > > I traced it to the recently added UMWAIT support to qemu and kvm. > The kvm portion exposed the new MSR in KVM_GET_MSR_INDEX_LIST without > checking that it the underlying feature is supported in CPUID. > It happened to work when non nested because as a precation kvm, > tries to read each MSR on host before adding it to that list, > and when read gets a #GP it ignores it. > > When running nested, the L1 hypervisor can be set to ignore unknown > msr read/writes (I need this for some other guests), thus this safety > check doesn't work anymore. > > V2: * added a patch to setup correctly the X86_FEATURE_WAITPKG kvm capability > * dropped the cosmetic fix patch as it is now fixed in kvm/queue > > Best regards, > Maxim Levitsky > > Maxim Levitsky (2): > kvm/x86/vmx: enable X86_FEATURE_WAITPKG in KVM capabilities > kvm/x86: don't expose MSR_IA32_UMWAIT_CONTROL unconditionally > > arch/x86/kvm/vmx/vmx.c | 3 +++ > arch/x86/kvm/x86.c | 4 ++++ > 2 files changed, 7 insertions(+) > Queued for 5.7, thanks (with cosmetic touches to the commit message, and moving the "case" earlier to avoid conflicts). Paolo