* [PATCH] x86: SGI UV - Map low MMR ranges
@ 2009-11-25 16:20 Jack Steiner
2009-11-26 9:56 ` [tip:x86/apic] x86: SGI UV: " tip-bot for Jack Steiner
0 siblings, 1 reply; 2+ messages in thread
From: Jack Steiner @ 2009-11-25 16:20 UTC (permalink / raw)
To: mingo, tglx; +Cc: linux-kernel
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@sgi.com>
---
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;
^ permalink raw reply [flat|nested] 2+ messages in thread
* [tip:x86/apic] x86: SGI UV: Map low MMR ranges
2009-11-25 16:20 [PATCH] x86: SGI UV - Map low MMR ranges Jack Steiner
@ 2009-11-26 9:56 ` tip-bot for Jack Steiner
0 siblings, 0 replies; 2+ messages in thread
From: tip-bot for Jack Steiner @ 2009-11-26 9:56 UTC (permalink / raw)
To: linux-tip-commits; +Cc: linux-kernel, hpa, mingo, steiner, tglx, mingo
Commit-ID: 918bc960dc630b1a79c0d2991a81985812ff69f5
Gitweb: http://git.kernel.org/tip/918bc960dc630b1a79c0d2991a81985812ff69f5
Author: Jack Steiner <steiner@sgi.com>
AuthorDate: Wed, 25 Nov 2009 10:20:19 -0600
Committer: Ingo Molnar <mingo@elte.hu>
CommitDate: Thu, 26 Nov 2009 10:52:36 +0100
x86: SGI UV: Map low MMR ranges
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@sgi.com>
LKML-Reference: <20091125162018.GA25445@sgi.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
arch/x86/kernel/apic/x2apic_uv_x.c | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c
index f5f5886..6d42549 100644
--- a/arch/x86/kernel/apic/x2apic_uv_x.c
+++ b/arch/x86/kernel/apic/x2apic_uv_x.c
@@ -409,6 +409,12 @@ static __init void map_mmioh_high(int max_pnode)
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;
@@ -550,6 +556,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;
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-11-26 9:57 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-25 16:20 [PATCH] x86: SGI UV - Map low MMR ranges Jack Steiner
2009-11-26 9:56 ` [tip:x86/apic] x86: SGI UV: " tip-bot for Jack Steiner
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.