File tree Expand file tree Collapse file tree 1 file changed +4
-2
lines changed Expand file tree Collapse file tree 1 file changed +4
-2
lines changed Original file line number Diff line number Diff line change @@ -187,20 +187,22 @@ static inline opal_list_item_t *opal_lifo_pop_atomic (opal_lifo_t* lifo)
187
187
{
188
188
opal_list_item_t * item ;
189
189
while ((item = (opal_list_item_t * ) lifo -> opal_lifo_head .data .item ) != & lifo -> opal_lifo_ghost ) {
190
- opal_atomic_rmb ();
191
-
192
190
/* ensure it is safe to pop the head */
193
191
if (opal_atomic_swap_32 ((volatile int32_t * ) & item -> item_free , 1 )) {
194
192
continue ;
195
193
}
196
194
195
+ opal_atomic_wmb ();
196
+
197
197
/* try to swap out the head pointer */
198
198
if (opal_atomic_cmpset_ptr (& lifo -> opal_lifo_head .data .item , item ,
199
199
(void * ) item -> opal_list_next )) {
200
200
break ;
201
201
}
202
+
202
203
/* NTH: don't need another atomic here */
203
204
item -> item_free = 0 ;
205
+
204
206
/* Do some kind of pause to release the bus */
205
207
}
206
208
You can’t perform that action at this time.
0 commit comments