Port-xen archive

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

Re: Freezing Dom0



On Sun, 25 Sep 2011, Torsten Harenberg wrote:

okay.. I managed to set up the serial console, rebooted and now run into the same freezing state and are in the debugger. So I could get a full bt and a dmesg, which says at the end:

sd1(ciss1:0:0:0): no free tags
panic: scsipi_get_tag
fatal breakpoint trap in supervisor mode
trap type 1 code 0 rip ffffffff804f5b9d cs e030 rflags 246 cr2  7f7ffdfdc000 cpl
6 rsp ffffa0002f691500
...
What does this "sd1(ciss1:0:0:0): no free tags" mean? Any hint is really very 
much appreciated.

It means that the ciss(4) driver will accept more than 256 command, but the tagging done in the scsipi layer can only do 256 and a DIAGNOSTIC kernel will panic if more are used. The tag passed by the scsipi layer to ciss(4) is ignore, as the ciss(4) handles the tagging internally.

A current kernel shouldn't have this problem, as ciss(4) was changed several months ago to have a maximum of 256 command per device, but was not pulled up to the netbsd-5 branch. [I have requested a pullup, so at some point this should be resolved for that branch.]

To fix this now for a netbsd-5* branch kernel [until the change gets pulled up], you will need the change in revision 1.25 of sys/dev/ic/ciss.c.

@@ -373,7 +373,7 @@ ciss_attach(struct ciss_softc *sc)
        sc->sc_adapter.adapt_dev = (device_t) sc;
        sc->sc_adapter.adapt_openings = sc->sc_channel.chan_openings;
-       sc->sc_adapter.adapt_max_periph = sc->sc_channel.chan_openings;
+       sc->sc_adapter.adapt_max_periph = min(sc->sc_adapter.adapt_openings, 
256);
        sc->sc_adapter.adapt_request = ciss_scsi_cmd;
        sc->sc_adapter.adapt_minphys = cissminphys;
        sc->sc_adapter.adapt_ioctl = ciss_scsi_ioctl;

--
Michael L. Hitch                        mhitch%montana.edu@localhost
Computer Consultant
Information Technology Center
Montana State University        Bozeman, MT     USA


Home | Main Index | Thread Index | Old Index