Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp4953683ybv; Tue, 11 Feb 2020 06:29:20 -0800 (PST) X-Google-Smtp-Source: APXvYqwplhYxPq2atBC2TU4W8NJ26YNhF2PiAD+IaD5Pf+SgmCjjMpq4EqdrFeX1Qm7DoeNoU3Bb X-Received: by 2002:aca:fd4c:: with SMTP id b73mr3134604oii.33.1581431360308; Tue, 11 Feb 2020 06:29:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1581431360; cv=none; d=google.com; s=arc-20160816; b=De5DWgWjFq6B4nR1jMImJthiOl8q0VP3dD7CW9j8G9DlA1c7Tbm4+9yJr+w8aqgUHa N/vQdBFmvWnVY/+DJiFRF3o8MN90AMlJOak4DqIG/wj4OzzHXxcQPIewqdFLgEQ0ya21 3d2zpmJdbrUVo57wBdnARGg2WaN7ui4QGAHpIxXd40cjMpZX3gBgGIRYkUNfaJNQJNDx lulTKTKPepXoYnqvsQqASwa8f7mu7UiUV6DP4jQnDGatPDSsfiXXYvP9JYnkWZ1yiJJY soWsm9IIxCzHuUPTJ5MgxxxyEmMjLedNAHiAhaeTJc9ttxCZL85ZwXVW7mT27EdUZulo 15cw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:subject:cc:to:from:date; bh=+h8KF2vqI4Gomnx/TfzpDpQBXCz8PHw9/aUaZ/xC3FA=; b=cqTIeG435jZFcvtStV22v6PSS7+h/eg0ttX2Ld8SF9Q6zXS16NIBgZ6DNMR8b/zMpJ p0tFiK6sKbvHgxMWHAtEjnfeEtQcBEz2k7kfyCLb264CdlmcNOFyMP625+nP+iTUFAmx dw6h0gqYhwwOV7zgJ68uUHOQJY7YiUjZynPRCuKs/IeMCPNFkSGGbTemnv+qq2xMaOEi IoMGAfRuvyfupN8rH1AseW0ktef0DgcfzXA7OG855mJM0fdySGmUlVyaxWFhnDtXijDb 8g8AUm5rFEEQcMm8RvGNSt2PoUoYjCYNOtl4MgqMlwfl2bzy7K4/0b3g1RSVhVjA8JBt 5drw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n9si1888858ota.103.2020.02.11.06.29.08; Tue, 11 Feb 2020 06:29:20 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729788AbgBKOFI (ORCPT + 99 others); Tue, 11 Feb 2020 09:05:08 -0500 Received: from mail.kernel.org ([198.145.29.99]:55402 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729640AbgBKOFG (ORCPT ); Tue, 11 Feb 2020 09:05:06 -0500 Received: from gandalf.local.home (cpe-66-24-58-225.stny.res.rr.com [66.24.58.225]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 5ABBC20870; Tue, 11 Feb 2020 14:05:05 +0000 (UTC) Date: Tue, 11 Feb 2020 09:05:03 -0500 From: Steven Rostedt To: Peter Zijlstra Cc: LKML , Ingo Molnar , "Joel Fernandes (Google)" , Greg Kroah-Hartman , "Gustavo A. R. Silva" , Thomas Gleixner , "Paul E. McKenney" , Josh Triplett , Mathieu Desnoyers , Lai Jiangshan Subject: Re: [PATCH] tracing/perf: Move rcu_irq_enter/exit_irqson() to perf trace point hook Message-ID: <20200211090503.68c0d70f@gandalf.local.home> In-Reply-To: <20200211114954.GK14914@hirez.programming.kicks-ass.net> References: <20200210170643.3544795d@gandalf.local.home> <20200211114954.GK14914@hirez.programming.kicks-ass.net> X-Mailer: Claws Mail 3.17.3 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 11 Feb 2020 12:49:54 +0100 Peter Zijlstra wrote: > On Mon, Feb 10, 2020 at 05:06:43PM -0500, Steven Rostedt wrote: > > + if (!rcu_watching) { \ > > + /* Can not use RCU if rcu is not watching and in NMI */ \ > > + if (in_nmi()) \ > > + return; \ > > + rcu_irq_enter_irqson(); \ > > + } \ > > I saw the same weirdness in __trace_stack(), and I'm confused by it. > > How can we ever get to: in_nmi() && !rcu_watching() ? That should be a > BUG. In particular, nmi_enter() has rcu_nmi_enter(). > > Paul, can that really happen? The stack tracer connects to the function tracer and is called at all the places that function tracing can be called from. As I like being able to trace RCU internal functions (especially as they are complex), I don't want to set them all to notrace. But, for callbacks that require RCU to be watching, we need this check, because there's some internal state that we can be in an NMI and RCU is not watching (as there's some places in nmi_enter that can be traced!). And if we are tracing preempt_enable and preempt_disable (as Joel added trace events there), it may be the case for trace events too. -- Steve