From mboxrd@z Thu Jan 1 00:00:00 1970 From: "David S. Miller" Date: Wed, 28 Jan 2004 22:15:24 +0000 Subject: Re: [RFC/PATCH, 2/4] readX_check() performance evaluation Message-Id: <20040128141524.5922fe67.davem@redhat.com> List-Id: References: <00a301c3e541$c13a6350$2987110a@lsd.css.fujitsu.com> <20040128182003.GL11844@parcelfarce.linux.theplanet.co.uk> <20040128204049.627e6312.ak@suse.de> <20040128211554.0cc890fb.ak@suse.de> <20040128220921.7ba0bb78.ak@suse.de> In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Linus Torvalds Cc: ak@suse.de, willy@debian.org, ishii.hironobu@jp.fujitsu.com, linux-kernel@vger.kernel.org, linux-ia64@vger.kernel.org On Wed, 28 Jan 2004 13:43:54 -0800 (PST) Linus Torvalds wrote: > On Wed, 28 Jan 2004, Andi Kleen wrote: > > > > On Wed, 28 Jan 2004 12:28:56 -0800 (PST) > > Linus Torvalds wrote: > > > > > > > > Alternatively, if you get a lot of information at MCE time (CPU that did > > > the access + some device data), just queue up the information in a per-CPU > > > queue. You don't have to worry about overflow - you can just drop if if > > > > That assumes that the access happened with preempt off ? > > Yes. I assume you want _some_ locking anyway, at least within that > particular device driver (you don't want to have an irq handler touch the > device at the same time you are doing this thing), so any such spinlock > would have disabled preemption anyway. I am rather certain you are going to need to do a per-controller lock the driver will need to grab during such sequences. It is the only way I can see, if the state sits in some controller register or resetting that status must be done in the controller, to keep two driver inits or resets or whatever from bumping into each other.