Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932336AbbHLQxa (ORCPT ); Wed, 12 Aug 2015 12:53:30 -0400 Received: from foss.arm.com ([217.140.101.70]:59307 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753241AbbHLQx2 (ORCPT ); Wed, 12 Aug 2015 12:53:28 -0400 Date: Wed, 12 Aug 2015 17:53:24 +0100 From: Will Deacon To: Jungseok Lee Cc: Catalin Marinas , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , AKASHI Takahiro , Marc Zyngier , Rabin Vincent , Steven Rostedt Subject: Re: [PATCH] arm64: Add __exception_irq_entry definition for function graph Message-ID: <20150812165324.GK23540@arm.com> References: <1439388979-1518-1-git-send-email-jungseoklee85@gmail.com> <20150812150232.GI23540@arm.com> <9C0002C4-EEC5-415F-A0BC-2284E662D308@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <9C0002C4-EEC5-415F-A0BC-2284E662D308@gmail.com> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2341 Lines: 66 On Wed, Aug 12, 2015 at 04:18:49PM +0100, Jungseok Lee wrote: > On Aug 13, 2015, at 12:02 AM, Will Deacon wrote: > > On Wed, Aug 12, 2015 at 03:16:19PM +0100, Jungseok Lee wrote: > >> diff --git a/arch/arm64/include/asm/traps.h b/arch/arm64/include/asm/traps.h > >> index 232e4ba..0cc2f29 100644 > >> --- a/arch/arm64/include/asm/traps.h > >> +++ b/arch/arm64/include/asm/traps.h > >> @@ -34,13 +34,32 @@ struct undef_hook { > >> void register_undef_hook(struct undef_hook *hook); > >> void unregister_undef_hook(struct undef_hook *hook); > >> > >> +#ifdef CONFIG_FUNCTION_GRAPH_TRACER > >> +static inline int __in_irqentry_text(unsigned long ptr) > >> +{ > >> + extern char __irqentry_text_start[]; > >> + extern char __irqentry_text_end[]; > >> + > >> + return ptr >= (unsigned long)&__irqentry_text_start && > >> + ptr < (unsigned long)&__irqentry_text_end; > >> +} > >> +#else > >> +static inline int __in_irqentry_text(unsigned long ptr) > >> +{ > >> + return 0; > >> +} > >> +#endif > >> + > >> static inline int in_exception_text(unsigned long ptr) > >> { > >> extern char __exception_text_start[]; > >> extern char __exception_text_end[]; > >> + int in; > >> + > >> + in = ptr >= (unsigned long)&__exception_text_start && > >> + ptr < (unsigned long)&__exception_text_end; > >> > >> - return ptr >= (unsigned long)&__exception_text_start && > >> - ptr < (unsigned long)&__exception_text_end; > >> + return in ? : __in_irqentry_text(ptr); > >> } > > > > On arm64, this function is only called from dump_backtrace, so I'm > > struggling to see why this change makes any difference to the ftrace > > output. > > > > What am I missing? > > As you mentioned, the above hunk does not change the ftrace behavior. > > The first diff directly affects the first condition check in print_graph_irq > function in kernel/trace/trace_functions_graph.c. The code snippet is as follows. > > if (addr < (unsigned long)__irqentry_text_start || > addr >= (unsigned long)__irqentry_text_end) > return; > > I hope it would be helpful. Gotcha, thanks for the explanation. Will -- 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/