Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 18 Dec 1996 21:49:14 +0100 (MET)
From:      Wilko Bulte <wilko@yedi.iaf.nl>
To:        FreeBSD-hackers@freebsd.org (FreeBSD hackers list)
Subject:   more on Ultrastor U24f and a solution (sort of)
Message-ID:  <199612182049.VAA02364@yedi.iaf.nl>

next in thread | raw e-mail | index | archive | help
Hi

Did some more testing 'n hacking on the Ultrastor 24f. It has proven
to be a combination of the U24f driver and the Toshiba CDROM I have
in this box:

During boot/probe the SCSI CD driver does:

...
        /*
         * Use the subdriver to request information regarding
         * the drive. We cannot use interrupts yet, so the
         * request must specify this.
         *
         * XXX dufault@hda.com:
         * Need to handle this better in the case of no record.  Rather than
         * a state driven sense handler I think we should make it so that
         * the command can get the sense back so that it can selectively log
         * errors.
         */
        cd_get_parms(unit, SCSI_NOSLEEP | SCSI_NOMASK);
        if (dp->disksize) {
                printf("cd present.[%ld x %ld byte records]",
                    cd->params.disksize,
                    cd->params.blksize);
        } else {
                printf("can't get the size\n");
        }
...

The Toshiba's (I have multiple, all behave the same) report something like:

(ncr0:4:0): "TOSHIBA CD-ROM XM-5301TA 0925" type 5 removable SCSI 2
cd0(ncr0:4:0): CD-ROM 
cd0(ncr0:4:0): 250ns (4 Mb/sec) offset 8.

cd0(ncr0:4:0): NOT READY asc:4,1
cd0(ncr0:4:0):  Logical unit is in process of becoming ready
can't get the size

This is how it works with the Pentium machine. The 486 EISA however locks
up the U24f driver during the check for a loaded CDROM. This only seems
to happen if the system has been power cycled and then booted. Whether
a CD is loaded or not makes no difference.

Uncommenting piece of code that does this probe results in a working system.
So, for now I assume the lower level U24f driver cannot handle somewhat
special reqs the cd_get_parms() has.

It's somewhat nasty because the bootfloppy kills itself in a similar
fashion. My question: is there any reason to do this cd_get_parms() 
in this early stage of probing? Why not do this on a first normal open()
when the kernel is up & running? 

Fixing the ultra14f.c to not lockup is of course also an option ;-)

Wilko
_     ____________________________________________________________________
 |   / o / /  _  Bulte  email: wilko@yedi.iaf.nl - Arnhem, The Netherlands
 |/|/ / / /( (_) 	Do, or do not. There is no 'try' - Yoda
--------------------------------------------------------------------------



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199612182049.VAA02364>