tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: svwsata: lost/missing interrupt



> 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?


Home | Main Index | Thread Index | Old Index