NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: kern/39725: wdc timeout softintr panic: (l->l_pflag & LP_INTR) == 0
On Sat, Oct 11, 2008 at 04:17:44PM +0200, Manuel Bouyer wrote:
> On Sat, Oct 11, 2008 at 08:05:01AM +0000, kardel%netbsg.org@localhost wrote:
> > [...]
> > >Description:
> > during presumably heavy diskio this timeout triggers the assertion.
> > Beats me why I seems to attempt to restart the disk - maybe a probelm with
> > the disk or the ATA emulation mode of the board for
> > the actual SATA disks.
> > ...
> > #23 0xc04ef66d in panic (fmt=0xc0afa558 "kernel %sassertion \"%s\"
> > failed: file \"%s\", line %d") at
> > /fs/raid1a/src/NetBSD/tc-merge/src/sys/kern/subr_prf.c:244
> > #24 0xc0832019 in __kernassert (t=0xc0a3d5c0 "diagnostic ",
> > f=0xc0a89c34 "/fs/raid1a/src/NetBSD/tc-merge/src/sys/kern/kern_synch.c",
> > l=189, e=0xc0a89baa "(l->l_pflag & LP_INTR) == 0")
> > at /fs/raid1a/src/NetBSD/tc-merge/src/sys/lib/libkern/__assert.c:50
> > #25 0xc04d1cb8 in ltsleep (ident=0xce01cc08, priority=16,
> > wmesg=0xc0a6db52 "atapoll", timo=1, interlock=0x0) at
> > /fs/raid1a/src/NetBSD/tc-merge/src/sys/kern/kern_synch.c:189
> > #26 0xc034bc14 in wdcwait (chp=0xce73481c, mask=64, bits=64,
> > timeout=10000, flags=0) at
> > /fs/raid1a/src/NetBSD/tc-merge/src/sys/dev/ic/wdc.c:1272
> > #27 0xc05d8795 in wdc_ata_bio_start (chp=0xce73481c, xfer=0xc47e7f18)
> > at /fs/raid1a/src/NetBSD/tc-merge/src/sys/dev/ata/ata_wdc.c:225
> > #28 0xc05d8e56 in atastart (chp=0xce73481c) at
> > /fs/raid1a/src/NetBSD/tc-merge/src/sys/dev/ata/ata.c:896
> > #29 0xc05d7469 in wdc_ata_bio (drvp=0xce73485c, ata_bio=0xd0087090) at
> > /fs/raid1a/src/NetBSD/tc-merge/src/sys/dev/ata/ata_wdc.c:175
> > #30 0xc05d51bd in __wdstart (wd=0xd0087004, bp=0xc4a5115c) at
> > /fs/raid1a/src/NetBSD/tc-merge/src/sys/dev/ata/wd.c:758
> > #31 0xc05d7305 in wdrestart (v=0xd0087004) at
> > /fs/raid1a/src/NetBSD/tc-merge/src/sys/dev/ata/wd.c:896
> > #32 0xc04d9fed in callout_softclock (v=0x0) at
> > /fs/raid1a/src/NetBSD/tc-merge/src/sys/kern/kern_timeout.c:730
>
> wdcwait() checks for cpu_intr_p() to know if it can tsleep() or not,
> but this doesn't work for soft interrupts (I though soft interrupt handlers
> could tsleep now). Is there other checks that can be used to know if
> tsleep() is allowed or not (beside checking LP_INTR in curlwp()).
>
> I'm also concerned by the fact that cpu_intr_p() doesn't catch this case,
> because biodone() can be called from soft interrupt handlers (especially
> callout handlers).
This isn't an issue, as biodone2() is also called from a soft interrupt.
But the first question about cpu_intr_p() and tsleep() remains.
--
Manuel Bouyer <bouyer%antioche.eu.org@localhost>
NetBSD: 26 ans d'experience feront toujours la difference
--
Home |
Main Index |
Thread Index |
Old Index