From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.5 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 32B39C2D0EF for ; Thu, 16 Apr 2020 07:10:39 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E9EE720771 for ; Thu, 16 Apr 2020 07:10:38 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="W697xK4U"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="dt7W3di7" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E9EE720771 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=nileJ5hx43ZH7qwXvK+YtIJcDiVPiViWsH4GDGJ3A6o=; b=W697xK4UThU0O8 knKox3YC149s8ENStdP7GeiFqgweYaeWkSuVc1UmuUnh2e2ZEDYYYOjnyR6nkLvcnce6Lrfn2itOk FuZkBOV5BbKoM/y3LVe9EvFD84tnS/YN75xFkn+Hgxphaw4TJkeclBl/P+9TW+2blFKSOxQiTD28k /4qydFJGiTJrpxW3S9DMyl1t/ESWv/Ko6yQlftjEQzgouI3+Ge70vRIakEDUq+Nzs1wxbA9Jhsvhf aPHcWgT6mTsx6Hv77m7hMbq4I0hyI2sQ43JRA6b5RvVG/N/Hys9IORn+Igfq3oBIxggfrtc2vCaWO PgmFGTzhVi7wM5WmcktQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jOyfR-0007wV-C8; Thu, 16 Apr 2020 07:10:33 +0000 Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jOyfN-0007vY-GX for linux-arm-kernel@lists.infradead.org; Thu, 16 Apr 2020 07:10:30 +0000 Received: from willie-the-truck (236.31.169.217.in-addr.arpa [217.169.31.236]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 257FB20771; Thu, 16 Apr 2020 07:10:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1587021029; bh=ryc6wxWPw9o1JBywIVfmLfQfPLw/yNBffMQNg8SEEvY=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=dt7W3di72wz2z2ARB0niotEho/ZirUa6JoEZ7XeG02dWm9SXiDH05NrrrxyPbQUjx WFG4WMY/l+XMZwptWODKf3D6CfxcAz3LWkDk9W30P/Iz6CVAu4FlTaoDD3lttWLDKC jhV6CPm++eT0Xm3S4MG6sU04fMvY24BAx6CCJsjE= Date: Thu, 16 Apr 2020 08:10:24 +0100 From: Will Deacon To: Jiping Ma Subject: Re: [PATCH] Perf: support to unwind userspace application stacks generated with thumb. Message-ID: <20200416071023.GB29742@willie-the-truck> References: <20200416053829.130395-1-jiping.ma2@windriver.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20200416053829.130395-1-jiping.ma2@windriver.com> User-Agent: Mutt/1.10.1 (2018-07-13) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200416_001029_574104_DAD5F6E3 X-CRM114-Status: GOOD ( 17.64 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mark.rutland@arm.com, alexander.shishkin@linux.intel.com, catalin.marinas@arm.com, will.deacon@arm.com, linux-kernel@vger.kernel.org, acme@kernel.org, peterz@infradead.org, mingo@redhat.com, namhyung@kernel.org, jolsa@redhat.com, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Thu, Apr 16, 2020 at 01:38:29PM +0800, Jiping Ma wrote: > Only push sp and lr in the stack for thumb mode. it will go > through the stack find sp and lr. > > Change this to the more detailed description of the patch > > Signed-off-by: Jiping Ma > --- > arch/arm64/kernel/perf_callchain.c | 36 +++++++++++++++++++++++++++--- > 1 file changed, 33 insertions(+), 3 deletions(-) > > diff --git a/arch/arm64/kernel/perf_callchain.c b/arch/arm64/kernel/perf_callchain.c > index bcafd7dcfe8b..97dde271c121 100644 > --- a/arch/arm64/kernel/perf_callchain.c > +++ b/arch/arm64/kernel/perf_callchain.c > @@ -104,6 +104,30 @@ compat_user_backtrace(struct compat_frame_tail __user *tail, > > return (struct compat_frame_tail __user *)compat_ptr(buftail.fp) - 1; > } > + > +void > +user_backtrace_thumb(struct perf_callchain_entry_ctx *entry, > + struct pt_regs *regs) > +{ > + u32 sp; > + u32 *sp_t; > + /* > + * Only push sp, lr to stack. > + */ > + for (sp = regs->compat_sp; (sp < current->mm->start_stack) && > + (entry->nr < entry->max_stack); sp += 4) { > + sp_t = (u32 *)(unsigned long)sp; > + if ((*sp_t > regs->compat_sp) && > + (*sp_t < current->mm->start_stack)) { > + if (*(sp_t + 1) < current->mm->end_code && > + *(sp_t + 1) > current->mm->start_code) { > + perf_callchain_store(entry, *(sp_t + 1)-1); > + sp += 4; > + } > + } > + } > +} This looks like a pile of fragile heuristics to me. Why don't you just use libunwind in userspace, the same way you'd have to if you compiled without framepointers? Will _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel