1 Mar 2005 04:06
Re: data_xfer too fast? - SATA PIO
Mark Lord <liml <at> rtr.ca>
2005-03-01 03:06:45 GMT
2005-03-01 03:06:45 GMT
Err.. PIO data transfer within a sector (or multiple sector block) is supposed to be synchronous in hardware. This means the chip/board should be using IORDY to stretch the cycle until data can be supplied within each 256-word interrupt group. Right? Mat Loikkanen wrote: > We've run into the issue of ata_mmio_data_xfer() reading our host > controller's data fifo too fast -- requesting a data word when the fifo was > empty, before the device had sent PIO data (in our observed case somewhere > in the middle of a 512 byte IDENTIFY DEVICE PIO data transfer). I can't see > any provision in Libata for a case like ours where the processor and bus are > "too fast". Has anyone run into this issue before? Any ideas on what we > should do about it? We can make our host controller to wait-state the bus > ... but for how long, what if data never arrives ... Thanks for any help. > > -mat > > Mat Loikkanen > Synopsys, Inc. - To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo <at> vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
>
> Yep but it was a lot more "fun" when there were three PIO codepaths.
>
> hdio.txt doesn't need to know about driver internals so no problem here.
>
I was talking about the TASKFILE ioctl IN register result.
> > >
> > >> IMHO, this flag-to-get-result-registers thing is way too subtle. How
> > >>about keeping old behavior by just not copying out register outputs in
> > >>ide_taskfile_ioctl() in applicable cases instead of not reading
> > >>registers when ending commands? That is, unless there's some
> > >>noticeable performance impacts I'm not aware of.
> > >
> > >
> > > This would miss whole point of not _reading_ these registers (IO is slow).
RSS Feed