From 433928d3823f561919ead305194e46e5311b573d Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 23 Jun 2012 19:50:44 +0200 Subject: [PATCH 1/2] Revert "xen/pat: Disable PAT support for now." Organization: Invisible Things Lab This reverts commit 8eaffa67b43e99ae581622c5133e20b0f48bcef1. We haven't observed failure which is workarounded by this patch, but it caused horrible GPU performance. Anyway there is "nopat" option. Signed-off-by: Marek Marczykowski --- arch/x86/xen/enlighten.c | 2 -- arch/x86/xen/mmu.c | 8 ++++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c index 6c7f1e8..bf3319c 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c @@ -1269,9 +1269,7 @@ asmlinkage void __init xen_start_kernel(void) /* Prevent unwanted bits from being set in PTEs. */ __supported_pte_mask &= ~_PAGE_GLOBAL; -#if 0 if (!xen_initial_domain()) -#endif __supported_pte_mask &= ~(_PAGE_PWT | _PAGE_PCD); __supported_pte_mask |= _PAGE_IOMAP; diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c index 69f5857..a5d252a 100644 --- a/arch/x86/xen/mmu.c +++ b/arch/x86/xen/mmu.c @@ -420,13 +420,13 @@ static pteval_t iomap_pte(pteval_t val) __visible pteval_t xen_pte_val(pte_t pte) { pteval_t pteval = pte.pte; -#if 0 + /* If this is a WC pte, convert back from Xen WC to Linux WC */ if ((pteval & (_PAGE_PAT | _PAGE_PCD | _PAGE_PWT)) == _PAGE_PAT) { WARN_ON(!pat_enabled); pteval = (pteval & ~_PAGE_PAT) | _PAGE_PWT; } -#endif + if (xen_initial_domain() && (pteval & _PAGE_IOMAP)) return pteval; @@ -468,7 +468,7 @@ void xen_set_pat(u64 pat) __visible pte_t xen_make_pte(pteval_t pte) { phys_addr_t addr = (pte & PTE_PFN_MASK); -#if 0 + /* If Linux is trying to set a WC pte, then map to the Xen WC. * If _PAGE_PAT is set, then it probably means it is really * _PAGE_PSE, so avoid fiddling with the PAT mapping and hope @@ -481,7 +481,7 @@ static pte_t xen_make_pte(pteval_t pte) if ((pte & (_PAGE_PCD | _PAGE_PWT)) == _PAGE_PWT) pte = (pte & ~(_PAGE_PCD | _PAGE_PWT)) | _PAGE_PAT; } -#endif + /* * Unprivileged domains are allowed to do IOMAPpings for * PCI passthrough, but not map ISA space. The ISA -- 1.7.4.4