All of lore.kernel.org
 help / color / mirror / Atom feed
* BUG: at kernel/sched.c:4031 __schedule()
@ 2007-06-07 14:07 Oleg Kechin
  2007-06-07 15:39 ` Steven Rostedt
  0 siblings, 1 reply; 11+ messages in thread
From: Oleg Kechin @ 2007-06-07 14:07 UTC (permalink / raw)
  To: linux-rt-users

Hi
I run 2.6.20-rt8 kernel on board like innovator1510 (OMAP5910 cpu)
I notice in boot string:
BUG: at kernel/sched.c:4031 __schedule()
kernel complain interrupts are enabled after schedule.

digging in sched.c I figured out that interrupts are disabled when cpu 
enter __sched(),
but are enabled when it went out.
Playing with the code i can find out, that problem is in the next 
fragment: (line 4024)

   if (likely(prev != next)) {
       next->timestamp = now;
       rq->nr_switches++;
       rq->curr = next;
       ++*switch_count;

       prepare_task_switch(rq, next);
       prev = context_switch(rq, prev, next);
       barrier();
       trace_special_pid(prev->pid, PRIO(prev), PRIO(current));
       /*
        * this_rq must be evaluated again because prev may have moved
        * CPUs since it called schedule(), thus the 'rq' on its stack
        * frame will be invalid.
        */
       finish_task_switch(this_rq(), prev);
       __preempt_enable_no_resched();
   } else {

in prepare_task_switch(rq, next); interrupts are enabled,
but in finish_task_switch(this_rq(), prev); interrupts not disabled
(it look not symmetrical for me).

Can anybody tell - is this right behavior?
I think interrupts should be disabled somewhere in this fragment,
or may be, scheduler should not complain?

Oleg Kechin.

^ permalink raw reply	[flat|nested] 11+ messages in thread
* BUG: at kernel/sched.c:4031 __schedule()
@ 2007-04-06 13:29 Oleg Kechin
  2007-04-07  7:49 ` Dirk Behme
  0 siblings, 1 reply; 11+ messages in thread
From: Oleg Kechin @ 2007-04-06 13:29 UTC (permalink / raw)
  To: linux-omap-open-source

Hi
I run 2.6.20-rt8 kernel on board like innovator1510 (OMAP5910 cpu)
I notice in boot string:
BUG: at kernel/sched.c:4031 __schedule()
kernel complain interrupts are enabled after schedule.

digging in sched.c I figured out that interrupts are disabled when cpu 
enter __sched(),
but are enabled when it went out.
Playing with the code i can find out, that problem is in the next 
fragment: (line 4024)

    if (likely(prev != next)) {
        next->timestamp = now;
        rq->nr_switches++;
        rq->curr = next;
        ++*switch_count;

        prepare_task_switch(rq, next);
        prev = context_switch(rq, prev, next);
        barrier();
        trace_special_pid(prev->pid, PRIO(prev), PRIO(current));
        /*
         * this_rq must be evaluated again because prev may have moved
         * CPUs since it called schedule(), thus the 'rq' on its stack
         * frame will be invalid.
         */
        finish_task_switch(this_rq(), prev);
        __preempt_enable_no_resched();
    } else {

in prepare_task_switch(rq, next); interrupts are enabled,
but in finish_task_switch(this_rq(), prev); interrupts not disabled
(it look not symmetrical for me).

Can anybody tell - is this right behavior?
I think interrupts should be disabled somewhere in this fragment,
or may be, scheduler should not complain?

Oleg Kechin.

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2007-06-08 10:52 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-06-07 14:07 BUG: at kernel/sched.c:4031 __schedule() Oleg Kechin
2007-06-07 15:39 ` Steven Rostedt
2007-06-07 15:58   ` Jan Altenberg
2007-06-07 16:13     ` Steven Rostedt
2007-06-07 16:20       ` Daniel Walker
2007-06-07 16:21       ` Daniel Walker
2007-06-07 16:33         ` Daniel Walker
2007-06-08 10:08           ` Oleg Kechin
2007-06-08 10:52             ` Thomas Gleixner
  -- strict thread matches above, loose matches on Subject: below --
2007-04-06 13:29 Oleg Kechin
2007-04-07  7:49 ` Dirk Behme

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.