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