On 11/10/2011 11:58 AM, Nadav Har'El wrote:
> KVM's existing shadow MMU code already supports nested TDP. To use it, we
> need to set up a new "MMU context" for nested EPT, and create a few callbacks
> for it (nested_ept_*()). We then need to switch back and forth between this
> nested context and the regular MMU context when switching between L1 and L2.
>
> +static int nested_ept_init_mmu_context(struct kvm_vcpu *vcpu)
> +{
> +     int r = kvm_init_shadow_mmu(vcpu, &vcpu->arch.mmu);
> +
> +     vcpu->arch.mmu.set_cr3           = vmx_set_cr3;
> +     vcpu->arch.mmu.get_cr3           = nested_ept_get_cr3;
> +     vcpu->arch.mmu.get_pdptr         = nested_ept_get_pdptr;
> +     vcpu->arch.mmu.inject_page_fault = nested_ept_inject_page_fault;
> +     vcpu->arch.mmu.shadow_root_level = get_ept_level();
> +
> +     vcpu->arch.walk_mmu              = &vcpu->arch.nested_mmu;
> +
> +     return r;
> +}
> +
>

kvm_init_shadow_mmu() will cause ->page_fault to be set to something
like paging64_page_fault(), which is geared to reading EPT ptes.  How
does this work?

-- 
error compiling committee.c: too many arguments to function

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to