[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Boot hangs on ips0: resetting adapter, this may take up to 5 minutes



Oleg Sharoiko wrote:
On Sat, 2006-03-04 at 23:07 +0300, Oleg Sharoiko wrote:


ips0: <Adaptec ServeRAID Adapter> mem 0xd0300000-0xd0300fff,0xd4000000-0xd7ffffff irq 11 at device 1.0 on pci3
ips0: Reserved 0x1000 bytes for rid 0x10 type 3 at 0xd0300000
ips0: irq allocation failed
panic: Assertion mtx_unowned(m) failed at /usr/src-HEAD-20060228-223000UTC/sys/kern/kern_mutex.c:885
cpuid = 0
KDB: enter: panic
[thread pid 0 tid 0 ]
Stopped at kdb_enter+0x31: leave db>


There seems to be a small bug in the ips driver. I doesn't relate to the
hang at all, but as I suppose it needs to be fixed anyway.

ips_pci_attach() from dev/ips/ips_pci.c does "goto error;" to make a
cleanup when something goes wrong. There we have

error:
        ips_pci_free(sc);
        return (ENXIO);

ips_pci_free() always calls

mtx_destroy(&sc->queue_mtx);
sema_destroy(&sc->cmd_sema);

but ips_pci_attach may jump to error: event before queue_mtx gets
initialized. Unfortunately I'm not sure how to fix this in the most
proper way. I suppose it would be nice to check in ips_pci_free() if the
mutex is initialized or not, but I don't know how to implement this
check. Another possible solution is to move initializition before first
"goto error"; So I'm leaving this for the one who knows better.

By the way, shouldn't sc->queue also be freed in ips_pci_free ?


I'll look at this, thanks.

Scott
_______________________________________________
freebsd-scsi_(_at_)_freebsd_(_dot_)_org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-scsi
To unsubscribe, send any mail to "freebsd-scsi-unsubscribe_(_at_)_freebsd_(_dot_)_org"


Visit your host, monkey.org