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