Provide an SGI SN2/UV agnositic method for converting a global physical address into a socket physical address. To: Ingo Molnar Signed-off-by: Robin Holt Cc: Jack Steiner Cc: lkml --- drivers/misc/sgi-xp/xp.h | 1 + drivers/misc/sgi-xp/xp_main.c | 3 +++ drivers/misc/sgi-xp/xp_sn2.c | 10 ++++++++++ drivers/misc/sgi-xp/xp_uv.c | 10 ++++++++++ 4 files changed, 24 insertions(+) Index: linux-2.6.27/drivers/misc/sgi-xp/xp.h =================================================================== --- linux-2.6.27.orig/drivers/misc/sgi-xp/xp.h 2009-10-29 10:15:58.000000000 -0500 +++ linux-2.6.27/drivers/misc/sgi-xp/xp.h 2009-10-29 16:19:25.000000000 -0500 @@ -339,6 +339,7 @@ extern short xp_partition_id; extern u8 xp_region_size; extern unsigned long (*xp_pa) (void *); +extern unsigned long (*xp_socket_pa) (unsigned long); extern enum xp_retval (*xp_remote_memcpy) (unsigned long, const unsigned long, size_t); extern int (*xp_cpu_to_nasid) (int); Index: linux-2.6.27/drivers/misc/sgi-xp/xp_main.c =================================================================== --- linux-2.6.27.orig/drivers/misc/sgi-xp/xp_main.c 2009-10-29 09:16:19.000000000 -0500 +++ linux-2.6.27/drivers/misc/sgi-xp/xp_main.c 2009-10-29 16:20:01.000000000 -0500 @@ -44,6 +44,9 @@ EXPORT_SYMBOL_GPL(xp_region_size); unsigned long (*xp_pa) (void *addr); EXPORT_SYMBOL_GPL(xp_pa); +unsigned long (*xp_socket_pa) (unsigned long gpa); +EXPORT_SYMBOL_GPL(xp_socket_pa); + enum xp_retval (*xp_remote_memcpy) (unsigned long dst_gpa, const unsigned long src_gpa, size_t len); EXPORT_SYMBOL_GPL(xp_remote_memcpy); Index: linux-2.6.27/drivers/misc/sgi-xp/xp_sn2.c =================================================================== --- linux-2.6.27.orig/drivers/misc/sgi-xp/xp_sn2.c 2009-10-29 09:16:11.000000000 -0500 +++ linux-2.6.27/drivers/misc/sgi-xp/xp_sn2.c 2009-10-29 16:21:18.000000000 -0500 @@ -84,6 +84,15 @@ xp_pa_sn2(void *addr) } /* + * Convert a global physical to a socket physical address. + */ +static unsigned long +xp_socket_pa_sn2(unsigned long gpa) +{ + return gpa; +} + +/* * Wrapper for bte_copy(). * * dst_pa - physical address of the destination of the transfer. @@ -162,6 +171,7 @@ xp_init_sn2(void) xp_region_size = sn_region_size; xp_pa = xp_pa_sn2; + xp_socket_pa = xp_socket_pa_sn2; xp_remote_memcpy = xp_remote_memcpy_sn2; xp_cpu_to_nasid = xp_cpu_to_nasid_sn2; xp_expand_memprotect = xp_expand_memprotect_sn2; Index: linux-2.6.27/drivers/misc/sgi-xp/xp_uv.c =================================================================== --- linux-2.6.27.orig/drivers/misc/sgi-xp/xp_uv.c 2009-10-29 16:15:05.000000000 -0500 +++ linux-2.6.27/drivers/misc/sgi-xp/xp_uv.c 2009-10-29 16:24:56.000000000 -0500 @@ -32,6 +32,15 @@ xp_pa_uv(void *addr) return uv_gpa(addr); } +/* + * Convert a global physical to socket physical address. + */ +static unsigned long +xp_socket_pa_uv(unsigned long gpa) +{ + return uv_gpa_to_soc_phys_ram(gpa); +} + static enum xp_retval xp_remote_memcpy_uv(unsigned long dst_gpa, const unsigned long src_gpa, size_t len) @@ -123,6 +132,7 @@ xp_init_uv(void) xp_region_size = sn_region_size; xp_pa = xp_pa_uv; + xp_socket_pa = xp_socket_pa_uv; xp_remote_memcpy = xp_remote_memcpy_uv; xp_cpu_to_nasid = xp_cpu_to_nasid_uv; xp_expand_memprotect = xp_expand_memprotect_uv; -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/