Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp2656815pxj; Mon, 14 Jun 2021 04:11:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzEujC1IKKKZgEhmE0+Zbu+/9w3PzmUJZIGkGrH+/x89JuPswZzJE+QOKBxSRCudIyorCMs X-Received: by 2002:a05:6402:1648:: with SMTP id s8mr16501286edx.256.1623669119133; Mon, 14 Jun 2021 04:11:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623669119; cv=none; d=google.com; s=arc-20160816; b=JQzxqEfM+agkitObm0b5Gh/YuPSIbVVZxQRR8jqdeYfP7JrtEhbgYxFllU4ZgRAfaP NnRAvzN6OtyxuHuXx8m/iL1sGZ07o7tbYPh92HCK/xn93um1NC/4gI0wG/bicMZtLt4w gPneLx44QOL7YTwb8Kf+TDNbqpufuXkikaO/VHJAiRkWrhLYBzUCnYjUii9qCLxt/NW0 aM/lcnHiaUmVVdb90tywjCzsgaRwnXc45/3ZdFu3tC3OULoPCaAasLhRm3OYRrBnRviV b56o19/tgs/k8k7D5tb1u8auHJPyRTZ3bVLQysmR3kG4i7uCyrVFc4WhIHhDPNJpln/0 1ODw== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=GoeCKFEXb6v/5w8PggqFZdZUGAiG+w6gupy4FBetfaI=; b=E6fQ4rq4e76P/YNyzhUzKOpny+XLAkjF0/GoKtZC10IVkoZg+lgvLqJrC9CZGnhDTk UTq+NVSB6dJEM7acXByDXjSRxt9rUlVPb2Tu9OYyykNhjhOnYrf0Qp34nNrZdRFDKOFA 1ergBdQHOzA++l2Yypo7I/xCVTgCRWG8kR/u4b0AweL2sMXu3VE5BrMzFsTuXIkHTb+t WOnXVo6kwkAIWiDbux57ASA1EKFpTpyJ8iqs6pEZDmLFTT0r01D4SlbocCP7jxfvW0BM Q6tVP8VH3Bkybhq20cPzV0i4atHFrnGXyQ5IyQwCYYudl+4ARIacltAK7ROwpNAWQUGi xGcA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Z43WhbQt; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id z22si8987715edb.151.2021.06.14.04.11.36; Mon, 14 Jun 2021 04:11:59 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Z43WhbQt; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235722AbhFNLLK (ORCPT + 99 others); Mon, 14 Jun 2021 07:11:10 -0400 Received: from mail.kernel.org ([198.145.29.99]:36792 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234914AbhFNK7f (ORCPT ); Mon, 14 Jun 2021 06:59:35 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 39B8261626; Mon, 14 Jun 2021 10:42:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1623667347; bh=uOsOqwolP7c9rOMG4+2LkO2+PqcZGbkXk1XA/biK5Uw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Z43WhbQtVmN3UZex6WxCkHAzeBEN8VkmNNTXLT11h+gRjsoqhXT39xzIA9Fprvndb a9vcfmyKOh2a+B6ItzrPdBVfjNlqjxTIZDBA9u11LiWCk1sAon9O2javPERgiyF8Td mqf0UuxYydtGNgPICfhDiiq7/aBcjg8fuuINSvIA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Tiezhu Yang , Steven Rostedt , Thomas Bogendoerfer , Sasha Levin Subject: [PATCH 5.10 034/131] MIPS: Fix kernel hang under FUNCTION_GRAPH_TRACER and PREEMPT_TRACER Date: Mon, 14 Jun 2021 12:26:35 +0200 Message-Id: <20210614102654.168086233@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210614102652.964395392@linuxfoundation.org> References: <20210614102652.964395392@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Tiezhu Yang [ Upstream commit 78cf0eb926cb1abeff2106bae67752e032fe5f3e ] When update the latest mainline kernel with the following three configs, the kernel hangs during startup: (1) CONFIG_FUNCTION_GRAPH_TRACER=y (2) CONFIG_PREEMPT_TRACER=y (3) CONFIG_FTRACE_STARTUP_TEST=y When update the latest mainline kernel with the above two configs (1) and (2), the kernel starts normally, but it still hangs when execute the following command: echo "function_graph" > /sys/kernel/debug/tracing/current_tracer Without CONFIG_PREEMPT_TRACER=y, the above two kinds of kernel hangs disappeared, so it seems that CONFIG_PREEMPT_TRACER has some influences with function_graph tracer at the first glance. I use ejtag to find out the epc address is related with preempt_enable() in the file arch/mips/lib/mips-atomic.c, because function tracing can trace the preempt_{enable,disable} calls that are traced, replace them with preempt_{enable,disable}_notrace to prevent function tracing from going into an infinite loop, and then it can fix the kernel hang issue. By the way, it seems that this commit is a complement and improvement of commit f93a1a00f2bd ("MIPS: Fix crash that occurs when function tracing is enabled"). Signed-off-by: Tiezhu Yang Cc: Steven Rostedt Signed-off-by: Thomas Bogendoerfer Signed-off-by: Sasha Levin --- arch/mips/lib/mips-atomic.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/arch/mips/lib/mips-atomic.c b/arch/mips/lib/mips-atomic.c index de03838b343b..a9b72eacfc0b 100644 --- a/arch/mips/lib/mips-atomic.c +++ b/arch/mips/lib/mips-atomic.c @@ -37,7 +37,7 @@ */ notrace void arch_local_irq_disable(void) { - preempt_disable(); + preempt_disable_notrace(); __asm__ __volatile__( " .set push \n" @@ -53,7 +53,7 @@ notrace void arch_local_irq_disable(void) : /* no inputs */ : "memory"); - preempt_enable(); + preempt_enable_notrace(); } EXPORT_SYMBOL(arch_local_irq_disable); @@ -61,7 +61,7 @@ notrace unsigned long arch_local_irq_save(void) { unsigned long flags; - preempt_disable(); + preempt_disable_notrace(); __asm__ __volatile__( " .set push \n" @@ -78,7 +78,7 @@ notrace unsigned long arch_local_irq_save(void) : /* no inputs */ : "memory"); - preempt_enable(); + preempt_enable_notrace(); return flags; } @@ -88,7 +88,7 @@ notrace void arch_local_irq_restore(unsigned long flags) { unsigned long __tmp1; - preempt_disable(); + preempt_disable_notrace(); __asm__ __volatile__( " .set push \n" @@ -106,7 +106,7 @@ notrace void arch_local_irq_restore(unsigned long flags) : "0" (flags) : "memory"); - preempt_enable(); + preempt_enable_notrace(); } EXPORT_SYMBOL(arch_local_irq_restore); -- 2.30.2