Søren Schmidt wrote: > If the controller doesn't have a bit saying if the interrupt is for > us, then its impossible to close the race completely (without the > above measures in place). However some devices use the DMA interrupt > bits even in PIO mode (ie HPT does this) but I have no docs on the > VIA's on that, but its worth a try at least... The current situation seems to me like ata_generic_intr can't work for *any* controller sharing interrupts, even with DMA on a controller that sets ATA_BMSTAT_INTERRUPT correctly, since if an interrupt occurs before ATA_DMA_ACTIVE is set, ATA_BMSTAT_PORT is never even checked. IMHO ch->running != NULL is an insufficient condition based on which to assume that an interrupt is intended for a specific channel... Something similar to my patch + disabling interrupts to avoid a race between the interrupt and ATA_EXPECT_INTR being set should at least improve the situation. What races would that leave open?Received on Tue Aug 03 2004 - 05:25:12 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:04 UTC