Subject: Re: ahc and Semantics of the "COMPLETE" return code
To: Manuel BOUYER <email@example.com>
From: Justin T. Gibbs <firstname.lastname@example.org>
Date: 06/24/1997 08:20:20
>On Jun 23, Justin T. Gibbs wrote
>> No, it is a real error. With 256 S/G segments, you can represent, worst
>> case, a 1MB I/O. Since the kernel can only generate up to 64k I/Os, this
>> is a "can't happen" condition (we should only use 17 S/G segments max).
>> FreeBSD saw a similar problem perhaps a year and a half ago and it was
>> caused by a sign extension bug somewhere. You could ask phk@FreeBSD.org for
>> details since he tracked down and fixed the bug.
>Yes, but the adapter is supposed to be able to handle several I/Os
>at the same time, isn't it ? could'nt it run out of S/G segments in this case
The controller allocates a complete set of SG segments for each command
block. If you were able to get an SCB (essentially a command block to
handle this transaction), either by mallocing it or obtaining it from
the free pool, then you already have 256 SG segments availible for use.
The error is saying that the data length passed into the driver was for
a larger than 1MB I/O. I'm sure that if you put a check into sd.c or
the aic7xxx driver for greater than 64k I/O, you'll hit your bug and
may even be able to, with the debugger, determine what chunk screwed up
the data length.
>Manuel Bouyer, LIP6, Universite Paris VI. email@example.com
Justin T. Gibbs
FreeBSD: Turning PCs into workstations