LinuxQuestions.org
Help answer threads with 0 replies.
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Hardware > Linux - Embedded & Single-board computer
User Name
Password
Linux - Embedded & Single-board computer This forum is for the discussion of Linux on both embedded devices and single-board computers (such as the Raspberry Pi, BeagleBoard and PandaBoard). Discussions involving Arduino, plug computers and other micro-controller like devices are also welcome.

Notices

Reply
 
Search this Thread
Old 03-02-2009, 05:42 AM   #1
yigal_gold
LQ Newbie
 
Registered: Dec 2008
Posts: 8

Rep: Reputation: 0
kernel BUG in preempt_schedule_irq at kernel/sched.c:3114!


Hi all,
My system is a PPC running kernel 2.6.14.7 .
My application uses interrupts to collect bytes from the uart .
And I have to uarts running in parallel which signal to the same interrupt line . When I run only one uart at a time the system works fine . But when the 2 run symultaniously the system crashes as follows :

" kernel BUG in preempt_schedule_irq at kernel/sched.c:3114!
Oops: Exception in kernel mode, sig: 5 [#1]
PREEMPT
NIP: C02297A8 LR: C0004A40 SP: C0286170 REGS: c02860c0 TRAP: 0700 Tainted: P
MSR: 00029032 EE: 1 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = c0265b00[0] 'swapper' THREAD: c0286000
Last syscall: 120
GPR00: 00000001 C0286170 C0265B00 00009032 00000000 00003032 00600084 C02B5594
GPR08: C0280000 C0286000 00000001 C026A200 512037AD 4377FFBF 0FFFD000 00000000
GPR16: 00000001 00000001 FFFFFFFF 007FFF00 0FFF7E68 00000000 00000002 0FBC62B0
GPR24: 00000000 00000000 40000000 007FFF7D 007FFF00 C02A0000 C0265B00 C02A28F0
Call trace: [c0004a40] [c0004c7c] [c0004c7c] [c0004c7c] [c0004c7c] [c0004c7c] [c0004c7c] [c0004c7c] [c0004c7c] [c0004c7c] [c0004c7c] [c0004c7c] [c0004c7c] [c0004c7c] [c0004c7c]
Kernel panic - not syncing: Attempted to kill the idle task!
<0>Rebooting in 1 seconds.. "

Does anyone have an idea why this is happening and what am I doing wrong ?



Thanks,
Yigal Goldberger .
 
Old 03-02-2009, 07:39 AM   #2
David1357
Senior Member
 
Registered: Aug 2007
Location: South Carolina, U.S.A.
Distribution: Ubuntu, Fedora Core, Red Hat, SUSE, Gentoo, DSL, coLinux, uClinux
Posts: 1,302
Blog Entries: 1

Rep: Reputation: 107Reputation: 107
Quote:
Originally Posted by yigal_gold View Post
Does anyone have an idea why this is happening and what am I doing wrong?
We could use more information. Can you build a version of your kernel with debugging symbols? Your other alternative is to match those addresses in the "Call trace" to the values in your "System.map" file and manually give us a back trace. That will help us tell you what your driver did wrong.

If I had to make a wild guess, I am assuming you are not using the correct locking mechanism around some shared resource. This line
Code:
kernel BUG in preempt_schedule_irq at kernel/sched.c:3114!
tells me you have a preemptive kernel. This means you have the possibility of two different instances of your driver accessing the same hardware, the same part of your driver data, or some other shared resource.
 
Old 03-03-2009, 01:59 AM   #3
yigal_gold
LQ Newbie
 
Registered: Dec 2008
Posts: 8

Original Poster
Rep: Reputation: 0
Hi David,
I'll be happy to provide you all you need in order to diagnose the problem, including the source code of the interrupt handler .
I'm somewhat new to Linux and can't find the option for debug build ,
How is this done ?

Thanks !
Yigal Goldberger.
 
Old 03-03-2009, 11:48 AM   #4
David1357
Senior Member
 
Registered: Aug 2007
Location: South Carolina, U.S.A.
Distribution: Ubuntu, Fedora Core, Red Hat, SUSE, Gentoo, DSL, coLinux, uClinux
Posts: 1,302
Blog Entries: 1

Rep: Reputation: 107Reputation: 107
Quote:
Originally Posted by yigal_gold View Post
How is this done?
It would probably be easier for you to match to addresses to the values in the "/lib/modules/$(uname -r)/System.map" file.
 
Old 03-12-2009, 11:35 AM   #5
yigal_gold
LQ Newbie
 
Registered: Dec 2008
Posts: 8

Original Poster
Rep: Reputation: 0
kernel BUG in preempt_schedule_irq at kernel/sched.c:3114!

Hi David,
I've looked it up in the System.map file and the addresses correspond to the following :
c0004c7c - __ipipe_ret_from_except
c0004a40 - somewhere inside resume_kernel.

I'm still stuck with this problem.

Thanks in advance.

Yigal.
 
Old 03-15-2009, 04:46 AM   #6
David1357
Senior Member
 
Registered: Aug 2007
Location: South Carolina, U.S.A.
Distribution: Ubuntu, Fedora Core, Red Hat, SUSE, Gentoo, DSL, coLinux, uClinux
Posts: 1,302
Blog Entries: 1

Rep: Reputation: 107Reputation: 107
Quote:
Originally Posted by yigal_gold View Post
I'm still stuck with this problem.
It looks like __ipipe_ret_from_except is recursively calling itself until the scheduler notices and issues the BUG. You should probably look at resume_kernel and see what it would be doing to cause an exception.
 
  


Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
kernel BUG in preempt_schedule_irq at kernel/sched.c:3114! yigal_gold Linux - Kernel 1 03-27-2009 08:46 PM
kernel BUG in preempt_schedule_irq at kernel/sched.c:3114! yigal_gold Linux - Kernel 0 03-01-2009 06:44 AM
how to diagnose kernel BUG at kernel/exit.c:840! ? Helma Linux - Kernel 2 12-23-2007 01:47 AM
Architecture dependency of switch_to in /kernel/sched.c skie_knite007 Programming 0 02-19-2006 08:40 AM
a bug maybe in the new kernel 2.4.19? Frustin Linux - General 2 08-06-2002 04:20 AM


All times are GMT -5. The time now is 01:38 PM.

Main Menu
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
identi.ca: @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration