Messages in this thread | | | Date | Thu, 11 Mar 2010 08:47:21 +0200 | From | Avi Kivity <> | Subject | Re: [PATCH 02/18] KVM: MMU: Make tdp_enabled a mmu-context parameter |
| |
On 03/10/2010 05:26 PM, Joerg Roedel wrote: > On Wed, Mar 10, 2010 at 04:53:29PM +0200, Avi Kivity wrote: > >> On 03/10/2010 04:44 PM, Joerg Roedel wrote: >> >>> On Mon, Mar 08, 2010 at 11:17:41AM +0200, Avi Kivity wrote: >>> >>>> On 03/03/2010 09:12 PM, Joerg Roedel wrote: >>>> >>>>> This patch changes the tdp_enabled flag from its global >>>>> meaning to the mmu-context. This is necessary for Nested SVM >>>>> with emulation of Nested Paging where we need an extra MMU >>>>> context to shadow the Nested Nested Page Table. >>>>> >>>>> >>>>> diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h >>>>> index ec891a2..e7bef19 100644 >>>>> --- a/arch/x86/include/asm/kvm_host.h >>>>> +++ b/arch/x86/include/asm/kvm_host.h >>>>> @@ -254,6 +254,7 @@ struct kvm_mmu { >>>>> int root_level; >>>>> int shadow_root_level; >>>>> union kvm_mmu_page_role base_role; >>>>> + bool tdp_enabled; >>>>> >>>>> >>>> This needs a different name, since the old one is still around. >>>> Perhaps we could call it parent_mmu and make it a kvm_mmu pointer. >>>> >>> Hmm, how about renaming the global tdp_enabled variable to tdp_usable? >>> The global variable indicates if tdp is _usable_ and we can _enable_ it >>> for a mmu context. >>> >> I think of the global flags as host tdp, and the mmu as guest tdp >> (but maybe this is wrong?). If that makes sense, the naming should >> reflect that. >> > The basic flow of the mmu state with npt-npt is: > > 1. As long as the L1 is running the arch.mmu context is in tdp > mode and builds a direct-mapped page table. > > 2. When vmrun is emulated and the nested vmcb enables nested > paging, arch.mmu is switched to a shadow-mmu mode which now > shadows the l1 nested page table. > So when the l2-guest runs with nested paging the > arch.mmu.tdp_enabled variable on the host is false. > > 3. On a vmexit emulation the mmu is switched back to tdp > handling state. > > So the mmu.tdp_enabled parameter is about tdp being enabled for the > mmu context (so mmu.tdp_enabled means that we build a l1-direct-mapped > page table when true or shadow a l1-page-table when false). Thats why I > think the 'tdp_enabled' name makes sense in the mmu-context. > The global flag only shows if an mmu-context could be in tdp-state. So > tdp_usable may be a good name for it. > >
tdp is still used in both cases, so that name is confusing. We could call it mmu.direct_map (and set it for real mode?) or mmu.virtual_map (with the opposite sense). Or something.
-- error compiling committee.c: too many arguments to function
| |