Commit 682128939f546e3a9cdd9fef392b932dd9c41a65
Committed by
Linus Torvalds
1 parent
729d69e699
Exists in
master
and in
7 other branches
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; |