aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/mm
diff options
context:
space:
mode:
authorJack Steiner <steiner@sgi.com>2009-11-19 15:23:41 -0500
committerIngo Molnar <mingo@elte.hu>2009-11-23 13:47:42 -0500
commitfd12a0d69aee6d90fa9b9890db24368a897f8423 (patch)
tree2e77b6badae3966af54beb40f727dea143dbb075 /arch/x86/mm
parente38e2af1c57c3eb5211331a5b4fcaae0c4a2a918 (diff)
x86: UV SGI: Don't track GRU space in PAT
GRU space is always mapped as WB in the page table. There is no need to track the mappings in the PAT. This also eliminates the "freeing invalid memtype" messages when the GRU space is unmapped. Signed-off-by: Jack Steiner <steiner@sgi.com> LKML-Reference: <20091119202341.GA4420@sgi.com> [ v2: fix build failure ] Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/mm')
-rw-r--r--arch/x86/mm/pat.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c
index e78cd0ec2bc..38a66ef9426 100644
--- a/arch/x86/mm/pat.c
+++ b/arch/x86/mm/pat.c
@@ -20,6 +20,7 @@
20#include <asm/cacheflush.h> 20#include <asm/cacheflush.h>
21#include <asm/processor.h> 21#include <asm/processor.h>
22#include <asm/tlbflush.h> 22#include <asm/tlbflush.h>
23#include <asm/x86_init.h>
23#include <asm/pgtable.h> 24#include <asm/pgtable.h>
24#include <asm/fcntl.h> 25#include <asm/fcntl.h>
25#include <asm/e820.h> 26#include <asm/e820.h>
@@ -348,6 +349,11 @@ static int free_ram_pages_type(u64 start, u64 end)
348 return 0; 349 return 0;
349} 350}
350 351
352int default_is_untracked_pat_range(u64 start, u64 end)
353{
354 return is_ISA_range(start, end);
355}
356
351/* 357/*
352 * req_type typically has one of the: 358 * req_type typically has one of the:
353 * - _PAGE_CACHE_WB 359 * - _PAGE_CACHE_WB
@@ -388,7 +394,7 @@ int reserve_memtype(u64 start, u64 end, unsigned long req_type,
388 } 394 }
389 395
390 /* Low ISA region is always mapped WB in page table. No need to track */ 396 /* Low ISA region is always mapped WB in page table. No need to track */
391 if (is_ISA_range(start, end - 1)) { 397 if (x86_platform.is_untracked_pat_range(start, end - 1)) {
392 if (new_type) 398 if (new_type)
393 *new_type = _PAGE_CACHE_WB; 399 *new_type = _PAGE_CACHE_WB;
394 return 0; 400 return 0;
@@ -499,7 +505,7 @@ int free_memtype(u64 start, u64 end)
499 return 0; 505 return 0;
500 506
501 /* Low ISA region is always mapped WB. No need to track */ 507 /* Low ISA region is always mapped WB. No need to track */
502 if (is_ISA_range(start, end - 1)) 508 if (x86_platform.is_untracked_pat_range(start, end - 1))
503 return 0; 509 return 0;
504 510
505 is_range_ram = pat_pagerange_is_ram(start, end); 511 is_range_ram = pat_pagerange_is_ram(start, end);
@@ -582,7 +588,7 @@ static unsigned long lookup_memtype(u64 paddr)
582 int rettype = _PAGE_CACHE_WB; 588 int rettype = _PAGE_CACHE_WB;
583 struct memtype *entry; 589 struct memtype *entry;
584 590
585 if (is_ISA_range(paddr, paddr + PAGE_SIZE - 1)) 591 if (x86_platform.is_untracked_pat_range(paddr, paddr + PAGE_SIZE - 1))
586 return rettype; 592 return rettype;
587 593
588 if (pat_pagerange_is_ram(paddr, paddr + PAGE_SIZE)) { 594 if (pat_pagerange_is_ram(paddr, paddr + PAGE_SIZE)) {