xen: add support for PAT
Convert Linux PAT entries into Xen ones when constructing ptes. Linux doesn't use _PAGE_PAT for ptes, so the only difference in the first 4 entries is that Linux uses _PAGE_PWT for WC, whereas Xen (and default) use it for WT. xen_pte_val does the inverse conversion. We hard-code assumptions about Linux's current PAT layout, but a warning on the wrmsr to MSR_IA32_CR_PAT should point out any problems. If necessary we could go to a more general table-based conversion between Linux and Xen PAT entries. hugetlbfs poses a problem at the moment, the x86 architecture uses the same flag for _PAGE_PAT and _PAGE_PSE, which changes meaning depending on which pagetable level we're using. At the moment this should be OK so long as nobody tries to do a pte_val on a hugetlbfs pte. Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
This commit is contained in:
@@ -829,6 +829,11 @@ static int xen_write_msr_safe(unsigned int msr, unsigned low, unsigned high)
|
||||
Xen console noise. */
|
||||
break;
|
||||
|
||||
case MSR_IA32_CR_PAT:
|
||||
if (smp_processor_id() == 0)
|
||||
xen_set_pat(((u64)high << 32) | low);
|
||||
break;
|
||||
|
||||
default:
|
||||
ret = native_write_msr_safe(msr, low, high);
|
||||
}
|
||||
|
Reference in New Issue
Block a user