Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
diff -r f71212f712fd -r a3dd5d721c41 xen/common/sched_credit2.c
--- a/xen/common/sched_credit2.c Wed Mar 02 10:31:06 2011 +0000
+++ b/xen/common/sched_credit2.c Thu Mar 03 14:35:11 2011 +0000
@@ -808,6 +808,7 @@
__runq_deassign(struct csched_vcpu *svc)
{
BUG_ON(__vcpu_on_runq(svc));
+ BUG_ON(test_bit(__CSFLAG_scheduled, &svc->flags));
list_del_init(&svc->rqd_elem);
update_max_weight(svc->rqd, 0, svc->weight);
@@ -1603,6 +1604,32 @@
/* Protected by runqueue lock */
+ /* DEBUG */
+ if ( !is_idle_vcpu(scurr->vcpu) && scurr->rqd != rqd)
+ {
+ int other_rqi=-1, this_rqi;
+
+ this_rqi=c2r(ops, cpu);
+
+ if ( scurr->rqd )
+ {
+ int rq;
+ other_rqi=-2;
+ for_each_cpu_mask(rq, CSCHED_PRIV(ops)->active_queues)
+ {
+ if ( scurr->rqd == &CSCHED_PRIV(ops)->rqd[rq] )
+ {
+ other_rqi = rq;
+ break;
+ }
+ }
+ }
+ printk("%s: pcpu %d rq %d, but scurr d%dv%d assigned to pcpu %d rq
%d!\n",
+ __func__,
+ cpu, this_rqi,
+ scurr->vcpu->domain->domain_id,
scurr->vcpu->vcpu_id,
+ scurr->vcpu->processor, other_rqi);
+ }
BUG_ON(!is_idle_vcpu(scurr->vcpu) && scurr->rqd != rqd);
/* Clear "tickled" bit now that we''ve been scheduled */
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
George Dunlap writes ("[Xen-devel] [PATCH] credit2: Add more
debugging"):> Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
...> + /* DEBUG */
Shouldn''t this be in an #ifdef or something rather than just marked
with a comment ?
> + if ( !is_idle_vcpu(scurr->vcpu) && scurr->rqd != rqd)
> + {
> + int other_rqi=-1, this_rqi;
> +
> + this_rqi=c2r(ops, cpu);
> +
> + if ( scurr->rqd )
> + {
> + int rq;
> + other_rqi=-2;
> + for_each_cpu_mask(rq, CSCHED_PRIV(ops)->active_queues)
> + {
> + if ( scurr->rqd == &CSCHED_PRIV(ops)->rqd[rq] )
> + {
> + other_rqi = rq;
> + break;
> + }
> + }
> + }
> + printk("%s: pcpu %d rq %d, but scurr d%dv%d assigned to pcpu
%d rq %d!\n",
> + __func__,
> + cpu, this_rqi,
> + scurr->vcpu->domain->domain_id,
scurr->vcpu->vcpu_id,
> + scurr->vcpu->processor, other_rqi);
> + }
> BUG_ON(!is_idle_vcpu(scurr->vcpu) && scurr->rqd != rqd);
And in general this seems like a somewhat odd construct.
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
The purpose of this was to catch more information next time you see this bug in the automated testing; do you run it with debug=y? If so, I''ll change it to #ifndef NDEBUG ... #else BUG_ON() ... #endif -George On Thu, 2011-03-03 at 16:38 +0000, Ian Jackson wrote:> George Dunlap writes ("[Xen-devel] [PATCH] credit2: Add more debugging"): > > Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com> > ... > > + /* DEBUG */ > > Shouldn''t this be in an #ifdef or something rather than just marked > with a comment ? > > > + if ( !is_idle_vcpu(scurr->vcpu) && scurr->rqd != rqd) > > + { > > + int other_rqi=-1, this_rqi; > > + > > + this_rqi=c2r(ops, cpu); > > + > > + if ( scurr->rqd ) > > + { > > + int rq; > > + other_rqi=-2; > > + for_each_cpu_mask(rq, CSCHED_PRIV(ops)->active_queues) > > + { > > + if ( scurr->rqd == &CSCHED_PRIV(ops)->rqd[rq] ) > > + { > > + other_rqi = rq; > > + break; > > + } > > + } > > + } > > + printk("%s: pcpu %d rq %d, but scurr d%dv%d assigned to pcpu %d rq %d!\n", > > + __func__, > > + cpu, this_rqi, > > + scurr->vcpu->domain->domain_id, scurr->vcpu->vcpu_id, > > + scurr->vcpu->processor, other_rqi); > > + } > > BUG_ON(!is_idle_vcpu(scurr->vcpu) && scurr->rqd != rqd); > > And in general this seems like a somewhat odd construct. > > Ian._______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel