From patchwork Thu Jul 16 01:08:03 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: AKASHI Takahiro X-Patchwork-Id: 6801131 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 6D1399F2F0 for ; Thu, 16 Jul 2015 01:10:50 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 867952060A for ; Thu, 16 Jul 2015 01:10:49 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 98DBC205D1 for ; Thu, 16 Jul 2015 01:10:48 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1ZFXf9-0007sr-HG; Thu, 16 Jul 2015 01:08:35 +0000 Received: from mail-pa0-f45.google.com ([209.85.220.45]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1ZFXf7-0007p7-0p for linux-arm-kernel@lists.infradead.org; Thu, 16 Jul 2015 01:08:33 +0000 Received: by padck2 with SMTP id ck2so32910685pad.0 for ; Wed, 15 Jul 2015 18:08:11 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to :cc:subject:references:in-reply-to:content-type :content-transfer-encoding; bh=qH/SQwh7okJpTSLoFunpSOfW53/5V6ZvqDlo37pOheo=; b=OvL2oddzhAAUAwcyHxa/5MwvdH3wr2zZfjbunI92Ee6Bihf46gEyZgvOM6qGf+ZTCO pTEyiTuv0ya4KwR/xM8g2HVCuonOLMvmnmhW9ttdwteLZKdco/88XoZY4sfTPKYgd+lN GgS6wfB5SbJkm1mYaeAOlIgX7ZRlBeA/MQ1hae2UDWtZwnrG+/LIPk/zvoWqMiiPIeeo SwkqSLQWkia/KNCIjY2hITsKqZ4Ao/9nIZeiT3JUnYTAz/nUNKrp8QcUe4bJBKsXea5+ VSbBFKapH+MmNG84dd8sUtoR9Iw6UhAlg2PiHzqulfUvMeOxP4ksSyc24Tt4a+ZnYwfq qJLQ== X-Gm-Message-State: ALoCoQlDF9qvynXlawr4NGJwRl05uzLxACLDj0+nZwnQ8ZsHthtkI/Tkr328FGijWiFZ/OzoERA0 X-Received: by 10.66.142.42 with SMTP id rt10mr13196783pab.142.1437008891038; Wed, 15 Jul 2015 18:08:11 -0700 (PDT) Received: from [192.168.1.225] (61-205-7-98m5.grp1.mineo.jp. [61.205.7.98]) by smtp.googlemail.com with ESMTPSA id ph4sm5927671pdb.43.2015.07.15.18.08.06 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 15 Jul 2015 18:08:09 -0700 (PDT) Message-ID: <55A703F3.8050203@linaro.org> Date: Thu, 16 Jul 2015 10:08:03 +0900 From: AKASHI Takahiro User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 MIME-Version: 1.0 To: Steven Rostedt Subject: Re: [RFC 2/3] arm64: refactor save_stack_trace() References: <1436765375-7119-1-git-send-email-takahiro.akashi@linaro.org> <1436765375-7119-3-git-send-email-takahiro.akashi@linaro.org> <20150714093154.4d73e551@gandalf.local.home> <55A5A75A.1060401@linaro.org> <20150714225105.6c1e4f15@gandalf.local.home> <55A646EE.6030402@linaro.org> <20150715105536.42949ea9@gandalf.local.home> <20150715121337.3b31aa84@gandalf.local.home> <55A6FA82.9000901@linaro.org> In-Reply-To: <55A6FA82.9000901@linaro.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20150715_180833_095897_04BB744C X-CRM114-Status: GOOD ( 17.43 ) X-Spam-Score: -2.6 (--) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jungseok Lee , catalin.marinas@arm.com, will.deacon@arm.com, linux-kernel@vger.kernel.org, broonie@kernel.org, david.griego@linaro.org, olof@lixom.net, linux-arm-kernel@lists.infradead.org Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Spam-Status: No, score=-5.6 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP On 07/16/2015 09:27 AM, AKASHI Takahiro wrote: > On 07/16/2015 01:13 AM, Steven Rostedt wrote: >> On Wed, 15 Jul 2015 10:55:36 -0400 >> Steven Rostedt wrote: >> >> >>> I'll take a look at it and try to clean up the code. >> >> Does the following patch make sense for you? > > Looks nice. The patch greatly simplifies changes on arm64 side. As follows: - Takahiro AKASHI diff --git a/arch/arm64/include/asm/ftrace.h b/arch/arm64/include/asm/ftrace.h index c5534fa..868d6f1 100644 --- a/arch/arm64/include/asm/ftrace.h +++ b/arch/arm64/include/asm/ftrace.h @@ -15,6 +15,7 @@ #define MCOUNT_ADDR ((unsigned long)_mcount) #define MCOUNT_INSN_SIZE AARCH64_INSN_SIZE +#define FTRACE_STACK_FRAME_OFFSET 4 /* sync it up with stacktrace.c */ #ifndef __ASSEMBLY__ #include diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h index 1da6029..2c1bf7d 100644 --- a/include/linux/ftrace.h +++ b/include/linux/ftrace.h @@ -260,6 +260,13 @@ static inline void ftrace_kill(void) { } #endif /* CONFIG_FUNCTION_TRACER */ #ifdef CONFIG_STACK_TRACER +/* + * the offset value to add to return address from save_stack_trace() + */ +#ifndef FTRACE_STACK_FRAME_OFFSET +#define FTRACE_STACK_FRAME_OFFSET 0 +#endif + extern int stack_tracer_enabled; int stack_trace_sysctl(struct ctl_table *table, int write, diff --git a/kernel/trace/trace_stack.c b/kernel/trace/trace_stack.c index 9384647..c5b9748 100644 --- a/kernel/trace/trace_stack.c +++ b/kernel/trace/trace_stack.c @@ -105,7 +105,7 @@ check_stack(unsigned long ip, unsigned long *stack) /* Skip over the overhead of the stack tracer itself */ for (i = 0; i < max_stack_trace.nr_entries; i++) { - if (stack_dump_trace[i] == ip) + if ((stack_dump_trace[i] + FTRACE_STACK_FRAME_OFFSET) == ip) break; } @@ -131,7 +131,8 @@ check_stack(unsigned long ip, unsigned long *stack) p = start; for (; p < top && i < max_stack_trace.nr_entries; p++) { - if (*p == stack_dump_trace[i]) { + if (*p == (stack_dump_trace[i] + + FTRACE_STACK_FRAME_OFFSET)) { stack_dump_trace[x] = stack_dump_trace[i++]; this_size = stack_dump_index[x++] = (top - p) * sizeof(unsigned long);