Re: Silicon Image 3112A SATA trouble

Jens Axboe
2003-11-30T18:22:57Z

On Sun, Nov 30 2003, Jeff Garzik wrote:
> Jens Axboe wrote:
> >On Sun, Nov 30 2003, Vojtech Pavlik wrote:
> >
> >>On Sun, Nov 30, 2003 at 06:10:06PM +0100, Jens Axboe wrote:
> >>
> >>
> >>>On Sun, Nov 30 2003, Jeff Garzik wrote:
> >>>
> >>>>Bartlomiej Zolnierkiewicz wrote:
> >>>>
> >>>>>On Sunday 30 of November 2003 17:51, Jens Axboe wrote:
> >>>>>
> >>>>>>>Tangent: My non-pessimistic fix will involve submitting a single
> >>>>>>>sector
> >>>>>>>DMA r/w taskfile manually, then proceeding with the remaining
> >>>>>>>sectors in
> >>>>>>>another r/w taskfile. This doubles the interrupts on the affected
> >>>>>>>chipset/drive combos, but still allows large requests. I'm not
> >>>>>>>terribly
> >>>>>>
> >>>>>>Or split the request 50/50.
> >>>>>
> >>>>>
> >>>>>We can't - hardware will lock up.
> >>>>
> >>>>Well, the constraint we must satisfy is
> >>>>
> >>>> sector_count % 15 != 1
> >>>
> >>> (sector_count % 15 != 1) && (sector_count != 1)
> >>>
> >>>to be more precise :)
> >>
> >>I think you wanted to say:
> >>
> >> (sector_count % 15 != 1) || (sector_count == 1)
> >
> >
> >Ehm no, I don't think so... To my knowledge, sector_count == 1 is ok. If
> >not, the hardware would be seriously screwed (ok it is already) beyond
> >software fixups.
>
>
> Now that you've kicked my brain into action, yes, sector_count==1 is ok.
> It's all about limiting the data FIS... and with sector_count==1
> there is no worry about the data FIS in this case.

Ah, my line wasn't completely clear (to say the least)... So to clear
all doubts:

if ((sector_count % 15 == 1) && (sector_count != 1))
errata path

Agree?

--
Jens Axboe