73 lines
2.3 KiB
Diff
73 lines
2.3 KiB
Diff
|
From 433928d3823f561919ead305194e46e5311b573d Mon Sep 17 00:00:00 2001
|
||
|
From: Marek Marczykowski <marmarek@invisiblethingslab.com>
|
||
|
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 <marmarek@invisiblethingslab.com>
|
||
|
---
|
||
|
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)
|
||
|
static 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)
|
||
|
static 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
|
||
|
|