Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 01 May 2003 11:08:33 -0600 (MDT)
From:      "M. Warner Losh" <imp@bsdimp.com>
To:        scott_long@btc.adaptec.com
Cc:        cvs-all@freebsd.org
Subject:   Re: cvs commit: src/sys/dev/fxp if_fxp.c if_fxpvar.h
Message-ID:  <20030501.110833.25163273.imp@bsdimp.com>
In-Reply-To: <3EB14AE8.1040902@btc.adaptec.com>
References:  <1721460000.1051803729@aslan.btc.adaptec.com> <20030501.101409.57443470.imp@bsdimp.com> <3EB14AE8.1040902@btc.adaptec.com>

next in thread | previous in thread | raw e-mail | index | archive | help
> 	fxp_detach()
> [4]	LOCK
> [a]	write 0 to dis intr
> [5]				device B on same intr interrupts here
> 				fxp_intr()
> 				LOCK (->sleep)
> [b]	gone = 0;
> 	UNLOCK
> [1]				if (gone) return;
> [2]	bus_teardown_intr();
> [3]	bus_teardown_intr returns

In message: <3EB14AE8.1040902@btc.adaptec.com>
            Scott Long <scott_long@btc.adaptec.com> writes:
: In this example, is there a reason for the fxp ISR to hold the mutex
: before it determines the source of the interrupt?

The interrupt could well be for the fxp card, between points [4] and
[a], so it would read the ISR source register, see that it is his and
take the lock out.  That's slightly different than my example, but
still a concern.  Doug Rabson has reported, when doing the initial
ia64 port, that races of even one instruction in width were observed
to have happened.

Warner



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