From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751156AbdH1Huv (ORCPT ); Mon, 28 Aug 2017 03:50:51 -0400 Received: from merlin.infradead.org ([205.233.59.134]:48292 "EHLO merlin.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750735AbdH1Huu (ORCPT ); Mon, 28 Aug 2017 03:50:50 -0400 Date: Mon, 28 Aug 2017 09:50:41 +0200 From: Peter Zijlstra To: Steven Rostedt Cc: Thomas Gleixner , LKML , Ingo Molnar , Peter Anvin , Andy Lutomirski , Borislav Petkov Subject: Re: [patch 10/41] x86/apic: Remove the duplicated tracing versions of interrupts Message-ID: <20170828075041.afwjlxflk4nod4aa@hirez.programming.kicks-ass.net> References: <20170825103103.287814238@linutronix.de> <20170825104413.763114746@linutronix.de> <20170825114947.6827e8c5@gandalf.local.home> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170825114947.6827e8c5@gandalf.local.home> User-Agent: NeoMutt/20170609 (1.8.3) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Aug 25, 2017 at 11:49:47AM -0400, Steven Rostedt wrote: > On Fri, 25 Aug 2017 12:31:13 +0200 > Thomas Gleixner wrote: > > > The error and the spurious interrupt are really rare events and not at all > > so performance sensitive that two NOP5s can not be tolerated when tracing > > is disabled. > > Just a note. I'm sure if we disassembled it, it may be a little more > work done than just two NOPs, as parameter passing to the tracepoints > sometimes leak out of the static jump block. It's moot on this patch, > but other irqs with fast paths may need to be looked at. Is that something we can fix with the trace macros? They have a general shape of: #define trace_foo(args...) if (static_branch_unlikely(&foo_enabled)) { __trace_foo(args...); } Right? And I suppose I see why the compiler would want to sometimes lift stuff out of the branch block, but we'd really like it not to do that. Would putting a barrier() in front of __trace_foo() help?