Received: by 2002:a05:6a10:1a4d:0:0:0:0 with SMTP id nk13csp3091971pxb; Thu, 10 Feb 2022 12:03:29 -0800 (PST) X-Google-Smtp-Source: ABdhPJybUPLE6gW4DT7qIDXnB9snTvuOe/y/8VIvC08msUjViu6hfTrGRDNl2fAbGXwYg7cPOdKu X-Received: by 2002:aa7:da08:: with SMTP id r8mr10224608eds.279.1644523409089; Thu, 10 Feb 2022 12:03:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1644523409; cv=none; d=google.com; s=arc-20160816; b=F9keLYqjyhtRrPf9lRTfSPK0T7zlbYCEUTX47B9mE0Pgn52cFbZ8KHcx1ZYTKs8e8X CdoWn6et3m/g1/KL637e0tNvep4VGEYh/5kId1dssEHDpGcfMgLTOaxWVhcaKwMwqteu /Vc8ENP8Y1rAxtbC4afzH+AHwJmJDPvjQwW8rRBj/xUs4+7pCMDTy+y4yFWT1REfvZkx dfqyIzw1g8WArHzvZ/NSnvO6IY7pu9+26JJaWZ1yfaLmI/ecgiY6Fm1b8Su3fR/jBVVK mE7ISYy/8PuVHQRUXaxwGy8m6UcSxXOLdjm2jRaRq3alPGAmKGIh7RQQ940ylrzhZe2S L8MQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=O5hijOgErFuZmVTJnRYlbg4uqOqnQSoJMdVQjztX0ho=; b=iA7kVVjNjnQEinVqx0cUgxNSi52zLFkxUxPNqtQzEQYv6uuPO+DNwS+H2N2gNFc1uM A/aIpukTfl9xQyd+g5BHylyzvYfF770qa9x+7mUqJS9h81djsHtSGML8QRWMcMKyBgOg 81Qm5WgwyLNUc9PMCN1W6/JzWb5bI7zAnA6uRYHqozVOl+BHbHfUoIRRtLQVlB+VlcGt EH1n4YVq39jJLVna4hFo725wRkXWUR5BswnueUWXgujtFrPrHsbmDpsvHrXPAhL23bV1 7rFKiDsngm5Rll9SAnsRnP630g1hMis9O9W56z4DV9y2vqUHQ828b8+wGfJTRNgAcKR9 Xtcw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=ZQoGjcnQ; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l11si13171943ejo.498.2022.02.10.12.02.57; Thu, 10 Feb 2022 12:03:29 -0800 (PST) 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; dkim=pass header.i=@gmail.com header.s=20210112 header.b=ZQoGjcnQ; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242271AbiBJNiI (ORCPT + 99 others); Thu, 10 Feb 2022 08:38:08 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:36768 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239398AbiBJNiH (ORCPT ); Thu, 10 Feb 2022 08:38:07 -0500 Received: from mail-qv1-xf35.google.com (mail-qv1-xf35.google.com [IPv6:2607:f8b0:4864:20::f35]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9732DDCB for ; Thu, 10 Feb 2022 05:38:08 -0800 (PST) Received: by mail-qv1-xf35.google.com with SMTP id h9so4989615qvm.0 for ; Thu, 10 Feb 2022 05:38:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=O5hijOgErFuZmVTJnRYlbg4uqOqnQSoJMdVQjztX0ho=; b=ZQoGjcnQ7vkiRllPo1IbcorQjI/0WVeLmFkW8V+f+4cN1sX5KDgjs2RoZetiDbQxEP pBPvoWfTyk1FhdFhEwMjZLXQVr6OYMaC/oiDOIpp9rn/lC8zT1yMr+fwt4xgF02oym6k R2C39CmlGtop44cxnPWc2qUynzst+/w0PHrD60JWJkaCgkN/njR1eHexrV6cVkWT6krh 7g3CWL8UpYrmhmFUtZQmhWUASriecTlPxc4DKTzifxhJiJWc6MVw3LYpru8IjU9Ynefz YmuDXxijAWGF0xEe/6C0gxfFIm5TnP/yPTZet05BGc48DGmfBU4wmUmQSLGf5rFDU0KJ 1OZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=O5hijOgErFuZmVTJnRYlbg4uqOqnQSoJMdVQjztX0ho=; b=puy5VCJ12wkRcPAUeCkWON+He2t6i7cdB/0/b6ydYZV9Gkwl/ZmV8TucaCpWpg38Py wK6yUeX9R81dfKNopMvNj0wpYmIMW7G2if6WcLQGeHg9c0D8t2kwm/Y5UFbcwOFjvci8 6duVI+oKg6+nFW2GZYXxrwUkBVMru8M1mm3rj6ohBB7+Y2RE/Bl3PKU7OGCd98kJ3R3f eCyh74bxr5ePUybYfpNvAN59m8AfSapZ5AfRNW+GBVHAu83XSAzNyW6+R5UizAynvKY4 5RbNeWyKBzqlXI60SdWLeS2cxeIvSPHNcEZRz5U78PLKt+mm+9Ajwe+rHdhiqrN/JRXu ql7Q== X-Gm-Message-State: AOAM533C37McyLrMlV7SdiHmHYO6pdfvu7SzL/lWlDXNwWbdQETWTpY6 T7Sl0xcbkiZ7Z8Ej1stRvzE= X-Received: by 2002:a05:6214:5095:: with SMTP id kk21mr2219575qvb.86.1644500287718; Thu, 10 Feb 2022 05:38:07 -0800 (PST) Received: from mail.google.com ([207.246.89.135]) by smtp.gmail.com with ESMTPSA id f2sm10656560qti.61.2022.02.10.05.38.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Feb 2022 05:38:07 -0800 (PST) Date: Thu, 10 Feb 2022 21:37:58 +0800 From: Changbin Du To: Jisheng Zhang Cc: Changbin Du , Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2] riscv: fix oops caused by irq on/off tracer Message-ID: <20220210133758.yzebffln6j76zme6@mail.google.com> References: <20220129004226.32868-1-changbin.du@gmail.com> <20220207123850.l4r5qjswaegwisbx@mail.google.com> <20220208003502.62gi5xhyg6bk2t2h@mail.google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE 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 On Thu, Feb 10, 2022 at 01:32:59AM +0800, Jisheng Zhang wrote: [snip] > Hi Changbin, > > I read the code and find that current riscv frame records during > exception isn't as completed as other architectures. riscv only > records frames from the ret_from_exception(). If we add completed What do you mean for 'record'? > frame records as other arch do, then the issue you saw can also > be fixed at the same time. > I don't think so. The problem is __builtin_return_address(1) trigger page fault here. > However, I'm not sure what's the best choice now. > > A simple demo to this incomplete frames: > add dump_stack() in any ISR, then > > in riscv: > [ 2.961294] Call Trace: > [ 2.961460] [] dump_backtrace+0x1c/0x24 > [ 2.961823] [] show_stack+0x2c/0x38 > [ 2.962153] [] dump_stack_lvl+0x40/0x58 > [ 2.962483] [] dump_stack+0x14/0x1c > [ 2.962792] [] serial8250_interrupt+0x20/0x82 > [ 2.963139] [] __handle_irq_event_percpu+0x4c/0x106 > [ 2.963526] [] handle_irq_event+0x38/0x80 > [ 2.963856] [] handle_fasteoi_irq+0x96/0x188 > [ 2.964198] [] generic_handle_domain_irq+0x28/0x3a > [ 2.964567] [] plic_handle_irq+0x88/0xec > [ 2.964896] [] generic_handle_domain_irq+0x28/0x3a > [ 2.965264] [] riscv_intc_irq+0x34/0x5c > [ 2.965584] [] generic_handle_arch_irq+0x4a/0x74 > [ 2.966068] [] ret_from_exception+0x0/0xc > > in x86: > [ 1.191274] Call Trace: > [ 1.192223] > [ 1.192758] dump_stack_lvl+0x45/0x59 > [ 1.192982] serial8250_interrupt+0x24/0x88 > [ 1.193105] __handle_irq_event_percpu+0x66/0x1b0 > [ 1.193239] handle_irq_event+0x34/0x70 > [ 1.193345] handle_edge_irq+0x85/0x1e0 > [ 1.193455] __common_interrupt+0x38/0x90 > [ 1.193573] common_interrupt+0x73/0x90 > [ 1.193809] > [ 1.193889] > [ 1.193956] asm_common_interrupt+0x1b/0x40 > [ 1.194318] RIP: 0010:_raw_spin_unlock_irqrestore+0x1b/0x40 > [ 1.194566] Code: 24 be 01 02 00 00 e9 54 20 bf ff 0f 1f 40 00 0f 1f > 44 00 00 f7 c6 00f > [ 1.195137] RSP: 0000:ffff888000243b68 EFLAGS: 00000246 > [ 1.195314] RAX: 0000000000000000 RBX: ffffffff82025840 RCX: > 0000000000000000 > [ 1.195482] RDX: 0000000000000001 RSI: 0000000000000000 RDI: > 0000000000000001 > [ 1.195645] RBP: 0000000000000202 R08: ffffffffffffffff R09: > 0000000000000000 > [ 1.195808] R10: 00000000000000eb R11: 0000000000000000 R12: > 0000000000000000 > [ 1.195972] R13: 0000000000000040 R14: 0000000000000000 R15: > ffff888000c39000 > [ 1.196245] ? _raw_spin_unlock_irqrestore+0x15/0x40 > [ 1.196373] serial8250_do_startup+0x42d/0x600 > [ 1.196502] uart_port_startup+0x11b/0x270 > [ 1.196619] uart_port_activate+0x3f/0x60 > [ 1.196729] tty_port_open+0x7e/0xd0 > [ 1.196835] ? _raw_spin_unlock+0x12/0x30 > [ 1.196942] uart_open+0x1a/0x30 > [ 1.197036] tty_open+0x153/0x7c0 > [ 1.197144] chrdev_open+0xbf/0x230 > [ 1.197253] ? cdev_device_add+0x90/0x90 > [ 1.197359] do_dentry_open+0x13c/0x360 > [ 1.197470] path_openat+0xb0c/0xe00 > [ 1.197577] ? update_load_avg+0x5f/0x640 > [ 1.197691] ? finish_task_switch.isra.0+0xac/0x240 > [ 1.197821] do_filp_open+0xb2/0x150 > [ 1.197935] ? preempt_schedule_thunk+0x16/0x18 > [ 1.198049] ? preempt_schedule_common+0x90/0xd0 > [ 1.198167] ? preempt_schedule_thunk+0x16/0x18 > [ 1.198291] file_open_name+0xf1/0x1b0 > [ 1.198397] filp_open+0x2c/0x50 > [ 1.198495] console_on_rootfs+0x19/0x52 > [ 1.198648] kernel_init_freeable+0x19a/0x1c7 > [ 1.198765] ? rest_init+0xc0/0xc0 > [ 1.198867] kernel_init+0x16/0x110 > [ 1.198965] ret_from_fork+0x1f/0x30 > [ 1.199131] > As I said before, this issue is not related to stackdump. Besides, you can see more calltrace on x86 that because x86 iterate all stacks (kernel, irq or exception) when dumping stacktrace. While RISCV only show calltrace of current stack. -- Cheers, Changbin Du