Skip to content

Commit

Permalink
greybus: tracing: add timing traces
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Alex Elder authored and Greg Kroah-Hartman committed Jun 4, 2016
1 parent 79c8c64 commit 495787a
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 1 deletion.
2 changes: 2 additions & 0 deletions drivers/staging/greybus/connection.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
4 changes: 4 additions & 0 deletions drivers/staging/greybus/es2.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include <asm/unaligned.h>

#include "greybus.h"
#include "greybus_trace.h"
#include "kernel_ver.h"
#include "connection.h"

Expand Down Expand Up @@ -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);
Expand Down
15 changes: 14 additions & 1 deletion drivers/staging/greybus/greybus_trace.h
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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);

Expand All @@ -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 */
Expand Down
3 changes: 3 additions & 0 deletions drivers/staging/greybus/hd.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down

0 comments on commit 495787a

Please sign in to comment.