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>
This commit is contained in:

committed by
Ingo Molnar

parent
e38e2af1c5
commit
fd12a0d69a
@@ -30,10 +30,22 @@
|
||||
#include <asm/apic.h>
|
||||
#include <asm/ipi.h>
|
||||
#include <asm/smp.h>
|
||||
#include <asm/x86_init.h>
|
||||
|
||||
DEFINE_PER_CPU(int, x2apic_extra_bits);
|
||||
|
||||
static enum uv_system_type uv_system_type;
|
||||
static u64 gru_start_paddr, gru_end_paddr;
|
||||
|
||||
static int is_GRU_range(u64 start, u64 end)
|
||||
{
|
||||
return start >= gru_start_paddr && end < gru_end_paddr;
|
||||
}
|
||||
|
||||
static int uv_is_untracked_pat_range(u64 start, u64 end)
|
||||
{
|
||||
return is_ISA_range(start, end) || is_GRU_range(start, end);
|
||||
}
|
||||
|
||||
static int early_get_nodeid(void)
|
||||
{
|
||||
@@ -49,6 +61,7 @@ static int early_get_nodeid(void)
|
||||
static int __init uv_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
|
||||
{
|
||||
if (!strcmp(oem_id, "SGI")) {
|
||||
x86_platform.is_untracked_pat_range = uv_is_untracked_pat_range;
|
||||
if (!strcmp(oem_table_id, "UVL"))
|
||||
uv_system_type = UV_LEGACY_APIC;
|
||||
else if (!strcmp(oem_table_id, "UVX"))
|
||||
@@ -385,8 +398,12 @@ static __init void map_gru_high(int max_pnode)
|
||||
int shift = UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR_BASE_SHFT;
|
||||
|
||||
gru.v = uv_read_local_mmr(UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR);
|
||||
if (gru.s.enable)
|
||||
if (gru.s.enable) {
|
||||
map_high("GRU", gru.s.base, shift, max_pnode, map_wb);
|
||||
gru_start_paddr = ((u64)gru.s.base << shift);
|
||||
gru_end_paddr = gru_start_paddr + (1UL << shift) * (max_pnode + 1);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
static __init void map_mmr_high(int max_pnode)
|
||||
|
Reference in New Issue
Block a user