|
@@ -71,19 +71,15 @@ struct xpc_partition xpc_partitions[XP_MAX_PARTITIONS + 1];
|
|
|
* Generic buffer used to store a local copy of portions of a remote
|
|
|
* partition's reserved page (either its header and part_nasids mask,
|
|
|
* or its vars).
|
|
|
- *
|
|
|
- * xpc_discovery runs only once and is a seperate thread that is
|
|
|
- * very likely going to be processing in parallel with receiving
|
|
|
- * interrupts.
|
|
|
*/
|
|
|
-char ____cacheline_aligned xpc_remote_copy_buffer[XPC_RP_HEADER_SIZE +
|
|
|
- XP_NASID_MASK_BYTES];
|
|
|
+char *xpc_remote_copy_buffer;
|
|
|
+void *xpc_remote_copy_buffer_base;
|
|
|
|
|
|
|
|
|
/*
|
|
|
* Guarantee that the kmalloc'd memory is cacheline aligned.
|
|
|
*/
|
|
|
-static void *
|
|
|
+void *
|
|
|
xpc_kmalloc_cacheline_aligned(size_t size, gfp_t flags, void **base)
|
|
|
{
|
|
|
/* see if kmalloc will give us cachline aligned memory by default */
|
|
@@ -148,7 +144,7 @@ xpc_get_rsvd_page_pa(int nasid)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- bte_res = xp_bte_copy(rp_pa, ia64_tpa(buf), buf_len,
|
|
|
+ bte_res = xp_bte_copy(rp_pa, buf, buf_len,
|
|
|
(BTE_NOTIFY | BTE_WACQUIRE), NULL);
|
|
|
if (bte_res != BTE_SUCCESS) {
|
|
|
dev_dbg(xpc_part, "xp_bte_copy failed %i\n", bte_res);
|
|
@@ -447,7 +443,7 @@ xpc_check_remote_hb(void)
|
|
|
|
|
|
/* pull the remote_hb cache line */
|
|
|
bres = xp_bte_copy(part->remote_vars_pa,
|
|
|
- ia64_tpa((u64) remote_vars),
|
|
|
+ (u64) remote_vars,
|
|
|
XPC_RP_VARS_SIZE,
|
|
|
(BTE_NOTIFY | BTE_WACQUIRE), NULL);
|
|
|
if (bres != BTE_SUCCESS) {
|
|
@@ -498,8 +494,7 @@ xpc_get_remote_rp(int nasid, u64 *discovered_nasids,
|
|
|
|
|
|
|
|
|
/* pull over the reserved page header and part_nasids mask */
|
|
|
-
|
|
|
- bres = xp_bte_copy(*remote_rp_pa, ia64_tpa((u64) remote_rp),
|
|
|
+ bres = xp_bte_copy(*remote_rp_pa, (u64) remote_rp,
|
|
|
XPC_RP_HEADER_SIZE + xp_nasid_mask_bytes,
|
|
|
(BTE_NOTIFY | BTE_WACQUIRE), NULL);
|
|
|
if (bres != BTE_SUCCESS) {
|
|
@@ -554,11 +549,8 @@ xpc_get_remote_vars(u64 remote_vars_pa, struct xpc_vars *remote_vars)
|
|
|
return xpcVarsNotSet;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/* pull over the cross partition variables */
|
|
|
-
|
|
|
- bres = xp_bte_copy(remote_vars_pa, ia64_tpa((u64) remote_vars),
|
|
|
- XPC_RP_VARS_SIZE,
|
|
|
+ bres = xp_bte_copy(remote_vars_pa, (u64) remote_vars, XPC_RP_VARS_SIZE,
|
|
|
(BTE_NOTIFY | BTE_WACQUIRE), NULL);
|
|
|
if (bres != BTE_SUCCESS) {
|
|
|
return xpc_map_bte_errors(bres);
|
|
@@ -1239,7 +1231,7 @@ xpc_initiate_partid_to_nasids(partid_t partid, void *nasid_mask)
|
|
|
|
|
|
part_nasid_pa = (u64) XPC_RP_PART_NASIDS(part->remote_rp_pa);
|
|
|
|
|
|
- bte_res = xp_bte_copy(part_nasid_pa, ia64_tpa((u64) nasid_mask),
|
|
|
+ bte_res = xp_bte_copy(part_nasid_pa, (u64) nasid_mask,
|
|
|
xp_nasid_mask_bytes, (BTE_NOTIFY | BTE_WACQUIRE), NULL);
|
|
|
|
|
|
return xpc_map_bte_errors(bte_res);
|