From patchwork Tue Nov 29 03:32:24 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guo Ren X-Patchwork-Id: 27063 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp107533wrr; Mon, 28 Nov 2022 19:39:16 -0800 (PST) X-Google-Smtp-Source: AA0mqf6chkCoc0ctkLeGsXhMy5nCOnVLKoXSSVwmXPB1P8xxYLko85V89xs0C/cWKjUsUTDqyzTs X-Received: by 2002:a17:90b:3944:b0:214:1df0:fe53 with SMTP id oe4-20020a17090b394400b002141df0fe53mr62535790pjb.214.1669693156297; Mon, 28 Nov 2022 19:39:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1669693156; cv=none; d=google.com; s=arc-20160816; b=r9p4JrssU6ik9bRV6S5c0E6N3TohwehzgrUrSUBoF2O7WPA6jy6xvZZv0fbFfSjbzx N8Z9XbVr4C05IXM8QXuNW2cFRokt8T0Sqmyf2Gd7j00I6Jki5041sAt9PJvdclxsEwg8 jiQzawqxjyV8t34LcW8ncTAxCw2hfD55pyJiGE9M0cCxQ12Q8irjvQ40aLvYBxYjzidG Ldo6HOcYkAV3+rf/Lqnz5mWapFOaCfNEz4YO+gFulrLOk/LnVhCKLG1odDw2Y++uS56L obWOaHbeEbW9ADFtMxCpItN6Lut1+tDd+R0Jvap0aJeg75yYCqZT3u7KsOqKkvdQ87Qi Ywrg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=YjXw7YVcO3sgM5Vbzj72o/WiWHI1Np/WpwWW4spvX/4=; b=MPMfpma5HKT8WxS2imclvQw80yiXz5gVF6hKncBBmfFR2DjRYCmzZiv3o2IuhnSXv0 Qz+SDJYmboy5og7sI7zezpjvyNiFEOVpRiC5AbXSK2/5OI6eLwH4x5+nE8Ks+pZyfgRC nG8ibOhqx1xRMwhzV9P/famyh8rU2VOcDXZy4T5GwIvOoi6cuHgJqo48HIckuy0nVyWd scQG96/pvivhHjNwixYoIwjPDk9oMGyluz66vZqeeO1QvMqcdWxufC5gWLJwx7vhB0o/ pDsQYUCzVeuGyr8421eAOL+nAuOVti4F2/8PUEHm1LcqPDWfuH2/vfwdfgdKfqx5M5N2 828w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=XJESHQJr; 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=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k3-20020a056a00134300b0056ee105315fsi13027355pfu.178.2022.11.28.19.38.38; Mon, 28 Nov 2022 19:39:16 -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=@kernel.org header.s=k20201202 header.b=XJESHQJr; 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=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234813AbiK2Dcv (ORCPT + 99 others); Mon, 28 Nov 2022 22:32:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51808 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235468AbiK2Dct (ORCPT ); Mon, 28 Nov 2022 22:32:49 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AC00515724 for ; Mon, 28 Nov 2022 19:32:47 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 3A5FD61564 for ; Tue, 29 Nov 2022 03:32:47 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C086AC43470; Tue, 29 Nov 2022 03:32:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1669692766; bh=vVvv9Dl3Ond8/L8UdaSALSgt+hLH0wBtdq85SQamt6I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XJESHQJrO4KYoVBp10iKOSvt6JEN5l5QRp2/fnu5LqhygqWwVS5LRUa2dxb8G4xVv SzuT+lOHQQNsxnQ/CROZ3O1QoouPaN8f4poLM+BUVgcBV666AeQrhAJLgg1N8MPefB 3PgRsRvVRvnUB9cj4fzlbU8ybPL6oqbvpJcgbl7e8W5Eu6DMJSzKjcuBXdmKlW5oBT Ku6nh+IWFEZ9JGXaIhXVgNc/iGRJ9frv2qfljSZDBcGGuqSSOahOGa5qXICACpeKsm UigBuAckMEKodDT0rxVjtVgJw5qlX/k6khQ/e2cSVBoSEe+7by74josWmh1rAdSmsu GauCgW4LJiILg== From: guoren@kernel.org To: anup@brainfault.org, paul.walmsley@sifive.com, palmer@dabbelt.com, conor.dooley@microchip.com, heiko@sntech.de, rostedt@goodmis.org, mhiramat@kernel.org, jolsa@redhat.com, bp@suse.de, jpoimboe@kernel.org, suagrfillet@gmail.com, andy.chiu@sifive.com, mark.rutland@arm.com Cc: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Guo Ren Subject: [PATCH V4 1/7] riscv: ftrace: Fixup panic by disabling preemption Date: Mon, 28 Nov 2022 22:32:24 -0500 Message-Id: <20221129033230.255947-2-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20221129033230.255947-1-guoren@kernel.org> References: <20221129033230.255947-1-guoren@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1750800170628472700?= X-GMAIL-MSGID: =?utf-8?q?1750800170628472700?= From: Andy Chiu In RISCV, we must use an AUIPC + JALR pair to encode an immediate, forming a jump that jumps to an address over 4K. This may cause errors if we want to enable kernel preemption and remove dependency from patching code with stop_machine(). For example, if a task was switched out on auipc. And, if we changed the ftrace function before it was switched back, then it would jump to an address that has updated 11:0 bits mixing with previous XLEN:12 part. p: patched area performed by dynamic ftrace ftrace_prologue: p| REG_S ra, -SZREG(sp) p| auipc ra, 0x? ------------> preempted ... change ftrace function ... p| jalr -?(ra) <------------- switched back p| REG_L ra, -SZREG(sp) func: xxx ret Fixes: afc76b8b8011 ("riscv: Using PATCHABLE_FUNCTION_ENTRY instead of MCOUNT") Signed-off-by: Andy Chiu Signed-off-by: Guo Ren --- @Andy, could you give the patch a Signed-off-by? I just copy your most important comment, so the first author should be you. First, let's fix the problem caused by my previous patch, and you can continue your ftrace preemption work. --- arch/riscv/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 7cd981f96f48..1d0e5838b11b 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -280,7 +280,7 @@ config ARCH_RV64I select HAVE_DYNAMIC_FTRACE_WITH_REGS if HAVE_DYNAMIC_FTRACE select HAVE_FTRACE_MCOUNT_RECORD if !XIP_KERNEL select HAVE_FUNCTION_GRAPH_TRACER - select HAVE_FUNCTION_TRACER if !XIP_KERNEL + select HAVE_FUNCTION_TRACER if !XIP_KERNEL && !PREEMPTION select SWIOTLB if MMU endchoice