On 2013-08-05 10:07, Gleb Natapov wrote:
> From: Nadav Har'El <n...@il.ibm.com>
> 
> Advertise the support of EPT to the L1 guest, through the appropriate MSR.
> 
> This is the last patch of the basic Nested EPT feature, so as to allow
> bisection through this patch series: The guest will not see EPT support until
> this last patch, and will not attempt to use the half-applied feature.
> 
> Reviewed-by: Xiao Guangrong <xiaoguangr...@linux.vnet.ibm.com>
> Signed-off-by: Nadav Har'El <n...@il.ibm.com>
> Signed-off-by: Jun Nakajima <jun.nakaj...@intel.com>
> Signed-off-by: Xinhao Xu <xinhao...@intel.com>
> Signed-off-by: Yang Zhang <yang.z.zh...@intel.com>
> Signed-off-by: Gleb Natapov <g...@redhat.com>
> ---
>  arch/x86/kvm/vmx.c |   20 ++++++++++++++++++--
>  1 file changed, 18 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
> index 51c06c2..c65a08a 100644
> --- a/arch/x86/kvm/vmx.c
> +++ b/arch/x86/kvm/vmx.c
> @@ -2250,6 +2250,22 @@ static __init void nested_vmx_setup_ctls_msrs(void)
>               SECONDARY_EXEC_VIRTUALIZE_APIC_ACCESSES |
>               SECONDARY_EXEC_WBINVD_EXITING;
>  
> +     if (enable_ept) {
> +             /* nested EPT: emulate EPT also to L1 */
> +             nested_vmx_secondary_ctls_high |= SECONDARY_EXEC_ENABLE_EPT;
> +             nested_vmx_ept_caps = VMX_EPT_PAGE_WALK_4_BIT;
> +             nested_vmx_ept_caps |= VMX_EPT_INVEPT_BIT;
> +             nested_vmx_ept_caps &= vmx_capability.ept;
> +             /*
> +              * Since invept is completely emulated we support both global
> +              * and context invalidation independent of what host cpu
> +              * supports
> +              */
> +             nested_vmx_ept_caps |= VMX_EPT_EXTENT_GLOBAL_BIT |

And another whitespace damage (space after tab).

Jan

> +                     VMX_EPT_EXTENT_CONTEXT_BIT;
> +     } else
> +             nested_vmx_ept_caps = 0;
> +
>       /* miscellaneous data */
>       rdmsr(MSR_IA32_VMX_MISC, nested_vmx_misc_low, nested_vmx_misc_high);
>       nested_vmx_misc_low &= VMX_MISC_PREEMPTION_TIMER_RATE_MASK |
> @@ -2358,8 +2374,8 @@ static int vmx_get_vmx_msr(struct kvm_vcpu *vcpu, u32 
> msr_index, u64 *pdata)
>                                       nested_vmx_secondary_ctls_high);
>               break;
>       case MSR_IA32_VMX_EPT_VPID_CAP:
> -             /* Currently, no nested ept or nested vpid */
> -             *pdata = 0;
> +             /* Currently, no nested vpid support */
> +             *pdata = nested_vmx_ept_caps;
>               break;
>       default:
>               return 0;
> 


Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to