summaryrefslogtreecommitdiffstats
path: root/drivers/staging
diff options
context:
space:
mode:
authorAlex Elder <elder@linaro.org>2016-06-03 15:55:38 -0500
committerGreg Kroah-Hartman <gregkh@google.com>2016-06-03 17:03:23 -0700
commit495787a792ac498843b25e5569597c24cd026f2b (patch)
tree049c9b84a2d348b806e0d033df5f26320a70d481 /drivers/staging
parent79c8c6494220dafeaedf8dc94b50c9a787e25e5d (diff)
downloadop-kernel-dev-495787a792ac498843b25e5569597c24cd026f2b.zip
op-kernel-dev-495787a792ac498843b25e5569597c24cd026f2b.tar.gz
greybus: tracing: add timing traces
Bryan reports he used certain message traces to determine when time sync messages transit the boundary between the Greybus core and the host device. This patch adds two trace events--one a message event for outbound messages (because it indicates its operation and its destination), and one host device event for incoming messages (because message information isn't available as early as desired). These events are being created to allow the same sort of analysis of messages without having to store extra information for every message trace. (The next patch changes the information a message trace records.) Signed-off-by: Alex Elder <elder@linaro.org> Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Diffstat (limited to 'drivers/staging')
-rw-r--r--drivers/staging/greybus/connection.c2
-rw-r--r--drivers/staging/greybus/es2.c4
-rw-r--r--drivers/staging/greybus/greybus_trace.h15
-rw-r--r--drivers/staging/greybus/hd.c3
4 files changed, 23 insertions, 1 deletions
diff --git a/drivers/staging/greybus/connection.c b/drivers/staging/greybus/connection.c
index d35e95a..7def600 100644
--- a/drivers/staging/greybus/connection.c
+++ b/drivers/staging/greybus/connection.c
@@ -81,6 +81,8 @@ void greybus_data_rcvd(struct gb_host_device *hd, u16 cport_id,
{
struct gb_connection *connection;
+ trace_gb_hd_in(hd);
+
connection = gb_connection_hd_find(hd, cport_id);
if (!connection) {
dev_err(&hd->dev,
diff --git a/drivers/staging/greybus/es2.c b/drivers/staging/greybus/es2.c
index 68a8461..bdf5024 100644
--- a/drivers/staging/greybus/es2.c
+++ b/drivers/staging/greybus/es2.c
@@ -14,6 +14,7 @@
#include <asm/unaligned.h>
#include "greybus.h"
+#include "greybus_trace.h"
#include "kernel_ver.h"
#include "connection.h"
@@ -467,6 +468,9 @@ static int message_send(struct gb_host_device *hd, u16 cport_id,
message->buffer, buffer_size,
cport_out_callback, message);
urb->transfer_flags |= URB_ZERO_PACKET;
+
+ trace_gb_message_submit(message);
+
retval = usb_submit_urb(urb, gfp_mask);
if (retval) {
dev_err(&udev->dev, "failed to submit out-urb: %d\n", retval);
diff --git a/drivers/staging/greybus/greybus_trace.h b/drivers/staging/greybus/greybus_trace.h
index a075740..62f5803 100644
--- a/drivers/staging/greybus/greybus_trace.h
+++ b/drivers/staging/greybus/greybus_trace.h
@@ -88,6 +88,12 @@ DEFINE_MESSAGE_EVENT(gb_message_cancel_outgoing);
*/
DEFINE_MESSAGE_EVENT(gb_message_cancel_incoming);
+/*
+ * Occurs in the host driver message_send() function just prior to
+ * handing off the data to be processed by hardware.
+ */
+DEFINE_MESSAGE_EVENT(gb_message_submit);
+
#undef DEFINE_MESSAGE_EVENT
DECLARE_EVENT_CLASS(gb_operation,
@@ -471,7 +477,7 @@ DEFINE_HD_EVENT(gb_hd_release);
/*
* Occurs after a new host device has been added, after the
- * connection to its SVC has * been enabled.
+ * connection to its SVC has been enabled.
*/
DEFINE_HD_EVENT(gb_hd_add);
@@ -481,6 +487,13 @@ DEFINE_HD_EVENT(gb_hd_add);
*/
DEFINE_HD_EVENT(gb_hd_del);
+/*
+ * Occurs when a host device has passed received data to the Greybus
+ * core, after it has been determined it is destined for a valid
+ * CPort.
+ */
+DEFINE_HD_EVENT(gb_hd_in);
+
#undef DEFINE_HD_EVENT
#endif /* _TRACE_GREYBUS_H */
diff --git a/drivers/staging/greybus/hd.c b/drivers/staging/greybus/hd.c
index 12ac0b6..6d952ba 100644
--- a/drivers/staging/greybus/hd.c
+++ b/drivers/staging/greybus/hd.c
@@ -13,6 +13,9 @@
#include "greybus.h"
#include "greybus_trace.h"
+EXPORT_TRACEPOINT_SYMBOL_GPL(gb_message_submit);
+EXPORT_TRACEPOINT_SYMBOL_GPL(gb_hd_in);
+
static struct ida gb_hd_bus_id_map;
int gb_hd_output(struct gb_host_device *hd, void *req, u16 size, u8 cmd,
OpenPOWER on IntegriCloud