Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp1655095yba; Tue, 2 Apr 2019 13:05:52 -0700 (PDT) X-Google-Smtp-Source: APXvYqyb7BF5P1VkW9jNPDlIre8rVJwANWyiIsjBr0OHOMjfnKFFs4rsKKpJSnoucoYSddtx30cw X-Received: by 2002:a63:7117:: with SMTP id m23mr61393140pgc.271.1554235552549; Tue, 02 Apr 2019 13:05:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554235552; cv=none; d=google.com; s=arc-20160816; b=mRiphgEYXV0gLQCTkScMspy0CWMveScUMbsgZGnLhi7xeHhtyrqYvD8QdoL1Il5sUe Jg8Y4VGaXWC/wNI7EC9LxRhG5iYBAHSdQYP2sRkdeq7xTFQEym4UgWotY9cqrHp8PsyW N9F2IzQsEV1gW0cSkJM2gU2Ww7SqdI2/YWXYHsMZd55JhC32oLs6joIkqnwJux2800pQ 7ioxA9UWEUMvmF6RwVUoupUnXJ48Y7KrEHU28oUGMOXeFZNlvYupqTKtSzEhNdiq/T3D tsabAM4G+UUZinh+h9UKJmQa1gNl+Hz7ZKXRUyzOX2dzWiUvJZefDgScqFk780kghZ8X Kheg== 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=ad0fM2N2AolgCg3M4GyNrkz+TCxXpDGF48s/qaHylQk=; b=Bbc4wLAhm81cLLftykFo9a+dvEayOVeqr8Hu9CP5wcQvLhEUgIRdxNtqn+fVJaYy37 +iRQ71sDQpYx0Hmp+fWvuIZNboKjGn8TJoLRgu4zwvQ4ZsPoH8bohOCYiE8k7brqvc9D SUbB4Ni0RsDD05eM1cDBoMjqghwjY5QfdGxPuAuFIgQhvG0wDJdM5JMwBf1JJsgGU1Kv MtYJJyPjFb1uEJ3sRnIFz64+5lUfxF1dMG/fYVPd0CdJmiyllr1gIpzYIxy9JMEdPTNS vNgR441SAJCshRQQSM3ZNevBKuIDUqqVXM8izFxLmOr6uQZaPaOPlLC/NKz6+Dxvs3if lQcQ== 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 x9si4439908pgx.212.2019.04.02.13.05.37; Tue, 02 Apr 2019 13:05:52 -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 S1726709AbfDBUEe (ORCPT + 99 others); Tue, 2 Apr 2019 16:04:34 -0400 Received: from mx1.redhat.com ([209.132.183.28]:47924 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725857AbfDBUEc (ORCPT ); Tue, 2 Apr 2019 16:04:32 -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 053DB87623; Tue, 2 Apr 2019 20:04:32 +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 C2F5A6014A; Tue, 2 Apr 2019 20:04:28 +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 6/7] events: Create an trace_get_context_bit() Date: Tue, 2 Apr 2019 22:03:58 +0200 Message-Id: <9ba2b066d99fa8825d5e1f78b97a893a37457393.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.26]); Tue, 02 Apr 2019 20:04:32 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Create a specific function to get the current task context. 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/events/internal.h | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/kernel/events/internal.h b/kernel/events/internal.h index 79c47076700a..241a2318bfdc 100644 --- a/kernel/events/internal.h +++ b/kernel/events/internal.h @@ -202,18 +202,37 @@ arch_perf_out_copy_user(void *dst, const void *src, unsigned long n) DEFINE_OUTPUT_COPY(__output_copy_user, arch_perf_out_copy_user) -static inline int get_recursion_context(int *recursion) +/* + * 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 rctx; + unsigned long pc = preempt_count(); - if (unlikely(in_nmi())) - rctx = 3; - else if (in_irq()) - rctx = 2; - else if (in_softirq()) - rctx = 1; + if (pc & (NMI_MASK | HARDIRQ_MASK | SOFTIRQ_OFFSET)) + return pc & NMI_MASK ? TRACE_CTX_NMI : + pc & HARDIRQ_MASK ? TRACE_CTX_IRQ : TRACE_CTX_SOFTIRQ; else - rctx = 0; + return TRACE_CTX_NORMAL; +} + +static inline int get_recursion_context(int *recursion) +{ + int rctx = trace_get_context_bit(); if (recursion[rctx]) return -1; -- 2.20.1