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