ATA driver races with interrupts

Søren Schmidt sos at
Mon Aug 2 11:02:46 PDT 2004

Ville-Pertti Keinonen wrote:
> Kenneth Culver wrote:
>> I have this exact same motherboard, but I'm using the onboard promise 
>> controller
>> set up with 2 disks as a raid0, and I'm not having any problems with this
>> setup. I used the promise controller because from what I've been told, 
>> the
>> promise controllers are very fast in FreeBSD compared to other 
>> controllers.
> If the two disks appear as one to FreeBSD, the problem probably isn't 
> going to show up.
> It may also depend on the controller, since the channel registers might 
> not satisfy the conditions in ata_generic_interrupt (I didn't bother 
> digging up my ATA specs while debugging this), but even if it is a 
> controller oddity, I don't think the ATA driver should be sensitive such 
> conditions.

There is no good solution to this *unless* the HW has bits to determine 
which channel caused the interrupt. Now all decent controller has this, 
but I have no idea about the VIA since they are not one of those 
companies that hands out docs.

The only way to safeguard is to "serialize" access to the channels as 
I've done on a few oh so broken chipsets...


More information about the freebsd-current mailing list