Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp1829930ybk; Sun, 17 May 2020 01:55:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzT6xZye9nYrZ6RBwsDH5pkUps5PeeucLKA80vvT8QsbdGij9aceTIgPgd4ZQq99eQafPQX X-Received: by 2002:a50:ea87:: with SMTP id d7mr8788464edo.48.1589705701708; Sun, 17 May 2020 01:55:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589705701; cv=none; d=google.com; s=arc-20160816; b=pF+F++NTiUJHHMf5F/HizUT/He3Z07tQIIqDo4UJ98wqh09VWZnaBYs+v83+lJRPhS J2i/uIS2tzvA117Pkw4+9M+MMGFZYtznMTfCn0dfJAZ2p6HDR9nNmrcRP4qOKGPjhRyj QZKb2dp+mk5s+wyWvpWCRLMsXJ+uz6o9+7Vpc2TomK1jFVdimQneOWrjuWEmy5Xfsgqo T+qFgXCPzSZEZx/9ZF0lBJEA4DdZlJm4hImMwp4Mj+U3vgYFNnfURM3nRGCJnAn/qUAc hL5V3feWfdW3wrEOQvExTdQodHFTRRjbh/qRiiS1l2UW/m/tnPwaMN9GWqNIJtgpJRNa nxxg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from; bh=8qiWuEEJm+bi8zI4m3thwOJ2YIHEs/FQh4NmXsSLhGE=; b=rbF1aOJs9m4plUiLJS+yBfpRAiSMdEoFJmAL+HOWSMAUiVPzIfHEuK5fCBwZ5M125g RVwb5hCD/+hM7fwPVbaqIG+YUiPZcaEBiIn3m64poOrUuUQeKmvYclaZLHV6eAgnd6ai 44nfXyTMiD+1uVppQmSBFAiuBNjw3CC/lnoARPpfQTq6DQRT8fodearnAXP0m9wa2dTn 4U48ITmUmB/5UL7Y4UfXQaqQKZ5ajw9VqK79uvDVoC9i3eqx9l7e8MkyL/q2elXj6Qba 57KBtam50SeoAbL5v7kakWvfpFYBCulWtcWMN0Ri5a8vAIUHsEcBz1zjqWc4GZqICagf GBYA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v8si4269028edd.58.2020.05.17.01.54.37; Sun, 17 May 2020 01:55:01 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727117AbgEQItP (ORCPT + 99 others); Sun, 17 May 2020 04:49:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35548 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727046AbgEQItO (ORCPT ); Sun, 17 May 2020 04:49:14 -0400 Received: from Galois.linutronix.de (Galois.linutronix.de [IPv6:2a0a:51c0:0:12e:550::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8F65DC061A0C for ; Sun, 17 May 2020 01:49:14 -0700 (PDT) Received: from p5de0bf0b.dip0.t-ipconnect.de ([93.224.191.11] helo=nanos.tec.linutronix.de) by Galois.linutronix.de with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1jaExr-0001Dt-QL; Sun, 17 May 2020 10:48:07 +0200 Received: by nanos.tec.linutronix.de (Postfix, from userid 1000) id A406D100F19; Sun, 17 May 2020 10:48:06 +0200 (CEST) From: Thomas Gleixner To: Andy Lutomirski Cc: LKML , X86 ML , "Paul E. McKenney" , Andy Lutomirski , Alexandre Chartre , Frederic Weisbecker , Paolo Bonzini , Sean Christopherson , Masami Hiramatsu , Petr Mladek , Steven Rostedt , Joel Fernandes , Boris Ostrovsky , Juergen Gross , Brian Gerst , Mathieu Desnoyers , Josh Poimboeuf , Will Deacon , Tom Lendacky , Wei Liu , Michael Kelley , Jason Chen CJ , Zhao Yakui , "Peter Zijlstra \(Intel\)" Subject: Re: [patch V6 04/37] x86: Make hardware latency tracing explicit In-Reply-To: References: <20200515234547.710474468@linutronix.de> <20200515235124.783722942@linutronix.de> Date: Sun, 17 May 2020 10:48:06 +0200 Message-ID: <87zha7c5h5.fsf@nanos.tec.linutronix.de> MIME-Version: 1.0 Content-Type: text/plain X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Andy Lutomirski writes: > On Fri, May 15, 2020 at 5:10 PM Thomas Gleixner wrote: >> >> >> The hardware latency tracer calls into trace_sched_clock and ends up in >> various instrumentable functions which is problemeatic vs. the kprobe >> handling especially the text poke machinery. It's invoked from >> nmi_enter/exit(), i.e. non-instrumentable code. >> >> Use nmi_enter/exit_notrace() instead. These variants do not invoke the >> hardware latency tracer which avoids chasing down complex callchains to >> make them non-instrumentable. >> >> The real interesting measurement is the actual NMI handler. Add an explicit >> invocation for the hardware latency tracer to it. >> >> #DB and #BP are uninteresting as they really should not be in use when >> analzying hardware induced latencies. >> > >> @@ -849,7 +851,7 @@ static void noinstr handle_debug(struct >> static __always_inline void exc_debug_kernel(struct pt_regs *regs, >> unsigned long dr6) >> { >> - nmi_enter(); >> + nmi_enter_notrace(); > > Why can't exc_debug_kernel() handle instrumentation? We shouldn't > recurse into #DB since we've already cleared DR7, right? It can later on. The point is that the trace stuff calls into the world and some more before the entry handling is complete. Remember this is about ensuring that all the state is properly established before any of this instrumentation muck can happen. DR7 handling is specific to #DB and done even before nmi_enter to prevent recursion. Thanks, tglx