Bug 54471

Summary: nVMX: TRUE* MSRs unnecessary
Product: Virtualization Reporter: Nadav Har'El (nyh)
Component: kvmAssignee: virtualization_kvm
Status: RESOLVED INVALID    
Severity: enhancement CC: bonzini
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 3.19 Subsystem:
Regression: No Bisected commit-id:
Bug Depends on:    
Bug Blocks: 94971, 53601    

Description Nadav Har'El 2013-02-25 14:04:47 UTC
According to the spec, the TRUE* MSRs are only necessary if bit 55 of VMX_BASIC
is on. Since we don't set this bit, we don't need to provide these MSRs...
So probably we shouldn't.
Comment 1 Anonymous Emailer 2013-02-25 14:29:08 UTC
Reply-To: jan.kiszka@siemens.com

On 2013-02-25 15:04, bugzilla-daemon@bugzilla.kernel.org wrote:
> https://bugzilla.kernel.org/show_bug.cgi?id=54471
> 
>            Summary: nVMX: TRUE* MSRs unnecessary
>            Product: Virtualization
>            Version: unspecified
>           Platform: All
>         OS/Version: Linux
>               Tree: Mainline
>             Status: NEW
>           Severity: enhancement
>           Priority: P1
>          Component: kvm
>         AssignedTo: virtualization_kvm@kernel-bugs.osdl.org
>         ReportedBy: nyh@math.technion.ac.il
>         Regression: No
> 
> 
> According to the spec, the TRUE* MSRs are only necessary if bit 55 of
> VMX_BASIC
> is on. Since we don't set this bit, we don't need to provide these MSRs...
> So probably we shouldn't.

I tend to say we should (i.e. set bit 55) as there is the risk that
buggy guests could needlessly get confused when we expose very recent
features (like EPT) and do not provide such "old-fashioned" stuff.

Jan
Comment 2 Paolo Bonzini 2015-04-08 08:57:47 UTC
TRUE_* is needed to tell the guest that it can disable CR3 load/store exits.  We were enabling this control by exposing a broken MSR_IA32_VMX_PROCBASED_CTLS value, but commit 560b7ee12ca5 (KVM: nVMX: Fix returned value of MSR_IA32_VMX_PROCBASED_CTLS, 2014-06-16).  So we can no longer remove the TRUE_* MSRs.