[PATCH] x86: SGI UV - Map low MMR ranges

From: Jack Steiner
Date: Wed Nov 25 2009 - 11:20:29 EST


Explicitly mmap the UV chipset MMR address ranges used to
access blade-local registers. Although these same MMRs are also
mmaped at higher addresses, the low range is more
convenient when accessing blade-local registers.
The low range addresses always alias to the local blade
regardless of the blade id.

Signed-off-by: Jack Steiner <steiner@xxxxxxx>


---
arch/x86/kernel/apic/x2apic_uv_x.c | 8 ++++++++
1 file changed, 8 insertions(+)

Index: linux/arch/x86/kernel/apic/x2apic_uv_x.c
===================================================================
--- linux.orig/arch/x86/kernel/apic/x2apic_uv_x.c 2009-11-24 01:30:19.000000000 -0600
+++ linux/arch/x86/kernel/apic/x2apic_uv_x.c 2009-11-24 07:44:49.000000000 -0600
@@ -427,6 +427,12 @@ static __init void map_mmioh_high(int ma
map_high("MMIOH", mmioh.s.base, shift, max_pnode, map_uc);
}

+static __init void map_low_mmrs(void)
+{
+ init_extra_mapping_uc(UV_GLOBAL_MMR32_BASE, UV_GLOBAL_MMR32_SIZE);
+ init_extra_mapping_uc(UV_LOCAL_MMR_BASE, UV_LOCAL_MMR_SIZE);
+}
+
static __init void uv_rtc_init(void)
{
long status;
@@ -568,6 +574,8 @@ void __init uv_system_init(void)
unsigned long mmr_base, present, paddr;
unsigned short pnode_mask;

+ map_low_mmrs();
+
m_n_config.v = uv_read_local_mmr(UVH_SI_ADDR_MAP_CONFIG);
m_val = m_n_config.s.m_skt;
n_val = m_n_config.s.n_skt;
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/