Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp1026806ybv; Fri, 7 Feb 2020 12:59:28 -0800 (PST) X-Google-Smtp-Source: APXvYqw1GqhfMdWTP6PcXPT5h8OfSHMJSyZNy4ywHJPHxC5tLJZ2wxuKW3v9Jmhtg9QpIV5of8fM X-Received: by 2002:a9d:7487:: with SMTP id t7mr1003479otk.267.1581109168537; Fri, 07 Feb 2020 12:59:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1581109168; cv=none; d=google.com; s=arc-20160816; b=K/aE7L+EohAtdnfMidoj5P1u6EVhdvwHKRKFToEnz0WGgw6uYC12DOiaHweyWjM6ef IN32vx6+PyQoJ6z+OP4xmm5rWzFlURrbCauxhSg4PtBzL93ieN//4wgjGjJydFk/Pr5p 6cJHdBHN38EYy4zWuqdI/KkRyoD96t84M4Q8G7ei0TDe26iwuBB4NFqz0Sh/ky428o7B R46NAJxqq1Dgq1P6R3IdiRivwzdp5rvqE2QjYY7a2AeNQjvEJw+pmCgxocibCRB62gL+ C/PMWxbrGNgR4YBk4BcuiAfcveaL12p2poboCh7VEq0msOBneGcyMefr0T4xAufVUVQv 8ODQ== 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:date:subject:cc:to:from :dkim-signature; bh=HN45H+ids+NCISymh2yr5TaGOkbSeu3kPfZfuoJYhiE=; b=ePrI+1ASrnjQS8dx0Zkv+jbWFjfsNWhlkxxMCRop7jOIpmLJWolUaHYDLoA/E7In2X a5THoVTSo0UAKt4IEzKw646uE5A1K6QHpxzP3SPhY+OLxYjU0tonTX4V8I8rC0qbTwbR iBVZCYm6dCJyw+CnsDyHzau5C3dWFO/0zKtIo0T8HDlRh16FOyENVOn5DIm7pf58TRu8 MM0tP4KvYrm6lEmYo1qoHUEllATgVqiK0uRPM8FEihGu8Dq715FQ/4tVD88ZXkthxNvi 8O5Y3tnQMt5+3GypExGSSV/NSQ24gYwlgYJuaopXVBKwyabPchm4cL0/3pvNLyrjj5aK xZ9g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@joelfernandes.org header.s=google header.b=OfluTCbQ; 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 w77si4489476oif.216.2020.02.07.12.59.15; Fri, 07 Feb 2020 12:59:28 -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; dkim=pass header.i=@joelfernandes.org header.s=google header.b=OfluTCbQ; 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 S1727532AbgBGU5N (ORCPT + 99 others); Fri, 7 Feb 2020 15:57:13 -0500 Received: from mail-qt1-f194.google.com ([209.85.160.194]:41026 "EHLO mail-qt1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727392AbgBGU5K (ORCPT ); Fri, 7 Feb 2020 15:57:10 -0500 Received: by mail-qt1-f194.google.com with SMTP id l19so437372qtq.8 for ; Fri, 07 Feb 2020 12:57:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=joelfernandes.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=HN45H+ids+NCISymh2yr5TaGOkbSeu3kPfZfuoJYhiE=; b=OfluTCbQxU2UiZewf9sKzFEe0wl4kJczwr4+6O5grSXP6BWolUzLfdS/1FDvMbwQR/ /93uAKd/ORgMIeB0BaD9x6qmSfbDBYDZmIq1M/38b+os8KV8M6WZPsetiTtbf7UePxGC AX4rNZmGOXuzE48Fp0N65arYv44wQhAGvXuFY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=HN45H+ids+NCISymh2yr5TaGOkbSeu3kPfZfuoJYhiE=; b=RwABo8P8gzZYxseHqtuK8Oi9W4cac0oE7AhFvOYk7SNoSjZrSYTCEzJ+w1iil7ItXC MIgoj3lC8N0wKih2rQGbvjNxVTZapdwHWBd1DDyUzfCVM7TVsFQYytTNNkVGjdd4VdMj R9nnjY64Vk3oRFBueBgqAcI9xp0yDNs4f2oww0hjkhUojrPOOM5wzpwnZOY3Ru3bEPsW n+q+DHgEUBctq8zdGGcexeSIVyoDxwXm3EbZqiitzfUHEfWVB8nLGCxek2Qy2cwN8w6q kvyn38shwZadFvTjcFp1UMoGT5Ooln+UCkG5GxO1CV6jjNpIgEdTZCEN6BHz9XoXZwYC YhMg== X-Gm-Message-State: APjAAAUXhDAXPwmmFwdNuppZg6QzMaKA9u0juP4iqKWZPEgKyTky6zoz Yu7zbjzQfl7YEQIC9pNksctn88kkkCk= X-Received: by 2002:aed:3384:: with SMTP id v4mr278936qtd.58.1581109029448; Fri, 07 Feb 2020 12:57:09 -0800 (PST) Received: from joelaf.cam.corp.google.com ([2620:15c:6:12:9c46:e0da:efbf:69cc]) by smtp.gmail.com with ESMTPSA id 136sm1887431qkn.109.2020.02.07.12.57.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Feb 2020 12:57:09 -0800 (PST) From: "Joel Fernandes (Google)" To: linux-kernel@vger.kernel.org Cc: "Joel Fernandes (Google)" , Greg Kroah-Hartman , "Gustavo A. R. Silva" , Ingo Molnar , Richard Fontana , Steven Rostedt , Thomas Gleixner , "Paul E. McKenney" , Josh Triplett , Mathieu Desnoyers , Lai Jiangshan Subject: [RFC 3/3] Revert "tracepoint: Make rcuidle tracepoint callers use SRCU" Date: Fri, 7 Feb 2020 15:56:56 -0500 Message-Id: <20200207205656.61938-4-joel@joelfernandes.org> X-Mailer: git-send-email 2.25.0.341.g760bfbb309-goog In-Reply-To: <20200207205656.61938-1-joel@joelfernandes.org> References: <20200207205656.61938-1-joel@joelfernandes.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This reverts commit e6753f23d961d601dbae50a2fc2a3975c9715b14. Signed-off-by: Joel Fernandes (Google) --- include/linux/tracepoint.h | 40 ++++++++------------------------------ kernel/tracepoint.c | 10 +--------- 2 files changed, 9 insertions(+), 41 deletions(-) diff --git a/include/linux/tracepoint.h b/include/linux/tracepoint.h index ab1f13b7f7d2c..b2b13cf03e092 100644 --- a/include/linux/tracepoint.h +++ b/include/linux/tracepoint.h @@ -13,7 +13,6 @@ */ #include -#include #include #include #include @@ -32,8 +31,6 @@ struct trace_eval_map { #define TRACEPOINT_DEFAULT_PRIO 10 -extern struct srcu_struct tracepoint_srcu; - extern int tracepoint_probe_register(struct tracepoint *tp, void *probe, void *data); extern int @@ -76,16 +73,10 @@ int unregister_tracepoint_module_notifier(struct notifier_block *nb) * probe unregistration and the end of module exit to make sure there is no * caller executing a probe when it is freed. */ -#ifdef CONFIG_TRACEPOINTS static inline void tracepoint_synchronize_unregister(void) { - synchronize_srcu(&tracepoint_srcu); synchronize_rcu(); } -#else -static inline void tracepoint_synchronize_unregister(void) -{ } -#endif #ifdef CONFIG_HAVE_SYSCALL_TRACEPOINTS extern int syscall_regfunc(void); @@ -159,31 +150,18 @@ static inline struct tracepoint *tracepoint_ptr_deref(tracepoint_ptr_t *p) * as "(void *, void)". The DECLARE_TRACE_NOARGS() will pass in just * "void *data", where as the DECLARE_TRACE() will pass in "void *data, proto". */ -#define __DO_TRACE(tp, proto, args, cond, rcuidle) \ +#define __DO_TRACE(tp, proto, args, cond, rcucheck) \ do { \ struct tracepoint_func *it_func_ptr; \ void *it_func; \ void *__data; \ - int __maybe_unused idx = 0; \ \ if (!(cond)) \ return; \ - \ - /* srcu can't be used from NMI */ \ - WARN_ON_ONCE(rcuidle && in_nmi()); \ - \ - /* keep srcu and sched-rcu usage consistent */ \ - preempt_disable_notrace(); \ - \ - /* \ - * For rcuidle callers, use srcu since sched-rcu \ - * doesn't work from the idle path. \ - */ \ - if (rcuidle) \ - idx = srcu_read_lock_notrace(&tracepoint_srcu); \ - \ - it_func_ptr = rcu_dereference_raw((tp)->funcs); \ - \ + if (rcucheck) \ + rcu_irq_enter_irqson(); \ + rcu_read_lock_sched_notrace(); \ + it_func_ptr = rcu_dereference_sched((tp)->funcs); \ if (it_func_ptr) { \ do { \ it_func = (it_func_ptr)->func; \ @@ -191,11 +169,9 @@ static inline struct tracepoint *tracepoint_ptr_deref(tracepoint_ptr_t *p) ((void(*)(proto))(it_func))(args); \ } while ((++it_func_ptr)->func); \ } \ - \ - if (rcuidle) \ - srcu_read_unlock_notrace(&tracepoint_srcu, idx);\ - \ - preempt_enable_notrace(); \ + rcu_read_unlock_sched_notrace(); \ + if (rcucheck) \ + rcu_irq_exit_irqson(); \ } while (0) #ifndef MODULE diff --git a/kernel/tracepoint.c b/kernel/tracepoint.c index 73956eaff8a9c..df956fc23ca57 100644 --- a/kernel/tracepoint.c +++ b/kernel/tracepoint.c @@ -18,9 +18,6 @@ extern tracepoint_ptr_t __start___tracepoints_ptrs[]; extern tracepoint_ptr_t __stop___tracepoints_ptrs[]; -DEFINE_SRCU(tracepoint_srcu); -EXPORT_SYMBOL_GPL(tracepoint_srcu); - /* Set to 1 to enable tracepoint debug output */ static const int tracepoint_debug; @@ -60,14 +57,9 @@ static inline void *allocate_probes(int count) return p == NULL ? NULL : p->probes; } -static void srcu_free_old_probes(struct rcu_head *head) -{ - kfree(container_of(head, struct tp_probes, rcu)); -} - static void rcu_free_old_probes(struct rcu_head *head) { - call_srcu(&tracepoint_srcu, head, srcu_free_old_probes); + kfree(container_of(head, struct tp_probes, rcu)); } static __init int release_early_probes(void) -- 2.25.0.341.g760bfbb309-goog