Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp185732imm; Thu, 14 Jun 2018 18:02:16 -0700 (PDT) X-Google-Smtp-Source: ADUXVKIl+Uf3LxYl8voh+H9VATK399GINMTe3bCSRF0LpKqBM6y2kVOgm/zCGYXiL3jVA24mXF5C X-Received: by 2002:a62:df89:: with SMTP id d9-v6mr11739526pfl.147.1529024536546; Thu, 14 Jun 2018 18:02:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529024536; cv=none; d=google.com; s=arc-20160816; b=SK48islBdYHHLtlrEaI7lvv9EJlMKychMbqGu+W+GvovQ4sylzI2rXb49ZxCwjyjFc AOkb1pCVkqUKzWwtbMzPGPflCl2ycaJTKhyqhCt7b8S2kP3RAyWPE8NkyCaPgfq5xqNX hP6Fn93xPGQSrcmMP+OWimLhEpUPzhumdAzRt27XSfXK5VuzATm0gOASzKrrAlNOpP5N JIXnnO8V1hvQM8PIWL7PW4yBqtPcdWc+mN64v0eQb1+eYIfp9ElFTS4/0MV5VxM62M8D /q3ePggRNtjl9xWkEtv5394iEhxkMEcUwv3ve5/QZfA/mr3DkvumkoDBOgGO2UGqkSro es+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=v1MCs7zLya7novvKNUKv/tMh3SjEXYZm+NOZkX/OYrs=; b=1BARnpPlX7UyuJ6JW228CVHjjSz15Hto3gC61vGyA9xztbvcE39biyXH0RaD1UtMod MSnYROuY4uPtGg+AlOELQNOPkaIvqTVfVmnEtUIuhf0WvYp2NPkiNOLSE3DkcAgiUd8k h7VVhO30I0q1+WwzipJeWdBvDMwEdbzRRZHeG0trw4wu4B8FygsoRkiCx6A/9FC/U/dK RVPzfThAHE562FTgt340AU4iVyQMqoj8tNTWO7OjVp2gbIU9YljxO3tIX78enufcdtC0 /inFencRRkIupkjS0kOR0IAuGc4js7NdiFJ1CnJt/xF+sVc1mj1jzugCjqd102FpnT5q mgQg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=qp8gcfFr; 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=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j15-v6si5531836pgs.348.2018.06.14.18.02.00; Thu, 14 Jun 2018 18:02:16 -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; dkim=pass header.i=@google.com header.s=20161025 header.b=qp8gcfFr; 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=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965035AbeFOBBe (ORCPT + 99 others); Thu, 14 Jun 2018 21:01:34 -0400 Received: from mail-pg0-f65.google.com ([74.125.83.65]:35049 "EHLO mail-pg0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S964831AbeFOBBc (ORCPT ); Thu, 14 Jun 2018 21:01:32 -0400 Received: by mail-pg0-f65.google.com with SMTP id 15-v6so3686077pge.2 for ; Thu, 14 Jun 2018 18:01:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=v1MCs7zLya7novvKNUKv/tMh3SjEXYZm+NOZkX/OYrs=; b=qp8gcfFrqVMVV19sK4nBWcaGkYbydLBc4tR8S7duMCxF9gyHXBRuHPrcSo3c32iIpz gtIIJ1TTqNE8QhdWftEDhV6xUup7VXMB4qYseWdE3rvGUwFHuV935W7ZVHXPU1gehDAF BmqOJ7R44yf8wUfBLEffQhy68CD6UK/QoaL9xAr/l4d1c7V8sAFj0AwXj5h9e6mLGi87 ihN/FfzCiBJkhqqAEJaTLkgFvfpmeHcaMegz+pqH94IhS4QElZPxkoeyXAAthRpSy9hC o6sljR6VoSNbTCr5Gcqoh2YjS4/Xva+sBhNCuZsxKzCINScmj87hIwoSScTdOkMY4ysX 96aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=v1MCs7zLya7novvKNUKv/tMh3SjEXYZm+NOZkX/OYrs=; b=VGy43reyj3sjCDkJrC6OERaE6qGv0Dp+ayUEYOHftchOVKYtsE71kmy8hhCeWNxnc9 T+FaBUykl2fXOiN4Pc/nMxifgELDGT86Fn0LULab9zxYJhPk+Z5sx5WBMKDU7U098/A/ phpNXmftcJ3zIGxfC0DRNEMVtDjuA3l+DzrLOMykEXE7zToT6+koi6INQEsrCi68QEb3 kvagU21pGykr4lKTraF2FNDty5E9/YBpszW0gzkkRWnizGa9I0ePlKA3g1Rgq19Z8cq7 8sekSKjpCEQGPJaZWljjKo5UbX5jyr2xlaRs3WMmFcUcgfXZ2XOyAl93adviHNkqp/HO Xalw== X-Gm-Message-State: APt69E19YdydoUEUqbH0HIXxdFxW63niyBRMmrWLG1/zuzs0Ax2em7eV j5IP59LDT/lQRQhokJJX8+DRGTmVtEg= X-Received: by 2002:a62:a8e:: with SMTP id 14-v6mr11748881pfk.57.1529024491617; Thu, 14 Jun 2018 18:01:31 -0700 (PDT) Received: from joelaf.mtv.corp.google.com ([2620:0:1000:1600:3122:ea9c:d178:eb]) by smtp.gmail.com with ESMTPSA id t192-v6sm9717557pgc.74.2018.06.14.18.01.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Jun 2018 18:01:30 -0700 (PDT) From: Joel Fernandes X-Google-Original-From: Joel Fernandes To: linux-kernel@vger.kernel.org Cc: kernel-team@android.com, "Joel Fernandes (Google)" , Ingo Molnar , Steven Rostedt , tglx@linutronix.de, mhiramat@kernel.org, namhyung@kernel.org, mathieu.desnoyers@efficios.com, linux-rt-users@vger.kernel.org, Tom Zanussi , peterz@infradead.org Subject: [PATCH RFC] tracing: Call triggers only if event passes filter checks Date: Thu, 14 Jun 2018 18:01:13 -0700 Message-Id: <20180615010113.127718-1-joel@joelfernandes.org> X-Mailer: git-send-email 2.18.0.rc1.244.gcf134e6275-goog Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: "Joel Fernandes (Google)" Currently, trace event triggers are called regardless of if the event filter checks pass or fail. Thus if one were to enable event triggers and filters at the same time, then the triggers will always be called even if the filter checks didn't pass. This is a problem for a usecase I was experimenting with: measuring the time preemption is disabled using synthetic events and dump the stack using the stacktrace trigger if the total preempt off time was greater than a threshold. Following are the commands for the same: Create synthetic event: echo 'preemptdisable u64 lat' >> \ /sys/kernel/debug/tracing/synthetic_events echo 'hist:keys=cpu:ts0=common_timestamp.usecs:scpu=cpu' >> \ /sys/kernel/debug/tracing/events/preemptirq/preempt_disable/trigger echo 'hist:keys=cpu:wakeup_lat=common_timestamp.usecs-$ts0:\ onmatch(preemptirq.preempt_disable).preemptdisable($wakeup_lat)' >> \ /sys/kernel/debug/tracing/events/preemptirq/preempt_enable/trigger Enable synthetic event: echo stacktrace > /sys/kernel/debug/tracing/events/synthetic/preemptdisable/trigger echo 'lat > 400' > /sys/kernel/debug/tracing/events/synthetic/preemptdisable/filter echo 1 > /sys/kernel/debug/tracing/events/synthetic/preemptdisable/enable With the patch, the stacktrace is triggered only if the filter checks passed. It also seems sensible to call triggers only if filter checks pass so lets do that. Signed-off-by: Joel Fernandes (Google) --- kernel/trace/trace.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index 630c5a24b2b2..b0b5df288924 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -1296,13 +1296,14 @@ __event_trigger_test_discard(struct trace_event_file *file, enum event_trigger_type *tt) { unsigned long eflags = file->flags; + bool filtered = (file->flags & EVENT_FILE_FL_FILTERED) && + !filter_match_preds(file->filter, entry); - if (eflags & EVENT_FILE_FL_TRIGGER_COND) + if (!filtered && (eflags & EVENT_FILE_FL_TRIGGER_COND)) *tt = event_triggers_call(file, entry, event); if (test_bit(EVENT_FILE_FL_SOFT_DISABLED_BIT, &file->flags) || - (unlikely(file->flags & EVENT_FILE_FL_FILTERED) && - !filter_match_preds(file->filter, entry))) { + filtered) { __trace_event_discard_commit(buffer, event); return true; } -- 2.18.0.rc1.244.gcf134e6275-goog