Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp4773943pxj; Tue, 22 Jun 2021 07:46:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyDOWmyZh1bFOTPMlY+kf9EprJO297Zni7Om0Um5Fyls0gFaqcJ/v5RnzltqjoLxVicjXse X-Received: by 2002:a6b:f60e:: with SMTP id n14mr3196442ioh.179.1624373203109; Tue, 22 Jun 2021 07:46:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1624373203; cv=none; d=google.com; s=arc-20160816; b=KP58lWMZ1BBGscYulcGi6f2+nJplPx27agOud3bGk3+u+ve1bZKva0NJDwUOXamV0/ OWjGtUNRdEUvRE9EKSS6K0ZQV0OoL4ntuuQodbLGshlRNHENi1Q6GE8RUk9W/V2swSC+ p7c45WnS0ydCou8ZVJyQ7FXuQgBlnrCNw54GosaU3HoQzFvsibXmQPG8T/2V4EWGvTxB l3bM3oiKssRAADytiBOBmFyrOIBdZ9kWbGLTnOJ/rGLLbQoBY5ShrAdeicWUUyVnwX+E p4zMJ2jHXEbfljefbcG5lVAZ48rAaQQRHqmsmSI3PjMw8XXgAtfO2Lz7wZxQ+lN7eqWk muBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=p4tVsty5sYaIEHvOKmUYgunGdqYa0UCvup1lP+eoTXM=; b=mY/1HpEMHonydUQzyovttQDk/ZB4jsKZl6oWaxxP3dy9d9OkjrLgtJBWksnIxgnKgR 72a9o2hKK35HfBTf4jsmyef+caswWeKOw8N8/K8SSrOeWI/Hs3B/FgmOg4Rhgbm91byA kohnbTECZA/v25JR0LLvTvhH0m9MzkGzdNbGGV8Jug0LznNNWLKJnvT/P+8Xu80XShvx J+uFvrE7/PKahweSvnyzMFGHomEqTg6cyFAqokFaEPvH0Cxfbv255A8wthlx4Ihh6l44 D4hAvu2DQ3oTbK5BMuulLbbo63/ri42aEFa9CQAWzkmieKU+bgjGZPfvNIpvbUkYQEnY mZfw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b="S/4yG+bk"; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i19si7671661jav.94.2021.06.22.07.46.30; Tue, 22 Jun 2021 07:46:43 -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; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b="S/4yG+bk"; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231848AbhFVOqd (ORCPT + 99 others); Tue, 22 Jun 2021 10:46:33 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:46164 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231445AbhFVOqc (ORCPT ); Tue, 22 Jun 2021 10:46:32 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1624373056; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=p4tVsty5sYaIEHvOKmUYgunGdqYa0UCvup1lP+eoTXM=; b=S/4yG+bk0Xs4aKfH+zRK2kDS1syo9E4LBidiOBpsK0XltO+4wiJtDu9EA/s6B0kp96BTnx qDPMUyoABHN7Z72zuKLTof65Z0NWEgyNhNfPaaFfh4YTWqv/Q+aXYoFBSg70Tl5ykt+W/t AsSWbrcpe5+om8c9OVZ8YdMAkl/ap+s= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-293-0MnCeMI6MbSgB1rb9ExXpg-1; Tue, 22 Jun 2021 10:44:14 -0400 X-MC-Unique: 0MnCeMI6MbSgB1rb9ExXpg-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id D85FF800D62; Tue, 22 Jun 2021 14:44:11 +0000 (UTC) Received: from x1.bristot.me.homenet.telecomitalia.it (unknown [10.10.115.243]) by smtp.corp.redhat.com (Postfix) with ESMTP id 16B355D9F0; Tue, 22 Jun 2021 14:43:51 +0000 (UTC) From: Daniel Bristot de Oliveira To: Steven Rostedt Cc: Phil Auld , Sebastian Andrzej Siewior , Kate Carcia , Daniel Bristot de Oliveira , Jonathan Corbet , Ingo Molnar , Peter Zijlstra , Thomas Gleixner , Alexandre Chartre , Clark Willaims , John Kacur , Juri Lelli , Borislav Petkov , "H. Peter Anvin" , x86@kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH V5 07/14] trace/hwlat: Remove printk from sampling loop Date: Tue, 22 Jun 2021 16:42:25 +0200 Message-Id: <9d77c34869748aa105e965c769d24642914eea3a.1624372313.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.14 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org hwlat has some time operation checks on the sample loop, and it is currently using pr_err (printk) to report them. The problem is that this can lead the system to an unresponsible state due to an overflow of printk messages. This problem can be mitigated by writing the error message to the trace buffer. Remove the printk messages from the sampling loop, switching the to messages in the trace buffer. No functional change. Cc: Jonathan Corbet Cc: Steven Rostedt Cc: Ingo Molnar Cc: Peter Zijlstra Cc: Thomas Gleixner Cc: Alexandre Chartre Cc: Clark Willaims Cc: John Kacur Cc: Juri Lelli Cc: Borislav Petkov Cc: "H. Peter Anvin" Cc: x86@kernel.org Cc: linux-doc@vger.kernel.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Daniel Bristot de Oliveira --- kernel/trace/trace_hwlat.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/kernel/trace/trace_hwlat.c b/kernel/trace/trace_hwlat.c index c3a41ba61052..8756ab24c132 100644 --- a/kernel/trace/trace_hwlat.c +++ b/kernel/trace/trace_hwlat.c @@ -182,6 +182,15 @@ void trace_hwlat_callback(bool enter) kdata->nmi_count++; } +/* + * hwlat_err - report a hwlat error. + */ +#define hwlat_err(msg) ({ \ + struct trace_array *tr = hwlat_trace; \ + \ + trace_array_printk_buf(tr->array_buffer.buffer, _THIS_IP_, msg); \ +}) + /** * get_sample - sample the CPU TSC and look for likely hardware latencies * @@ -225,7 +234,7 @@ static int get_sample(void) outer_diff = time_to_us(time_sub(t1, last_t2)); /* This shouldn't happen */ if (outer_diff < 0) { - pr_err(BANNER "time running backwards\n"); + hwlat_err(BANNER "time running backwards\n"); goto out; } if (outer_diff > outer_sample) @@ -237,7 +246,7 @@ static int get_sample(void) /* Check for possible overflows */ if (total < last_total) { - pr_err("Time total overflowed\n"); + hwlat_err("Time total overflowed\n"); break; } last_total = total; @@ -253,7 +262,7 @@ static int get_sample(void) /* This shouldn't happen */ if (diff < 0) { - pr_err(BANNER "time running backwards\n"); + hwlat_err(BANNER "time running backwards\n"); goto out; } -- 2.31.1