Re: HT 1000 SATA suggestion




On 7Feb, 2009, at 11:27 , Mikulas Patocka wrote:

Hi

I found that you have problems with HT1000 SATA in FreeBSD.

The problem is actually explained in the comments in the Linux driver.

For normal IDE & legacy SATA cards, the sequence to perform DMA is this:

- load register file
- submit the command to the disk
- setup dma sg table address and start dma

But for ServerWorks SATA chips this sequence is wrong. If there is some
CPU latency and data from the disk arrive BEFORE you start the dma engine,
the controller will hang or corrupt the data.

The correct sequence is to first start dma and then write the command to
the taskfile. (Linux does this on serverworks SATA chips for both read and
write commands, likely it doesn't cause problems with write commands)


Just for the record this (amongst lots of other things) was tried long ago and does *not* solve the problem we were having.

I'm not sure what to make out of their reasoning though, as the result from the problem they describe would be that the amount of data transfered would be wrong, in that case the transaction will either fail or hang the controller, which in both cases should trigger error handling.

-Søren






_______________________________________________
freebsd-current@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscribe@xxxxxxxxxxx"



Relevant Pages

  • HT 1000 SATA suggestion
    ... I found that you have problems with HT1000 SATA in FreeBSD. ... For normal IDE & legacy SATA cards, the sequence to perform DMA is this: ... The correct sequence is to first start dma and then write the command to ...
    (freebsd-current)
  • [PATCH] 460EX on-chip SATA driver < resubmission : 02>
    ... This patch enables the on-chip DWC SATA controller of the AppliedMicro processor 460EX. ... +struct dma_chan_regs { ... * Interrupt Handler for DW AHB SATA DMA ...
    (Linux-Kernel)
  • [PATCH]460EX on-chip SATA driver < resubmission >
    ... This patch enables the on-chip DWC SATA controller of the AppliedMicro processor 460EX. ... +struct dma_chan_regs { ... * Interrupt Handler for DW AHB SATA DMA ...
    (Linux-Kernel)
  • [PATCH]460EX on-chip SATA driver
    ... This patch enables the on-chip DWC SATA controller of the AppliedMicro processor 460EX. ... +struct dma_chan_regs { ... * Interrupt Handler for DW AHB SATA DMA ...
    (Linux-Kernel)
  • [PATCH] 460EX on-chip SATA driver < resubmission : 01>
    ... This patch enables the on-chip DWC SATA controller of the AppliedMicro ... u8 tag); ... * returns value to be programmed in register corrresponding to data ... * Interrupt Handler for DW AHB SATA DMA ...
    (Linux-Kernel)