BUG: at kernel/sched.c:4031 __schedule()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.
-
To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux