Current-Users archive

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

Re: isp driver on amd64?

Thor Lancelot Simon wrote:
On Wed, Sep 10, 2008 at 10:29:54AM -0700, Matthew Jacob wrote:
The first error you saw:

isp0: bad underrun for 0.0 (count 32768 resid 2147473407, status not marked)
isp0: BOTCHED cmd for 0.0.0 cmd datalen 32768
sd0(isp0:0:0:0): generic HBA error

That's /usually/ a botched target problem. They aren't correctly marking a residual in the FCP response frame. If you're absolutely sure the target is good, you can comment out the check in isp_intr.

I'm not certain I trust the target.  It is somewhat old and was bought
from the lowest bidder.  On the other hand, I was using this target with
a QLA21xx and NetBSD/i386 (1.6 or thereabouts) a few years ago and
didn't see this error.

The actual requested transfer size was in fact 32768.  Is this a useful
clue one way or the other?

Yes. It says "I asked for 32k". The target filled in bits in the response frame that said that the residual field is valid, but the residual field is some wrongo large number.

It could be a 2300 firmware bug, and the fact that this didn't occur on 21xx or 22xx is only because this part of the frame handling went into hardware in the 23XX.

The linux Qlogic supplied driver ignores this field entirely, which is just plain wrong.

Is there an adapter feature I could adjust in the BIOS which might have
any effect on this?  The only things changed from the defaults are
Fast Command Posting (turned on) and command throttle changed from 16 to

No, it's not part of any of the settings.

Try commenting out this clause in isp_parse_status:

#if 0 <<< ADDED
                               isp_prt(isp, ISP_LOGWARN, bun, XS_TGT(xs),
XS_LUN(xs), XS_XFRLEN(xs), sp->req_resid,
                                   (ru_marked)? "marked" : "not marked");
                               if (XS_NOERR(xs)) {
                                       XS_SETERR(xs, HBA_BOTCH);

and see if life gets better.

Home | Main Index | Thread Index | Old Index