aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86
diff options
context:
space:
mode:
authorRobin Holt <holt@sgi.com>2009-12-15 19:47:52 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2009-12-16 10:20:13 -0500
commit729d69e6995fc4dea8ff70df256a7d4034a3d21d (patch)
tree6b8ccb8d00248458bb27417606fb9e402daaeb77 /arch/x86
parent5fe878ae7f82fbf0830dbfaee4c5ca18f3aee442 (diff)
x86: uv: introduce a means to translate from gpa -> socket_paddr
The UV BIOS has been updated to implement some of our interface functionality differently than originally expected. These patches update the kernel to the bios implementation and include a few minor bug fixes which prevent us from doing significant testing on real hardware. This patch: For SGI UV systems, translate from a global physical address back to a socket physical address. This does nothing to ensure the socket physical address is actually addressable by the kernel. That is the responsibility of the user of the function. Signed-off-by: Robin Holt <holt@sgi.com> Cc: Jack Steiner <steiner@sgi.com> Cc: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/x86')
-rw-r--r--arch/x86/include/asm/uv/uv_hub.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/x86/include/asm/uv/uv_hub.h b/arch/x86/include/asm/uv/uv_hub.h
index d1414af98559..0cc955f16aec 100644
--- a/arch/x86/include/asm/uv/uv_hub.h
+++ b/arch/x86/include/asm/uv/uv_hub.h
@@ -232,6 +232,19 @@ static inline unsigned long uv_gpa(void *v)
232 return uv_soc_phys_ram_to_gpa(__pa(v)); 232 return uv_soc_phys_ram_to_gpa(__pa(v));
233} 233}
234 234
235/* UV global physical address --> socket phys RAM */
236static inline unsigned long uv_gpa_to_soc_phys_ram(unsigned long gpa)
237{
238 unsigned long paddr = gpa & uv_hub_info->gpa_mask;
239 unsigned long remap_base = uv_hub_info->lowmem_remap_base;
240 unsigned long remap_top = uv_hub_info->lowmem_remap_top;
241
242 if (paddr >= remap_base && paddr < remap_base + remap_top)
243 paddr -= remap_base;
244 return paddr;
245}
246
247
235/* gnode -> pnode */ 248/* gnode -> pnode */
236static inline unsigned long uv_gpa_to_gnode(unsigned long gpa) 249static inline unsigned long uv_gpa_to_gnode(unsigned long gpa)
237{ 250{