On Mon, May 19, 2014 at 11:31:19PM +0400, Kirill Tkhai wrote: > @@ -513,9 +513,17 @@ static enum hrtimer_restart dl_task_timer(struct hrtimer *timer) > struct sched_dl_entity, > dl_timer); > struct task_struct *p = dl_task_of(dl_se); > - struct rq *rq = task_rq(p); > + struct rq *rq; > +again: > + rq = task_rq(p); > raw_spin_lock(&rq->lock); > > + if (unlikely(rq != task_rq(p))) { > + /* Task was moved, retrying. */ > + raw_spin_unlock(&rq->lock); > + goto again; > + } > + That thing is called: rq = __task_rq_lock(p);
Attachment:
pgpBt3xjqCgL9.pgp
Description: PGP signature