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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html