On Thursday 09 October 2008 16:44:19 Avi Kivity wrote:
> Sheng Yang wrote:
> > The effective memory type of EPT is the mixture of MSR_IA32_CR_PAT and
> > memory type field of EPT entry.
> >
> >
> >
> > @@ -168,6 +168,7 @@ static u64 __read_mostly shadow_x_mask; /* mutual
> > exclusive with nx_mask */ static u64 __read_mostly shadow_user_mask;
> >  static u64 __read_mostly shadow_accessed_mask;
> >  static u64 __read_mostly shadow_dirty_mask;
> > +static u64 __read_mostly shadow_mt_mask;
>
> For shadow, the mt mask is different based on the level of the page
> table, so we need an array here.  This can of course be left until
> shadow pat is implemented.
>
> > +   if (mt_mask) {
> > +           mt_mask = get_memory_type(vcpu, gfn) <<
> > +                     kvm_x86_ops->get_mt_mask_shift();
> > +           spte |= mt_mask;
> > +   }
>
> For shadow, it's not a simple shift, since for large pages one of the
> bits is at position 12.  So we would need the callback to calculate the
> mask value.
>
> Perhaps even simpler, have a 4x8 array, with the first index the page
> table level and the second index the memory type.  The initialization
> code can prepare the array like it prepares the other masks.
>
> This can wait until we have a shadow pat implementation.

Yes, of course. Now this mask is just used by EPT, so I do it like this. Later 
shadow mtrr/pat would solve this as well. :)

-- 
regards
Yang, Sheng
--
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

Reply via email to