isp driver not 64 bit?

freebsd-list at freebsd-list at
Mon Nov 29 17:05:48 PST 2004

After a bunch of frustrating debugging, I've tenatively come to the
conclusion that the isp(4) driver is not 64 bit safe --- at the very
least insofar as the amd64 platform is concerned.

The test setup was a quad opteron 248 system connected via two isp
2340 cards to switches which interconnect to an EMC^2 disk array.
I've made a couple of interim posts on this subject.

The message from scsi_da.c indicates the correct probe is received
from the disk.  In the test, it was a 131 gig disk of 512 byte
sectors.  However, by the time we get to cam_calc_geometry() in
cam.c, the structure is corrupt --- containing bad values for both
volume_size and sector_size.

The data is bogus enough at this point, that it can't be repaired
... and I gave up on the "quick fix" effort.  Origionally, it
manifested as a divide by zero error (the block size was so huge, it
brought the denominator in the first few lines to zero).  But both the
block_size and the volume_size are bogus making efforts by geom to
taste the last sector fail.

The isp driver is quite complex.  I havn't encountered much of the
SCSI or CAM stack before.  It would seem a brief overview of where
things go from the momment when scsi_da prints out the correct size to
the point at which cam_calc_geometry() receives corrupt data would
help greately.

Our hardware vendor is going to try to obtain test hardware for the
LSI logic HBA and an Adaptec HBA --- so we can test them.  The test
machine remains somewhat available, but it looks like the production
machines will be linux (unless I can solve this problem this week).


|David Gilbert, Independent Contractor.       | Two things can only be     |
|Mail:       dave at                    |  equal if and only if they |
|                              |   are precisely opposite.  |

More information about the freebsd-amd64 mailing list