Received: by 2002:a05:6358:489b:b0:bb:da1:e618 with SMTP id x27csp1977526rwn; Fri, 16 Sep 2022 04:00:59 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6aC2bRMxa7MF67f8lTtZ6i9uzGiMJqJMGf43yqKFsXWTGDr5FhlffQUTLlZJOc27ZbXmX2 X-Received: by 2002:a17:906:4bd3:b0:731:3bdf:b95c with SMTP id x19-20020a1709064bd300b007313bdfb95cmr3146165ejv.677.1663326059153; Fri, 16 Sep 2022 04:00:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663326059; cv=none; d=google.com; s=arc-20160816; b=bRpPtYLe7YzESI5wMvB8N40J0eZdqi4b9hjhvBMVBxW6H9UgDPploxLtL4j+6LmuUl ussHxUIqjKBbXM8lqcfbb4rf37Yg8+onYxzrK9KJsQtZnXSnm8SnK4uuYWD8yPswxCwn q9DKgzh5+00bCJEj6xivshzfuOe/xawrpyHr/P8fwVjV6P9aUaqYzs8kdKyjXwGQMcle fpZTsmJ680oomhSG+Cd+OpK98EgCqqZAacwPvmZbhFUpoyd4vlV3Iqxc1AhM2//iWczm kcID5fuXfkY/9la758Lc902xxs721M4+bv7jFDRLcqfm1wckZDQhow+v545+Do63lIQj wOoA== 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=P2C63HhJ5zhk0AB3iqUpUdPVHMgc8o8FKFg5L+n54Uk=; b=XeVDDsqtdXx2g0CBhYmKWa6ChqDOokpmfGntL99g6AIotnW9OdL5PKlin/7eLLqD48 jQ0GaGYMH0V3ofrKFFHjmjfK5VkPTxxZr/3WPk0jO4RnojT22Iz5LwmmDNtWeOHwhlsR uVDTc8tKE9Ta4pO7XQu17vrV5TNTYbubuOpXkR9m9vUO9MEV1VpJvUYRG000Q59mG86h dZb+QQ1oaB8j3gdi1vODssUunHn6vTVpJHmv1lPg2EiHyx9SLpjPGw1fsEPYK9mZWkVO GmfI4scZU4ZL2x22L4lz9ISiQb//YZmu6tYTI4wwa1frsUzJuTApq7h8M2ARMDx1d6xw pJJQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=OzewtFsN; 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 Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i18-20020a05640242d200b00450cd1eb7e2si2470695edc.22.2022.09.16.04.00.29; Fri, 16 Sep 2022 04:00:59 -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; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=OzewtFsN; 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 S231993AbiIPKyz (ORCPT + 99 others); Fri, 16 Sep 2022 06:54:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55242 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230503AbiIPKyG (ORCPT ); Fri, 16 Sep 2022 06:54:06 -0400 Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3320BA99DD; Fri, 16 Sep 2022 03:38:43 -0700 (PDT) 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 sin.source.kernel.org (Postfix) with ESMTPS id 63B75CE1D26; Fri, 16 Sep 2022 10:38:41 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1FFC6C433B5; Fri, 16 Sep 2022 10:38:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1663324719; bh=fQQ9LRUqfsx3cfYecZ/0UH/3uQDGIYX4CW3obG1yBZ8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OzewtFsNS61ypGzXNK2PDmiBaEPZNyIkkIMymnIQXNEPqn+Q3M8xbXTEdBz6xbpwo zRT6AofFaPWxrMpqjCfxOz3bGBf4wNMeK49pD3POBxZ9sBQnxIT+AJZHKgdkG0wwR8 9M0cyS+qdIqTYT94EQiSP2IeCvyshuhVLLr6FWWuBKOE7T7reC7WNxcb0yyvK7f6z0 Xcu86W32cEBNJXdtM2lG9HPyqyfRoL35gLMw20IxnkRmkNQpzyKJybShqm8hiwIygT KQbFrehUKlkGr3zbHmXMRjeYE5Vx5+c9qbbSiAJmMiQWxv+ODqUIOASe5aCHaA7UIX eenodqYgWuRCA== From: guoren@kernel.org To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com, rostedt@goodmis.org, andy.chiu@sifive.com, greentime.hu@sifive.com, zong.li@sifive.com, jrtc27@jrtc27.com, mingo@redhat.com Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org Subject: [PATCH 1/3] riscv: ftrace: Fixup panic by disabling preemption Date: Fri, 16 Sep 2022 06:38:15 -0400 Message-Id: <20220916103817.9490-2-guoren@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220916103817.9490-1-guoren@kernel.org> References: <20220916103817.9490-1-guoren@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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 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: fc76b8b8011 ("riscv: Using PATCHABLE_FUNCTION_ENTRY instead of MCOUNT") Cc: 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 ed66c31e4655..b3454c843932 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -272,7 +272,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 -- 2.36.1