OSDN Git Service

xhci: add trace for debug messages related to changing contexts
authorXenia Ragiadakou <burzalodowa@gmail.com>
Wed, 31 Jul 2013 04:35:27 +0000 (07:35 +0300)
committerSarah Sharp <sarah.a.sharp@linux.intel.com>
Tue, 13 Aug 2013 23:05:39 +0000 (16:05 -0700)
This patch defines a new trace event, which is called xhci_dbg_context_change
and belongs in the event class xhci_log_msg, and adds tracepoints for tracing
the debug messages related to context updates performed with Configure Endpoint
and Evaluate Context commands.

Signed-off-by: Xenia Ragiadakou <burzalodowa@gmail.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
drivers/usb/host/xhci-mem.c
drivers/usb/host/xhci-ring.c
drivers/usb/host/xhci-trace.h
drivers/usb/host/xhci.c

index b881bc1..b1bb59b 100644 (file)
@@ -26,6 +26,7 @@
 #include <linux/dmapool.h>
 
 #include "xhci.h"
+#include "xhci-trace.h"
 
 /*
  * Allocates a generic ring segment from the ring pool, sets the dma address,
@@ -661,7 +662,8 @@ void xhci_setup_streams_ep_input_ctx(struct xhci_hcd *xhci,
         * fls(0) = 0, fls(0x1) = 1, fls(0x10) = 2, fls(0x100) = 3, etc.
         */
        max_primary_streams = fls(stream_info->num_stream_ctxs) - 2;
-       xhci_dbg(xhci, "Setting number of stream ctx array entries to %u\n",
+       xhci_dbg_trace(xhci,  trace_xhci_dbg_context_change,
+                       "Setting number of stream ctx array entries to %u",
                        1 << (max_primary_streams + 1));
        ep_ctx->ep_info &= cpu_to_le32(~EP_MAXPSTREAMS_MASK);
        ep_ctx->ep_info |= cpu_to_le32(EP_MAXPSTREAMS(max_primary_streams)
index 5b08cd8..ba5fd5a 100644 (file)
@@ -67,6 +67,7 @@
 #include <linux/scatterlist.h>
 #include <linux/slab.h>
 #include "xhci.h"
+#include "xhci-trace.h"
 
 static int handle_cmd_in_cmd_wait_list(struct xhci_hcd *xhci,
                struct xhci_virt_device *virt_dev,
@@ -1454,7 +1455,8 @@ static void handle_cmd_completion(struct xhci_hcd *xhci,
                        break;
                }
 bandwidth_change:
-               xhci_dbg(xhci, "Completed config ep cmd\n");
+               xhci_dbg_trace(xhci,  trace_xhci_dbg_context_change,
+                               "Completed config ep cmd");
                xhci->devs[slot_id]->cmd_status =
                        GET_COMP_CODE(le32_to_cpu(event->status));
                complete(&xhci->devs[slot_id]->cmd_completion);
index 432aa67..6286243 100644 (file)
@@ -36,6 +36,11 @@ DEFINE_EVENT(xhci_log_msg, xhci_dbg_address,
        TP_ARGS(vaf)
 );
 
+DEFINE_EVENT(xhci_log_msg, xhci_dbg_context_change,
+       TP_PROTO(struct va_format *vaf),
+       TP_ARGS(vaf)
+);
+
 #endif /* __XHCI_TRACE_H */
 
 /* this part must be outside header guard */
index d57dc6c..fa7b6f4 100644 (file)
@@ -1153,12 +1153,16 @@ static int xhci_check_maxpacket(struct xhci_hcd *xhci, unsigned int slot_id,
        hw_max_packet_size = MAX_PACKET_DECODED(le32_to_cpu(ep_ctx->ep_info2));
        max_packet_size = usb_endpoint_maxp(&urb->dev->ep0.desc);
        if (hw_max_packet_size != max_packet_size) {
-               xhci_dbg(xhci, "Max Packet Size for ep 0 changed.\n");
-               xhci_dbg(xhci, "Max packet size in usb_device = %d\n",
+               xhci_dbg_trace(xhci,  trace_xhci_dbg_context_change,
+                               "Max Packet Size for ep 0 changed.");
+               xhci_dbg_trace(xhci,  trace_xhci_dbg_context_change,
+                               "Max packet size in usb_device = %d",
                                max_packet_size);
-               xhci_dbg(xhci, "Max packet size in xHCI HW = %d\n",
+               xhci_dbg_trace(xhci,  trace_xhci_dbg_context_change,
+                               "Max packet size in xHCI HW = %d",
                                hw_max_packet_size);
-               xhci_dbg(xhci, "Issuing evaluate context command.\n");
+               xhci_dbg_trace(xhci,  trace_xhci_dbg_context_change,
+                               "Issuing evaluate context command.");
 
                /* Set up the input context flags for the command */
                /* FIXME: This won't work if a non-default control endpoint
@@ -1776,7 +1780,8 @@ static int xhci_configure_endpoint_result(struct xhci_hcd *xhci,
                ret = -ENODEV;
                break;
        case COMP_SUCCESS:
-               dev_dbg(&udev->dev, "Successful Endpoint Configure command\n");
+               xhci_dbg_trace(xhci, trace_xhci_dbg_context_change,
+                               "Successful Endpoint Configure command");
                ret = 0;
                break;
        default:
@@ -1822,7 +1827,8 @@ static int xhci_evaluate_context_result(struct xhci_hcd *xhci,
                ret = -EINVAL;
                break;
        case COMP_SUCCESS:
-               dev_dbg(&udev->dev, "Successful evaluate context command\n");
+               xhci_dbg_trace(xhci, trace_xhci_dbg_context_change,
+                               "Successful evaluate context command");
                ret = 0;
                break;
        default:
@@ -2583,7 +2589,8 @@ static int xhci_configure_endpoint(struct xhci_hcd *xhci,
                if ((xhci->quirks & XHCI_EP_LIMIT_QUIRK))
                        xhci_free_host_resources(xhci, ctrl_ctx);
                spin_unlock_irqrestore(&xhci->lock, flags);
-               xhci_dbg(xhci, "FIXME allocate a new ring segment\n");
+               xhci_dbg_trace(xhci,  trace_xhci_dbg_context_change,
+                               "FIXME allocate a new ring segment");
                return -ENOMEM;
        }
        xhci_ring_cmd_db(xhci);
@@ -3865,7 +3872,8 @@ static int __maybe_unused xhci_change_max_exit_latency(struct xhci_hcd *xhci,
        slot_ctx->dev_info2 &= cpu_to_le32(~((u32) MAX_EXIT));
        slot_ctx->dev_info2 |= cpu_to_le32(max_exit_latency);
 
-       xhci_dbg(xhci, "Set up evaluate context for LPM MEL change.\n");
+       xhci_dbg_trace(xhci, trace_xhci_dbg_context_change,
+                       "Set up evaluate context for LPM MEL change.");
        xhci_dbg(xhci, "Slot %u Input Context:\n", udev->slot_id);
        xhci_dbg_ctx(xhci, command->in_ctx, 0);