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.
--
Do not meddle in the internals of kernels, for they are subtle and quick to
panic.
--
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