[pvrusb2] Kernel oops?
isely at isely.net
Tue Sep 13 18:52:41 CDT 2005
I've looked at this further, and have learned nothing useful. If the last
line in the dump you printed is correct, the kernel has detected an
attempt to schedule itself while inside atomic code. The stack dump you
copied is very confusing; there are logical inconsistencies - it almost
looks like two stack traces comingled. In addition from looking at the
kernel source (kernel/sched.c:2763), I would have expected the "scheduling
while atomic" message to print before the stack dump not after. I'm still
looking at kernel 2.6.13-rc6 for this; maybe you are using a bleeding
kernel and have hit a problem there. I have no idea.
The only thing I can see clearly right now is this: There is only a
single spot in the pvrusb2 driver itself that uses an atomic context, and
that is the code which manipulates I/O buffers. I just now reviewed that
code again and aside from printk(), the driver never calls out to any
external code while it holds that lock - the lock is only there to ensure
atomicity while manipulating a linked list. So if somebody is trying to
erroneously schedule the processor, it can't be this driver. What you
have here might be an entirely different problem.
In order to chase this further, I will need:
1. Exact pedigree of the kernel sources you are using (i.e. which kernel
version or snapshot).
2. Contents of your system kernel log immediately before one of these
dumps, perhaps the preceding 100 lines or so (and if this is for a
different dump than what you sent, send the corresponding dump output as
3. Some means to reproduce the problem. You mentioned you were seeing a
lot of these... I'm trying right now to force a crash with xawtv, but I
can only guess what happened. So far the driver is recovering properly
every time (been power cycling the device, yanking the cable, etc).
Does anyone here see a problem like this?
| Mike Isely | PGP fingerprint
Spammers Die!! | | 03 54 43 4D 75 E5 CC 92
| isely @ pobox (dot) com | 71 16 01 E2 B5 F5 C1 E8
More information about the pvrusb2