trace: platform/x86/intel/ifs: Add trace point to track Intel IFS operations
authorTony Luck <tony.luck@intel.com>
Fri, 6 May 2022 22:54:08 +0000 (15:54 -0700)
committerHans de Goede <hdegoede@redhat.com>
Thu, 12 May 2022 13:35:29 +0000 (15:35 +0200)
Add tracing support which may be useful for debugging systems that fail to complete
In Field Scan tests.

Acked-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Reviewed-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Acked-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://lore.kernel.org/r/20220506225410.1652287-11-tony.luck@intel.com
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
MAINTAINERS
drivers/platform/x86/intel/ifs/runtest.c
include/trace/events/intel_ifs.h [new file with mode: 0644]

index 3ffc7c1..a4f937b 100644 (file)
@@ -9865,6 +9865,7 @@ R:        Ashok Raj <ashok.raj@intel.com>
 R:     Tony Luck <tony.luck@intel.com>
 S:     Maintained
 F:     drivers/platform/x86/intel/ifs
+F:     include/trace/events/intel_ifs.h
 
 INTEL INTEGRATED SENSOR HUB DRIVER
 M:     Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
index 7efcce3..b2ca2bb 100644 (file)
@@ -17,6 +17,9 @@
  * core will update results of the test.
  */
 
+#define CREATE_TRACE_POINTS
+#include <trace/events/intel_ifs.h>
+
 /* Max retries on the same chunk */
 #define MAX_IFS_RETRIES  5
 
@@ -191,6 +194,8 @@ static void ifs_test_core(int cpu, struct device *dev)
 
                status.data = msrvals[1];
 
+               trace_ifs_status(cpu, activate, status);
+
                /* Some cases can be retried, give up for others */
                if (!can_restart(status))
                        break;
diff --git a/include/trace/events/intel_ifs.h b/include/trace/events/intel_ifs.h
new file mode 100644 (file)
index 0000000..d735302
--- /dev/null
@@ -0,0 +1,41 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM intel_ifs
+
+#if !defined(_TRACE_IFS_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_IFS_H
+
+#include <linux/ktime.h>
+#include <linux/tracepoint.h>
+
+TRACE_EVENT(ifs_status,
+
+       TP_PROTO(int cpu, union ifs_scan activate, union ifs_status status),
+
+       TP_ARGS(cpu, activate, status),
+
+       TP_STRUCT__entry(
+               __field(        u64,    status  )
+               __field(        int,    cpu     )
+               __field(        u8,     start   )
+               __field(        u8,     stop    )
+       ),
+
+       TP_fast_assign(
+               __entry->cpu    = cpu;
+               __entry->start  = activate.start;
+               __entry->stop   = activate.stop;
+               __entry->status = status.data;
+       ),
+
+       TP_printk("cpu: %d, start: %.2x, stop: %.2x, status: %llx",
+               __entry->cpu,
+               __entry->start,
+               __entry->stop,
+               __entry->status)
+);
+
+#endif /* _TRACE_IFS_H */
+
+/* This part must be outside protection */
+#include <trace/define_trace.h>