Commit 682128939f546e3a9cdd9fef392b932dd9c41a65

Authored by Robin Holt
Committed by Linus Torvalds
1 parent 729d69e699

x86: uv: xpc needs to provide an abstraction for uv_gpa

Provide an SGI SN2/UV agnositic method for converting a global physical
address into a socket physical address.

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>

Showing 4 changed files with 24 additions and 0 deletions Side-by-side Diff

drivers/misc/sgi-xp/xp.h
... ... @@ -339,6 +339,7 @@
339 339 extern u8 xp_region_size;
340 340  
341 341 extern unsigned long (*xp_pa) (void *);
  342 +extern unsigned long (*xp_socket_pa) (unsigned long);
342 343 extern enum xp_retval (*xp_remote_memcpy) (unsigned long, const unsigned long,
343 344 size_t);
344 345 extern int (*xp_cpu_to_nasid) (int);
drivers/misc/sgi-xp/xp_main.c
... ... @@ -44,6 +44,9 @@
44 44 unsigned long (*xp_pa) (void *addr);
45 45 EXPORT_SYMBOL_GPL(xp_pa);
46 46  
  47 +unsigned long (*xp_socket_pa) (unsigned long gpa);
  48 +EXPORT_SYMBOL_GPL(xp_socket_pa);
  49 +
47 50 enum xp_retval (*xp_remote_memcpy) (unsigned long dst_gpa,
48 51 const unsigned long src_gpa, size_t len);
49 52 EXPORT_SYMBOL_GPL(xp_remote_memcpy);
drivers/misc/sgi-xp/xp_sn2.c
... ... @@ -84,6 +84,15 @@
84 84 }
85 85  
86 86 /*
  87 + * Convert a global physical to a socket physical address.
  88 + */
  89 +static unsigned long
  90 +xp_socket_pa_sn2(unsigned long gpa)
  91 +{
  92 + return gpa;
  93 +}
  94 +
  95 +/*
87 96 * Wrapper for bte_copy().
88 97 *
89 98 * dst_pa - physical address of the destination of the transfer.
... ... @@ -162,6 +171,7 @@
162 171 xp_region_size = sn_region_size;
163 172  
164 173 xp_pa = xp_pa_sn2;
  174 + xp_socket_pa = xp_socket_pa_sn2;
165 175 xp_remote_memcpy = xp_remote_memcpy_sn2;
166 176 xp_cpu_to_nasid = xp_cpu_to_nasid_sn2;
167 177 xp_expand_memprotect = xp_expand_memprotect_sn2;
drivers/misc/sgi-xp/xp_uv.c
... ... @@ -32,6 +32,15 @@
32 32 return uv_gpa(addr);
33 33 }
34 34  
  35 +/*
  36 + * Convert a global physical to socket physical address.
  37 + */
  38 +static unsigned long
  39 +xp_socket_pa_uv(unsigned long gpa)
  40 +{
  41 + return uv_gpa_to_soc_phys_ram(gpa);
  42 +}
  43 +
35 44 static enum xp_retval
36 45 xp_remote_memcpy_uv(unsigned long dst_gpa, const unsigned long src_gpa,
37 46 size_t len)
... ... @@ -123,6 +132,7 @@
123 132 xp_region_size = sn_region_size;
124 133  
125 134 xp_pa = xp_pa_uv;
  135 + xp_socket_pa = xp_socket_pa_uv;
126 136 xp_remote_memcpy = xp_remote_memcpy_uv;
127 137 xp_cpu_to_nasid = xp_cpu_to_nasid_uv;
128 138 xp_expand_memprotect = xp_expand_memprotect_uv;