Hello!
this lines are the footprints of the warning:
Quote:
Dec 01 15:36:38 1322733998 kernel: [<c1026548>] warn_slowpath_common+0x65/0x7a
Dec 01 15:36:38 1322733998 kernel: [<d0f023be>] ? hfsc_dequeue+0x1aa/0x2c2 [sch_hfsc]
Dec 01 15:36:38 1322733998 kernel: [<c102656c>] warn_slowpath_null+0xf/0x13
Dec 01 15:36:38 1322733998 kernel: [<d0f023be>] hfsc_dequeue+0x1aa/0x2c2 [sch_hfsc]
Dec 01 15:36:38 1322733998 kernel: [<c11c0626>] __qdisc_run+0x70/0xe4
Dec 01 15:36:38 1322733998 kernel: [<c11acd21>] net_tx_action+0x9c/0xe6
Dec 01 15:36:38 1322733998 kernel: [<c102a936>] __do_softirq+0x6b/0xe5
Dec 01 15:36:38 1322733998 kernel: [<c102a8cb>] ? __local_bh_enable+0x68/0x68
Dec 01 15:36:38 1322733998 kernel: <IRQ> [<c102a847>] ? irq_exit+0x32/0x3b
Dec 01 15:36:38 1322733998 kernel: [<c10149f2>] ? smp_apic_timer_interrupt+0x6e/0x7c
Dec 01 15:36:38 1322733998 kernel: [<c121ea5a>] ? apic_timer_interrupt+0x2a/0x30
Dec 01 15:36:38 1322733998 kernel: [<c100779b>] ? default_idle+0x2e/0x43
Dec 01 15:36:38 1322733998 kernel: [<c100198c>] ? cpu_idle+0x3a/0x52
Dec 01 15:36:38 1322733998 kernel: [<c121a243>] ? start_secondary+0x190/0x195
|
and this line tell us exactly where the WARNING happened
Quote:
Dec 01 15:36:38 1322733998 kernel: WARNING: at net/sched/sch_hfsc.c:1427 hfsc_dequeue+0x1aa/0x2c2 [sch_hfsc]()
|
what lead us to the following piece of code:
Code:
hfsc_schedule_watchdog(struct Qdisc *sch)
{
struct hfsc_sched *q = qdisc_priv(sch);
struct hfsc_class *cl;
u64 next_time = 0;
cl = eltree_get_minel(q);
if (cl)
next_time = cl->cl_e;
if (q->root.cl_cfmin != 0) {
if (next_time == 0 || next_time > q->root.cl_cfmin)
next_time = q->root.cl_cfmin;
}
WARN_ON(next_time == 0);
qdisc_watchdog_schedule(&q->watchdog, next_time);
}
wich is only called here on the function hfsc_dequeue:
Code:
...
cl = eltree_get_mindl(q, cur_time);
if (cl) {
realtime = 1;
} else {
/*
* use link-sharing criteria
* get the class with the minimum vt in the hierarchy
*/
cl = vttree_get_minvt(&q->root, cur_time);
if (cl == NULL) {
sch->qstats.overlimits++;
hfsc_schedule_watchdog(sch);
return NULL;
}
}
...
I'm curious about this, so I will try to reproduce this here on a virtual machine
but for a quick answer you should post this on the IMQ mailing list:
http://tech.groups.yahoo.com/group/linuximq/
If you find a solution please post it here.