Messages in this thread | | | Date | Tue, 25 Jan 2011 02:28:34 +0300 | From | Alexander Gordeev <> | Subject | Re: PPS parport boot lockup: INFO: HARDIRQ-READ-safe -> HARDIRQ-READ-unsafe lock order detected |
| |
В Fri, 21 Jan 2011 20:43:17 +0100 Ingo Molnar <mingo@elte.hu> пишет:
> > * Linus Torvalds <torvalds@linux-foundation.org> wrote: > > > HOWEVER, even then I think you should see the lockdep message as a > > problem. The automated toolchain is great because it shows problems > > that it thinks might happen - not when they happen, but based on a > > simpler theoretical model. Ignoring the error because there is some > > rule in place that is hard to explain to the automated toolchain is > > the wrong thing to do, because it makes the lockdep automation less > > reliable. > > Yeah. Also, inevitably the false positives have a higher likelyhood > of making it into a released kernel, often because the bugs where > there was a real lockup as well got noticed via other means. > > It's similar with compiler warnings as well: the questionable ones where > GCC is wrong or at least confused accumulate. > > Also note that here there's a real lockup here as well, shortly after the lockdep > message - the boot never continues, the box keep spewing the PPS debug messages: > > [ 76.240020] pps pps0: PPS event at 4294911356 > [ 76.244380] pps pps0: PPS event at 1295471377.240018362 > [ 76.249608] pps pps0: capture assert seq #2 > [ 77.252019] pps pps0: PPS event at 4294911609 > [ 77.256379] pps pps0: PPS event at 1295471378.252017372 > [ 77.261604] pps pps0: capture assert seq #3 > [ 78.264021] pps pps0: PPS event at 4294911862 > [ 78.268387] pps pps0: PPS event at 1295471379.264018619 > [ 78.273621] pps pps0: capture assert seq #4 > [ 79.276018] pps pps0: PPS event at 4294912115 > [ 79.280384] pps pps0: PPS event at 1295471380.276016791 > [ 79.285619] pps pps0: capture assert seq #5 > > But nothing happens, the boot never continues.
I think I was able to reproduce the lockup by compiling parport, parport_pc, pps_parport and pps_gen_parport into the kernel. Both pps_parport and pps_gen_parport use parport_claim_or_block() to claim the parallel port. They compete for the parallel port at bootup. One of them gets it. The other one then lockups the system.
After reading the docs I decided to just add PARPORT_FLAG_EXCL and it worked. The patch follows. Does it help with the lockup you experience?
-- Alexander [unhandled content-type:application/pgp-signature] | |