Sleeping function called from invalid context in 2.6.17 with realtime preemption

Submitted by benwei
on June 29, 2006 - 6:02pm

Hello,

I'm running 2.6.17 with the latest realtime preemption patch from
http://people.redhat.com/mingo/realtime-preempt/
on a PowerPC 8555E, and I'm running into some trouble.

The kernel boots, and the system gets into its rcS script, before beginning to output an endless stream of messages like this:

BUG: sleeping function called from invalid context rcS(23) at arch/powerpc/math-emu/math.c:226
in_atomic():0 [00000000], irqs_disabled():1
Call Trace:
[DFFC3E90] [A00095AC] show_stack+0x48/0x194 (unreliable)
[DFFC3EC0] [A001BA3C] __might_sleep+0xe8/0xf4
[DFFC3EE0] [A0013920] do_mathemu+0x30/0x8c8
[DFFC3F00] [A00036AC] program_check_exception+0x1ac/0x514
[DFFC3F40] [A0002A08] ret_from_except_full+0x0/0x4c

At arch/powerpc/math-emu/math.c:226 is the following bit of code

if (get_user(insn, (u32 *)pc))
return -EFAULT;

I found a good number of references to problems like this, but none directly related. Can anyone give me some insight into how to go about solving this or debugging it further?

Thanks so much,
Ben