tech-kern archive

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

Re: "adapter resource shortage"?



        hello.  A couple of thoughts:

1.  Revision 1.14.14.2 of mpt_netbsd.c does contain Michael's fixes and is
the version I started with when I began my work on improving the robustness
of the driver.

2.  I'm not sure the error you're getting is related to the problem Michael
fixed.  I believe you're getting an XS_RESOURCE_SHORTAGE status sent back
to you from the driver at the scsipi layer.  Michael's fix addresses a
queue full event from the IOC firmware of the LSI card itself.  It's not
clear to me that the driver does anything but print a message when the
firmware signals this condition.  The mpt(4) driver returns
XS_RESOURCE_SHORTAGE when the IOC returns an INSuFFiCIENT_RESOURCES error
code, which seems to be different from a QUEUE_FULL event from the LSI
firmware's perspective.  It also returns this error when there is a memory
allocation error in the driver.  I guess it would be helpful to find out
where this error is coming from; whether it's a direct result of the IOC
signaling a problem or if there's a secondary memory allocation error in
the driver itself.  It looks like you have at least 255 request slots for
the mpt(4)'s request queue; I would be surprised if you're running out of
those, but who knows?

-Brian
On Mar 6,  1:25am, Mouse wrote:
} Subject: Re: "adapter resource shortage"?
} >> sd1(mpt0:0:1:0): adapter resource shortage
} 
} > This could be caused by the driver not reserving enough command slots
} > for its internal use.  I committed a fix to reduce the maximum
} > commands the scsipi layer would try to use (rev 1.17 of
} > src/sys/dev/ic/mpt_netbsd.c, which should be in the 5.2 branch).
} 
} I have mpt_netbsd.c 1.14.14.2; getting cvsweb to cough up diffs from
} 1.16 to 1.17 of mpt_netbsd.c and comparing them against 1.14.14.2 makes
} me think I do have that delta.
} 
} > You might want to try reducing the scsipi openings a couple more and
} > see if that helps.
} 
} That is, s/2/5/ or some such on the 
} 
}       adapt->adapt_openings = maxq - 2;       /* Reserve 2 for driver use*/
}       adapt->adapt_max_periph = maxq - 2;
} 
} lines, right?  (I'd want to check that maxq is at least 6 first....)
} 
} I'll try that.
} 
}                                       Mouse
>-- End of excerpt from Mouse




Home | Main Index | Thread Index | Old Index