Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759336AbZCUQjV (ORCPT ); Sat, 21 Mar 2009 12:39:21 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754225AbZCUQjL (ORCPT ); Sat, 21 Mar 2009 12:39:11 -0400 Received: from hrndva-omtalb.mail.rr.com ([71.74.56.123]:48869 "EHLO hrndva-omtalb.mail.rr.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753277AbZCUQjL (ORCPT ); Sat, 21 Mar 2009 12:39:11 -0400 Date: Sat, 21 Mar 2009 12:39:08 -0400 (EDT) From: Steven Rostedt X-X-Sender: rostedt@gandalf.stny.rr.com To: "K.Prasad" cc: Frederic Weisbecker , Ingo Molnar , Linux Kernel Mailing List , Alan Stern , Andrew Morton , Benjamin Herrenschmidt , Maneesh Soni , Roland McGrath Subject: Re: [Patch 11/11] ftrace plugin for kernel symbol tracing using HW Breakpoint interfaces - v2 In-Reply-To: <20090321162417.GA9906@in.ibm.com> Message-ID: References: <20090319234044.410725944@K.Prasad> <20090319235032.GL10517@in.ibm.com> <20090320090451.GC7820@nowhere> <20090321162417.GA9906@in.ibm.com> User-Agent: Alpine 2.00 (DEB 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1417 Lines: 48 On Sat, 21 Mar 2009, K.Prasad wrote: > > > > > > > + > > > +void ksym_collect_stats(unsigned long hbkpt_hit_addr) > > > +{ > > > + struct hlist_node *node; > > > + struct trace_ksym *entry; > > > + > > > + spin_lock(&ksym_stat_lock); > > > > > > I see that can be called from ksym_hbkpt_handler which in turn > > can be called from interrupt context, right? > > You can issue a deadlock if you don't disable interrupts here. > > > > Thanks, > > Frederic. > > > > ksym_collect_stats<--ksym_hbkpt_handler<--hw_breakpoint_handler<--do_debug > invocation happens with interrupts enabled (IF bit is set). I do find > that a few plugins in kernel/trace enclose the > trace_buffer_lock_reserve()--trace_buffer_unlock_commit() invocation > within interrupt-disabled code. Is that a requirement there? > > The potential deadlock scenario you foresee isn't obvious to me. Can you > explain? Can that lock ever be taken in an interrupt? If not, document that (and perhaps add a WARN_ON(in_interrupt()); ). Otherwise you have a possible: spin_lock(&ksym_stat_lock); ===> take interrupt ... (from interrupt) spin_lock(&ksym_stat_lock); <== deadlock. -- Steve -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/