[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <160501232116.11244.12564524766827620851.tip-bot2@tip-bot2>
Date: Tue, 10 Nov 2020 12:45:21 -0000
From: "tip-bot2 for Peter Zijlstra" <tip-bot2@...utronix.de>
To: linux-tip-commits@...r.kernel.org
Cc: "Peter Zijlstra (Intel)" <peterz@...radead.org>,
Jesper Dangaard Brouer <brouer@...hat.com>, x86@...nel.org,
linux-kernel@...r.kernel.org
Subject: [tip: perf/urgent] perf: Optimize get_recursion_context()
The following commit has been merged into the perf/urgent branch of tip:
Commit-ID: 09da9c81253dd8e43e0d2d7cea02de6f9f19499d
Gitweb: https://git.kernel.org/tip/09da9c81253dd8e43e0d2d7cea02de6f9f19499d
Author: Peter Zijlstra <peterz@...radead.org>
AuthorDate: Fri, 30 Oct 2020 13:43:16 +01:00
Committer: Peter Zijlstra <peterz@...radead.org>
CommitterDate: Mon, 09 Nov 2020 18:12:34 +01:00
perf: Optimize get_recursion_context()
"Look ma, no branches!"
Signed-off-by: Peter Zijlstra (Intel) <peterz@...radead.org>
Acked-by: Jesper Dangaard Brouer <brouer@...hat.com>
Link: https://lkml.kernel.org/r/20201030151955.187580298@infradead.org
---
kernel/events/internal.h | 16 ++++++----------
1 file changed, 6 insertions(+), 10 deletions(-)
diff --git a/kernel/events/internal.h b/kernel/events/internal.h
index 402054e..228801e 100644
--- a/kernel/events/internal.h
+++ b/kernel/events/internal.h
@@ -205,16 +205,12 @@ DEFINE_OUTPUT_COPY(__output_copy_user, arch_perf_out_copy_user)
static inline int get_recursion_context(int *recursion)
{
- int rctx;
-
- if (unlikely(in_nmi()))
- rctx = 3;
- else if (in_irq())
- rctx = 2;
- else if (in_serving_softirq())
- rctx = 1;
- else
- rctx = 0;
+ unsigned int pc = preempt_count();
+ unsigned char rctx = 0;
+
+ rctx += !!(pc & (NMI_MASK));
+ rctx += !!(pc & (NMI_MASK | HARDIRQ_MASK));
+ rctx += !!(pc & (NMI_MASK | HARDIRQ_MASK | SOFTIRQ_OFFSET));
if (recursion[rctx])
return -1;
Powered by blists - more mailing lists