Re: svwsata: lost/missing interrupt

Edgar Fuß <[email protected]>
Newsgroups gmane.os.netbsd.devel.kernel
Message-ID <[email protected]>
> Has anyone looked at FreeBSD for fixes after the routine has been copied?
I tried, but they seem to have partially re-factored the code.

Initially, the fix was #ifdef __powerpc__.

It looks like they are doing the magic (additional 4-byte read on the status 
register) only for what they call the ATA_K2 chip: ata_serverworks_ch_attach() 
will, only in that case, set ch->hw.status = ata_serverworks_status (the 
interrupt handler doing the magic read) plus set ATA_DMA_BEFORE_CMD plus 
two other special treatments I don't understand: two ATA_OUTL at the 
beginning of the block commented as
	Set SICR registers to turn off waiting for a status message
	before sending FIS. Values obtained from the Darwin driver.
and setting a ATA_STATUS_IS_LONG flag (whatever that is) commented as
	The status register must be read as a long to fill the other
	registers.

Can anyone make sense of that?
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.