Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp5276675rwb; Wed, 21 Sep 2022 05:48:48 -0700 (PDT) X-Google-Smtp-Source: AMsMyM47QHedzZvox/jRy0uNE+pXNOCtaY1D6hUwQzQNAWoP/EXVjLzaYg11gporZSMf6EfezB4Q X-Received: by 2002:a17:903:1c3:b0:177:ef4b:c614 with SMTP id e3-20020a17090301c300b00177ef4bc614mr4619815plh.17.1663764528142; Wed, 21 Sep 2022 05:48:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663764528; cv=none; d=google.com; s=arc-20160816; b=TqF9BlKYMpVZJI2ZFdKTQDdpLCaOEq/CX4cra41Y+XT7IX+EM+b7O7NIUFMYfe+E8I d1Da2iWjtrEA+PCdDjSntBgCcvDtC9HKc8b0GzAGwchUEBuwhSbmWgpPiWET4+JLs7nc pYl3YG8hBuTs7qZP9tEPi/e9OqtMTmaUyvUODb8+VHykUQcJEqUsdwMLZ15D5E6IPmTt HJIJBc6TSjI/yI0kHG8F0Q5JNHJDlsOCAiITtqjJSS+fJzoMug5Wd5w2ecuL9VK7mRL8 dDi4XKWjTiUdCICoFUcKWJ4IOnQV/gJycbRTU1JExryKzv2m5XK1djFndfxxwT/DGdYV 8Ugw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id; bh=BuvvrnCh3llPdTmxjM5pxo6cHLWgwq4J52xlfWrV5CI=; b=Ni+j/vUYoqaMh/lwMFuwYfsQUz/c2EoppDD4/ZGqmhn2ymMwdNFt5C9A6yKVAPAm2e V65u5xJ85Bhb4gnCQPlpSwDrDRvxLuEPKONqykrHatKT/mzGzJ62o2Vt0E7MBJ9DQCvi /vUa5rDZDluPFbMtfzOh+PyIaOdWdIYzDEkVePntg7xI8RG/nVCKzhK38uksvcnMhFo6 FSAGc57ev6bgbe1o2GsEcpkpNE7M8cKOS13bvLpoIUmXqwGQIThsFm0YQ8gjnVpqVK04 BPohdn/XOXWymNvESyqUXHNXr+lyOAG0kh7NKyRuGTs5vzKK5rQ8z2JlbQlKz1AufcVi tQFw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ij27-20020a170902ab5b00b0016eddf64b6dsi2458742plb.181.2022.09.21.05.48.34; Wed, 21 Sep 2022 05:48:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229667AbiIUMdz (ORCPT + 99 others); Wed, 21 Sep 2022 08:33:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34244 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230087AbiIUMdt (ORCPT ); Wed, 21 Sep 2022 08:33:49 -0400 Received: from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2945295E4F; Wed, 21 Sep 2022 05:33:48 -0700 (PDT) Received: from dggpemm500021.china.huawei.com (unknown [172.30.72.54]) by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4MXd5b1YqHz14Qhw; Wed, 21 Sep 2022 20:29:39 +0800 (CST) Received: from dggpemm500013.china.huawei.com (7.185.36.172) by dggpemm500021.china.huawei.com (7.185.36.109) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Wed, 21 Sep 2022 20:33:46 +0800 Received: from [10.67.108.67] (10.67.108.67) by dggpemm500013.china.huawei.com (7.185.36.172) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Wed, 21 Sep 2022 20:33:45 +0800 Message-ID: <7618e500-5368-f271-44f0-81fb43527389@huawei.com> Date: Wed, 21 Sep 2022 20:33:45 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.0 Subject: Re: [PATCH -next 0/7] riscv: Improvments for stacktrace Content-Language: en-US To: Guo Ren CC: , , , , , , , , , , , , , , , , , , , References: <20220920151202.180057-1-chenzhongjin@huawei.com> From: Chen Zhongjin In-Reply-To: Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.67.108.67] X-ClientProxiedBy: dggems706-chm.china.huawei.com (10.3.19.183) To dggpemm500013.china.huawei.com (7.185.36.172) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-7.9 required=5.0 tests=BAYES_00,NICE_REPLY_A, RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On 2022/9/21 10:30, Guo Ren wrote: > Some modifications are related to the patch series [1] [2], please take a look. > > [1] https://lore.kernel.org/linux-riscv/20220918155246.1203293-1-guoren@kernel.org/ > [2] https://lore.kernel.org/linux-riscv/20220916103817.9490-1-guoren@kernel.org/ I have tested my patch on your branches. For the ftrace one it works properly and passed FTRACE_STARTUP_TEST. For the entry one I proposed some advice in another reply, with that my patch also works well. I'll post v2 patch which is totally dependent to yours. And after your patch applied, the stacktrace may need to be updated again, for example, print the type of current unwinding stack. Best, Chen > On Tue, Sep 20, 2022 at 11:15 PM Chen Zhongjin wrote: >> Currently, the stacktrace with FRAME_POINTER on riscv has some problem: >> >> 1. stacktrace will stop at irq so it can't get the stack frames before >> irq entry. >> 2. stacktrace can't unwind all the real stack frames when there is >> k{ret}probes or ftrace. >> >> These are mainly becase when there is a pt_regs on stack, we can't unwind >> the stack frame as normal function. >> >> Some architectures (e.g. arm64) create a extra stackframe inside pt_regs. >> However this doesn't work for riscv because the ra is not ensured to be >> pushed to stack. As explained in: >> commit f766f77a74f5("riscv/stacktrace: Fix stack output without ra on the stack top") >> >> So, I choosed the method of x86 that, if there is a pt_regs on stack, >> we encoded the frame pointer and save it. When unwinding stack frame, >> we can get pt_regs and registers required for unwinding stacks. >> >> In addition, the patch set contains some refactoring of stacktrace.c to >> keep the stacktrace code on riscv consistent with other architectures. >> >> Chen Zhongjin (7): >> riscv: stacktrace: Replace walk_stackframe with arch_stack_walk >> riscv: stacktrace: Introduce unwind functions >> riscv: stacktrace: Save pt_regs in encoded fp on irq entry >> riscv: syscall: Don't clobber s0 when syscall >> riscv: stacktrace: Implement stacktrace for irq >> riscv: stacktrace: Fix unwinding on ftrace_regs_call >> riscv: stacktrace: Fix unwinding on __kretporbe_trampoline >> >> arch/riscv/include/asm/frame.h | 45 +++++ >> arch/riscv/include/asm/stacktrace.h | 13 +- >> arch/riscv/kernel/entry.S | 23 +-- >> arch/riscv/kernel/mcount-dyn.S | 8 + >> arch/riscv/kernel/perf_callchain.c | 2 +- >> arch/riscv/kernel/probes/kprobes_trampoline.S | 8 + >> arch/riscv/kernel/stacktrace.c | 155 ++++++++++++------ >> 7 files changed, 195 insertions(+), 59 deletions(-) >> create mode 100644 arch/riscv/include/asm/frame.h >> >> -- >> 2.17.1 >> > > -- > Best Regards > Guo Ren