Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755382AbbHLPS4 (ORCPT ); Wed, 12 Aug 2015 11:18:56 -0400 Received: from mail-pd0-f173.google.com ([209.85.192.173]:34393 "EHLO mail-pd0-f173.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753824AbbHLPSy convert rfc822-to-8bit (ORCPT ); Wed, 12 Aug 2015 11:18:54 -0400 Subject: Re: [PATCH] arm64: Add __exception_irq_entry definition for function graph Mime-Version: 1.0 (Apple Message framework v1283) Content-Type: text/plain; charset=us-ascii From: Jungseok Lee In-Reply-To: <20150812150232.GI23540@arm.com> Date: Thu, 13 Aug 2015 00:18:49 +0900 Cc: Catalin Marinas , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , AKASHI Takahiro , Marc Zyngier , Rabin Vincent , Steven Rostedt Content-Transfer-Encoding: 8BIT Message-Id: <9C0002C4-EEC5-415F-A0BC-2284E662D308@gmail.com> References: <1439388979-1518-1-git-send-email-jungseoklee85@gmail.com> <20150812150232.GI23540@arm.com> To: Will Deacon X-Mailer: Apple Mail (2.1283) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2380 Lines: 72 On Aug 13, 2015, at 12:02 AM, Will Deacon wrote: Hi Will, > On Wed, Aug 12, 2015 at 03:16:19PM +0100, Jungseok Lee wrote: >> The gic_handle_irq() is defined with __exception_irq_entry attribute. >> A single remaining work is to add its definition as ARM did. Below >> shows how function graph data is changed with these hunks. > > [...] > >> 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. Best Regards Jungseok Lee-- 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/