sched_rt: avoid ASSERT()ing on runq dump if there are no domains

being serviced by the RTDS scheduler, as that is a
legit situation to be in: think, for instance, of a
newly created RTDS cpupool, with no domains migrated
to it yet.

While there:
 - move the spinlock acquisition up, to effectively
   protect the domain list and avoid races;
 - the mask of online pCPUs was being retrieved
   but then not used anywhere in the function: get
   rid of that.

Signed-off-by: Dario Faggioli <dario.faggioli@citrix.com>
Reviewed-by: Meng Xu <mengxu@cis.upenn.edu>
Acked-by: George Dunlap <george.dunlap@eu.citrix.com>
This commit is contained in:
Dario Faggioli authored and Jan Beulich committed 2015-03-18 14:20:01 +01:00
1 parent a47d6cdb07
commit a90babbd23
1 file changed
+5 -5
+5 -5
View File
@@ -264,18 +264,17 @@ rt_dump(const struct scheduler *ops)
struct list_head *iter_sdom, *iter_svc, *runq, *depletedq, *iter;
struct rt_private *prv = rt_priv(ops);
struct rt_vcpu *svc;
cpumask_t *online;
struct rt_dom *sdom;
unsigned long flags;
ASSERT(!list_empty(&prv->sdom));
spin_lock_irqsave(&prv->lock, flags);
if ( list_empty(&prv->sdom) )
goto out;
sdom = list_entry(prv->sdom.next, struct rt_dom, sdom_elem);
online = cpupool_scheduler_cpumask(sdom->dom->cpupool);
runq = rt_runq(ops);
depletedq = rt_depletedq(ops);
spin_lock_irqsave(&prv->lock, flags);
printk("Global RunQueue info:\n");
list_for_each( iter, runq )
{
@@ -303,6 +302,7 @@ rt_dump(const struct scheduler *ops)
}
}
out:
spin_unlock_irqrestore(&prv->lock, flags);
}
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.