From mboxrd@z Thu Jan 1 00:00:00 1970 From: will.deacon@arm.com (Will Deacon) Date: Tue, 18 Aug 2015 09:21:36 +0100 Subject: [RFC v2 1/4] ftrace: allow arch-specific check_stack() In-Reply-To: <55D17A04.7020800@linaro.org> References: <1438674249-3447-1-git-send-email-takahiro.akashi@linaro.org> <1438674249-3447-2-git-send-email-takahiro.akashi@linaro.org> <20150811170321.GB29880@arm.com> <55D17A04.7020800@linaro.org> Message-ID: <20150818082136.GA10301@arm.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Mon, Aug 17, 2015 at 07:07:00AM +0100, AKASHI Takahiro wrote: > On 08/12/2015 02:03 AM, Will Deacon wrote: > > On Tue, Aug 04, 2015 at 08:44:06AM +0100, AKASHI Takahiro wrote: > >> A stack frame pointer may be used in a different way depending on > >> cpu architecture. Thus it is not always appropriate to slurp the stack > >> contents, as currently done in check_stack(), in order to calcurate > >> a stack index (height) at a given function call. At least not on arm64. > >> > >> This patch extract potentially arch-specific code from check_stack() > >> and puts it into a new arch_check_stack(), which is declared as weak. > >> So we will be able to add arch-specific and most efficient way of > >> stack traversing Later. > >> > >> Signed-off-by: AKASHI Takahiro > > > > If arm64 is the only architecture behaving differently, then I'm happy > > to reconsider the fix to unwind_frame that we merged in e306dfd06fcb > > ("ARM64: unwind: Fix PC calculation"). I'd have thought any architecture > > with a branch-and-link instruction would potentially have the same issue, > > so we could just be fixing things in the wrong place if ftrace works > > everywhere else. > > I'm not the right person to answer for other architectures (and ftrace > behavior on them.) The only thing I know is that current ftrace stack tracer > works correctly only if the addresses stored and found on stack match to > the ones returned by save_stack_trace(). > > Anyway, the fix above is not the only reason that I want to introduce arch-specific > arch_check_stack(). Other issues to fix include > - combined case of stack tracer and function graph tracer (common across arch's) > - exception entries (as I'm trying to address in RFC 4/4) > - in-accurate stack size (for each function, my current fix is not perfect though.) Ok, if you have other reasons for the callback, then fine. I just didn't want you to think that you had to work around e306dfd06fcb at all costs. Will