Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 02 Aug 2004 21:19:00 +0300
From:      Ville-Pertti Keinonen <will+freebsd-current@will.iki.fi>
To:        =?ISO-8859-1?Q?S=F8ren_Schmidt?= <sos@DeepCore.dk>
Cc:        freebsd-current@freebsd.org
Subject:   Re: ATA driver races with interrupts
Message-ID:  <410E8594.7070600@will.iki.fi>
In-Reply-To: <410E81B8.1000206@DeepCore.dk>
References:  <410E688D.7020709@will.iki.fi> <410E74F7.1070000@will.iki.fi> <20040802132802.3d7kgoow0c80ss0s@www.sweetdreamsracing.biz> <410E7B8B.3080407@will.iki.fi> <410E81B8.1000206@DeepCore.dk>

next in thread | previous in thread | raw e-mail | index | archive | help
Søren Schmidt wrote:

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

Ok, I see where it should be detected now - in ata_generic_intr, before 
ata_generic_interrupt...

There is an actual test for the interrupt on the channel, so there 
should be no race if the controller works correctly.  Apparently the VIA 
doesn't...

The detection only applies to DMA - is PIO sensitive to unexpected 
interrupts, even on working controllers?  If so, shouldn't there be some 
protection against this?



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?410E8594.7070600>