Commit 2479d892 authored by Min Si's avatar Min Si
Browse files

Added mb in flush handler. Resolves #2177.



Since flush call guarantees the completion of operations on target side,
a memory barrier on target side is necessary in order to ensure all store
instructions are exactly performed before that flush call finished on origin
side.
Signed-off-by: default avatarXin Zhao <xinzhao3@illinois.edu>
parent 9d53f02b
......@@ -6205,6 +6205,10 @@ int MPIDI_CH3_Finish_rma_op_target(MPIDI_VC_t *vc, MPID_Win *win_ptr, int is_rma
MPIDI_CH3_Progress_signal_completion();
}
else if (flags & MPIDI_CH3_PKT_FLAG_RMA_FLUSH) {
/* Ensure store instructions have been performed before flush call is
* finished on origin process. */
OPA_read_write_barrier();
if (flags & MPIDI_CH3_PKT_FLAG_RMA_REQ_ACK) {
MPIDI_CH3_Pkt_t upkt;
MPIDI_CH3_Pkt_flush_t *flush_pkt = &upkt.flush;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment