From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A673BC433E0 for ; Thu, 18 Feb 2021 15:10:32 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 4552560241 for ; Thu, 18 Feb 2021 15:10:32 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4552560241 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:Reply-To:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject:To:From:Date:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=YR5/+bd4ukQ7Dktx31P5kEZPUPrjlp8EpJJnew3ifpc=; b=0jTz7NlPVN2X5lmmfvSZtk7zfd cTVvYNuPlsCGvrI31JG5fIqEt4N6FrsP8Yf5tLLaowzw7N21FsyJi8EMCeL957eZomJxozY+tbuLL bg9cjkfqdQH5QMtrtj458nwVCeY6sD+/zdCPzTD75okkUkF/KXM/lOnJ685ooeaeKOIWRQ62KMQsL HUSxc7UNAXKYgUzk/3IB+R1QF5tOWwtMK7fM6eLvDy5gZDw9ogc7OyoPH2b2xKBHFxj4Vrujx5Sv2 KQHc1ZOaOOE+N3QqOPpi5/ahGMCLiISvmYRBQAR5my8iM/GtPtRVBlFUX+/FsqS3tDvaV7fJVeUhm qkUi7x5A==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1lCkv5-0002h4-MR; Thu, 18 Feb 2021 15:08:43 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1lCkuy-0002cd-Bc for linux-arm-kernel@lists.infradead.org; Thu, 18 Feb 2021 15:08:37 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 6933764EB2; Thu, 18 Feb 2021 15:08:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1613660913; bh=NerRxqyb722AskswI8TTZcSYt2o7gd1lP6k7N6+c0qE=; h=Date:From:To:Cc:Subject:Reply-To:References:In-Reply-To:From; b=PnEZeIleoPo6bCsGx8CRuF1hjCPVmhreFLt8groy24HNFJ1bpqvY6eEnMkzMQg87N uTlUU/8nJs4b83GPUMNx0+i2dkMmjv6TRmLR9cpMkntPqpAkBOQopcdRiXNOMFSXRu Lcs23qd0NJj8hfuJRXD12CNgdz9Vydacz6+aNZk4koimly1UdP98BCfEuHDSGUEzef /5aKzWyU+jC9oeYKh/5V1NvwB817Xzd+CpygLKw4dhkfVHPqDXTSdiyq8SIqaMA+d3 6eQ8WS4B8LtNhlsgIhEVf/SzsdtuVPn9Kb0nJ8Pq4gEVpF3fPYZVnylaWhjUIKXq78 UFC3nVTAApJ1A== Received: by paulmck-ThinkPad-P72.home (Postfix, from userid 1000) id 1CDC935226A0; Thu, 18 Feb 2021 07:08:33 -0800 (PST) Date: Thu, 18 Feb 2021 07:08:33 -0800 From: "Paul E. McKenney" To: Will Deacon Subject: Re: [PATCH v2] arm64: spectre: Prevent lockdep splat on v4 mitigation enable path Message-ID: <20210218150833.GP2743@paulmck-ThinkPad-P72> References: <20210218140346.5224-1-will@kernel.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20210218140346.5224-1-will@kernel.org> User-Agent: Mutt/1.9.4 (2018-02-28) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210218_100836_575015_BA35C254 X-CRM114-Status: GOOD ( 24.25 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: paulmck@kernel.org Cc: Mark Rutland , Lorenzo Pieralisi , Saravana Kannan , Peter Zijlstra , Marc Zyngier , Boqun Feng , Sami Tolvanen , linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Thu, Feb 18, 2021 at 02:03:46PM +0000, Will Deacon wrote: > The Spectre-v4 workaround is re-configured when resuming from suspend, > as the firmware may have re-enabled the mitigation despite the user > previously asking for it to be disabled. > > Enabling or disabling the workaround can result in an undefined > instruction exception on CPUs which implement PSTATE.SSBS but only allow > it to be configured by adjusting the SPSR on exception return. We handle > this by installing an 'undef hook' which effectively emulates the access. > > Installing this hook requires us to take a couple of spinlocks both to > avoid corrupting the internal list of hooks but also to ensure that we > don't run into an unhandled exception. Unfortunately, when resuming from > suspend, we haven't yet called rcu_idle_exit() and so lockdep gets angry > about "suspicious RCU usage". In doing so, it tries to print a warning, > which leads it to get even more suspicious, this time about itself: > > | rcu_scheduler_active = 2, debug_locks = 1 > | RCU used illegally from extended quiescent state! > | 1 lock held by swapper/0: > | #0: (logbuf_lock){-.-.}-{2:2}, at: vprintk_emit+0x88/0x198 > | > | Call trace: > | dump_backtrace+0x0/0x1d8 > | show_stack+0x18/0x24 > | dump_stack+0xe0/0x17c > | lockdep_rcu_suspicious+0x11c/0x134 > | trace_lock_release+0xa0/0x160 > | lock_release+0x3c/0x290 > | _raw_spin_unlock+0x44/0x80 > | vprintk_emit+0xbc/0x198 > | vprintk_default+0x44/0x6c > | vprintk_func+0x1f4/0x1fc > | printk+0x54/0x7c > | lockdep_rcu_suspicious+0x30/0x134 > | trace_lock_acquire+0xa0/0x188 > | lock_acquire+0x50/0x2fc > | _raw_spin_lock+0x68/0x80 > | spectre_v4_enable_mitigation+0xa8/0x30c > | __cpu_suspend_exit+0xd4/0x1a8 > | cpu_suspend+0xa0/0x104 > | psci_cpu_suspend_enter+0x3c/0x5c > | psci_enter_idle_state+0x44/0x74 > | cpuidle_enter_state+0x148/0x2f8 > | cpuidle_enter+0x38/0x50 > | do_idle+0x1f0/0x2b4 > > Prevent these splats by running __cpu_suspend_exit() with RCU watching. > > Cc: Mark Rutland > Cc: Lorenzo Pieralisi > Cc: Peter Zijlstra > Cc: Boqun Feng > Cc: Marc Zyngier > Cc: Saravana Kannan > Suggested-by: "Paul E . McKenney" > Reported-by: Sami Tolvanen > Fixes: c28762070ca6 ("arm64: Rewrite Spectre-v4 mitigation code") > Signed-off-by: Will Deacon Looks good from an RCU perspective. Acked-by: Paul E. McKenney > --- > > v2: Use RCU_NONIDLE() instead of eliding the spinlock > > arch/arm64/kernel/suspend.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/arm64/kernel/suspend.c b/arch/arm64/kernel/suspend.c > index a67b37a7a47e..d7564891ffe1 100644 > --- a/arch/arm64/kernel/suspend.c > +++ b/arch/arm64/kernel/suspend.c > @@ -119,7 +119,7 @@ int cpu_suspend(unsigned long arg, int (*fn)(unsigned long)) > if (!ret) > ret = -EOPNOTSUPP; > } else { > - __cpu_suspend_exit(); > + RCU_NONIDLE(__cpu_suspend_exit()); > } > > unpause_graph_tracing(); > -- > 2.30.0.478.g8a0d178c01-goog > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel