[pvrusb2] NSLU2+PVRUSB2 crashes; more info

Mike Isely isely at isely.net
Sun Feb 12 14:49:55 CST 2006


On Sun, 12 Feb 2006, Phil Endecott wrote:

> Dear All,
>
> I've now been able to extract the kernel panic message from my NSLU2,
> and it doesn't say anything PVRUSB2 related, so I'm not hopeful of much
> help here.  But I thought I'd post it anyway in case it means something
> to anyone.  The complete message is below, but the error is "scheduling
> while atomic" and the backtrace is:
>
> c00498d8 T run_posix_cpu_timers
> c0027d2c t ixp4xx_timer_interrupt
> c001d8c0 t __do_irq
> c001daf0 T do_level_IRQ
> c001dbac T asm_do_IRQ
> c001e4b8 T cpu_idle
> c0008628 T start_kernel
>
> IANAKH (I am not a kernel hacker) but my guess is that something, maybe
> the PVRUSB2 code or maybe something else, is not releasing a lock
> somewhere, and this is detected next time the timer interrupt causes
> rescheduling.  Any debugging ideas?

You may be on the right track there, but unfortunately things like that 
are very timing specific, so it could be just that the pvrusb2 driver is 
affecting overall system timing enough to expose an otherwise unrelated 
bug.  I know, that's not very helpful.  It's a pain to track down things 
like this.  In your shoes I would locate the two bottom-most functions on 
that backtrace and inspect the source code.  That might provide some clues 
where to look.

>
> I should say that I'm not using the latest version of the PVRUSB2
> driver; the last NSLU2 binary is from 20050911.  Are there any related
> fixes since then?

The latest version doesn't deal with any real operational bugfixes in the 
driver; just some tweaks and cleanups.  Probably the closest change in 
that snapshot is that if you're running under 2.6.16 or later the driver 
will use mutexes instead of semaphores, but neither construct has anything 
to do with running atomically.  There is IIRC exactly one place in the 
entire driver which does atomic interactions, and that's in the streaming 
logic itself.  A spinlock is used there to keep the USB core from calling 
back into the driver at an inappropriate time.  But that's it, and that 
code has remained virtually unchanged for months.  (The last change there 
was a new feature to permit optional tolerance of a certain level of USB 
errors - look at the change history to find out when that was done.)

   -Mike

-- 
                         |         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 mailing list