Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp1654660yba; Tue, 2 Apr 2019 13:05:25 -0700 (PDT) X-Google-Smtp-Source: APXvYqzPkilXieAadMA3UWp135rHbvSAE4k1L1a+CTBpj2MiTOM8FJxCcUtCeg3GY8D0YsPSv2gp X-Received: by 2002:a65:6241:: with SMTP id q1mr40825914pgv.244.1554235525007; Tue, 02 Apr 2019 13:05:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554235524; cv=none; d=google.com; s=arc-20160816; b=GKlMxLCBlAadVHJP20mvN1MOCKXGDbr8TElYFuEF4ieg3ykuNZ5cHNl0yfaj+GxFLp 0ieiDb3dyHUqb5YNCotx1M5Frfz2gpe8/qz15nYU9uMpLQvW9xh8MZu0x+GxqOiHACb/ r5S7oVPJRiI2g30b80Y2JdMf+vpG83w9Z4DGLU26sJJQVEiq+Dkx4TD+zfce7wBxZl3q 6B2IqtZnXUEIw06P9gMifDIJG8XZAj3cAeKT4Y1dzh9eQR0nw1kUU8lOIS8R/rP9ovf/ ELyXmtujadaldIm4zK5RTVkGITjPMTllyDw0nEhT8fjwKb1erkme5mmS6od2JU6IvjGa RLGg== 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; bh=zQo1A3l84E/Cb8fCriny7bYj4QWVR/akyPmiv6u6k7Y=; b=AdUhf2VDnl/3L7ypj34Y8gtH3GaTVXHX9qsvOvaoLNvlh30RiOM+KAQpiJuViAlirL /gHImLbhLvwgkrJTr0ZaSgkILZrU8QfWBd2W4UbpbMLxqEh9YFvaPXfjXlrq7xvtjVRH N1wEpMxP2hBlqGDlAO6zpnAcAD+46J9y/PpsZ3FYDJqrjVANr+2dOIEv0hs7RVSDK5An lRsD3wejdLfWg1aD6mMD29DmDFbtmg2riitz6VNd0kMdl4SGH2D4jJFzG2lFu8bdKhHO whE1kESB3b4Vo6KKTT5hXMb9JGVGF34+1Mj3Y0WEsYfRLXBKY/YyKSLwNtqiE8Z7VmVb Mpxw== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f7si11831965pgq.522.2019.04.02.13.05.09; Tue, 02 Apr 2019 13:05:24 -0700 (PDT) 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726535AbfDBUET (ORCPT + 99 others); Tue, 2 Apr 2019 16:04:19 -0400 Received: from mx1.redhat.com ([209.132.183.28]:57840 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725857AbfDBUES (ORCPT ); Tue, 2 Apr 2019 16:04:18 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D3B9030842AC; Tue, 2 Apr 2019 20:04:17 +0000 (UTC) Received: from localhost.default (ovpn-116-31.phx2.redhat.com [10.3.116.31]) by smtp.corp.redhat.com (Postfix) with ESMTP id 964335C7B2; Tue, 2 Apr 2019 20:04:14 +0000 (UTC) From: Daniel Bristot de Oliveira To: linux-kernel@vger.kernel.org Cc: Steven Rostedt , Arnaldo Carvalho de Melo , Ingo Molnar , Andy Lutomirski , Thomas Gleixner , Borislav Petkov , Peter Zijlstra , "H. Peter Anvin" , "Joel Fernandes (Google)" , Jiri Olsa , Namhyung Kim , Alexander Shishkin , Tommaso Cucinotta , Romulo Silva de Oliveira , Clark Williams , x86@kernel.org Subject: [RFC PATCH 2/7] trace: Move the trace recursion context enum to trace.h and reuse it Date: Tue, 2 Apr 2019 22:03:54 +0200 Message-Id: <831c998455e001f2c5cd45806958f3ba899fd097.1554234787.git.bristot@redhat.com> In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.40]); Tue, 02 Apr 2019 20:04:18 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Both trace and ring buffer code needs to identify in which context the current code is running to control recursion. Move the enum in the trace.h, and unify its usage. Signed-off-by: Daniel Bristot de Oliveira Cc: Steven Rostedt Cc: Arnaldo Carvalho de Melo Cc: Ingo Molnar Cc: Andy Lutomirski Cc: Thomas Gleixner Cc: Borislav Petkov Cc: Peter Zijlstra Cc: "H. Peter Anvin" Cc: "Joel Fernandes (Google)" Cc: Jiri Olsa Cc: Namhyung Kim Cc: Alexander Shishkin Cc: Tommaso Cucinotta Cc: Romulo Silva de Oliveira Cc: Clark Williams Cc: linux-kernel@vger.kernel.org Cc: x86@kernel.org --- kernel/trace/ring_buffer.c | 25 +++++-------------------- kernel/trace/trace.h | 25 +++++++++++++++++++++---- 2 files changed, 26 insertions(+), 24 deletions(-) diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index 41b6f96e5366..fa8cbad2ca88 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c @@ -27,6 +27,8 @@ #include +#include "trace.h" + static void update_pages_handler(struct work_struct *work); /* @@ -428,23 +430,6 @@ struct rb_event_info { int add_timestamp; }; -/* - * Used for which event context the event is in. - * NMI = 0 - * IRQ = 1 - * SOFTIRQ = 2 - * NORMAL = 3 - * - * See trace_recursive_lock() comment below for more details. - */ -enum { - RB_CTX_NMI, - RB_CTX_IRQ, - RB_CTX_SOFTIRQ, - RB_CTX_NORMAL, - RB_CTX_MAX -}; - /* * head_page == tail_page && head == tail then buffer is empty. */ @@ -2704,10 +2689,10 @@ trace_recursive_lock(struct ring_buffer_per_cpu *cpu_buffer) int bit; if (!(pc & (NMI_MASK | HARDIRQ_MASK | SOFTIRQ_OFFSET))) - bit = RB_CTX_NORMAL; + bit = TRACE_CTX_NORMAL; else - bit = pc & NMI_MASK ? RB_CTX_NMI : - pc & HARDIRQ_MASK ? RB_CTX_IRQ : RB_CTX_SOFTIRQ; + bit = pc & NMI_MASK ? TRACE_CTX_NMI : + pc & HARDIRQ_MASK ? TRACE_CTX_IRQ : TRACE_CTX_SOFTIRQ; if (unlikely(val & (1 << (bit + cpu_buffer->nest)))) return 1; diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index d80cee49e0eb..dad2f0cd7208 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -616,20 +616,37 @@ enum { #define TRACE_CONTEXT_MASK TRACE_LIST_MAX +/* + * Used for which event context the event is in. + * NMI = 0 + * IRQ = 1 + * SOFTIRQ = 2 + * NORMAL = 3 + * + * See trace_recursive_lock() comment for more details. + */ +enum { + TRACE_CTX_NMI, + TRACE_CTX_IRQ, + TRACE_CTX_SOFTIRQ, + TRACE_CTX_NORMAL, + TRACE_CTX_MAX +}; + static __always_inline int trace_get_context_bit(void) { int bit; if (in_interrupt()) { if (in_nmi()) - bit = 0; + bit = TRACE_CTX_NMI; else if (in_irq()) - bit = 1; + bit = TRACE_CTX_IRQ; else - bit = 2; + bit = TRACE_CTX_SOFTIRQ; } else - bit = 3; + bit = TRACE_CTX_NORMAL; return bit; } -- 2.20.1