File tree Expand file tree Collapse file tree 1 file changed +9
-1
lines changed Expand file tree Collapse file tree 1 file changed +9
-1
lines changed Original file line number Diff line number Diff line change @@ -246,8 +246,10 @@ static inline void rt_set_overload(struct rq *rq)
246246 * if we should look at the mask. It would be a shame
247247 * if we looked at the mask, but the mask was not
248248 * updated yet.
249+ *
250+ * Matched by the barrier in pull_rt_task().
249251 */
250- wmb ();
252+ smp_wmb ();
251253 atomic_inc (& rq -> rd -> rto_count );
252254}
253255
@@ -1626,6 +1628,12 @@ static int pull_rt_task(struct rq *this_rq)
16261628 if (likely (!rt_overloaded (this_rq )))
16271629 return 0 ;
16281630
1631+ /*
1632+ * Match the barrier from rt_set_overloaded; this guarantees that if we
1633+ * see overloaded we must also see the rto_mask bit.
1634+ */
1635+ smp_rmb ();
1636+
16291637 for_each_cpu (cpu , this_rq -> rd -> rto_mask ) {
16301638 if (this_cpu == cpu )
16311639 continue ;
You can’t perform that action at this time.
0 commit comments