Merge "Change requested in launchpad bug #1288352" into 5.0
[packages/centos6/qemu.git] / 0608-xhci-trace-cc-codes-in-cleartext.patch
1 From 188fbd363df2e7f23ea37fb1b179e984bbce39e5 Mon Sep 17 00:00:00 2001
2 From: Gerd Hoffmann <kraxel@redhat.com>
3 Date: Mon, 27 Aug 2012 16:09:20 +0200
4 Subject: [PATCH] xhci: trace cc codes in cleartext
5
6 Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
7 ---
8  hw/usb/hcd-xhci.c | 48 +++++++++++++++++++++++++++++++++++++++++++++++-
9  trace-events      |  2 +-
10  2 files changed, 48 insertions(+), 2 deletions(-)
11
12 diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
13 index b313330..ab352c0 100644
14 --- a/hw/usb/hcd-xhci.c
15 +++ b/hw/usb/hcd-xhci.c
16 @@ -465,6 +465,45 @@ static const char *TRBType_names[] = {
17      [CR_VENDOR_NEC_CHALLENGE_RESPONSE] = "CR_VENDOR_NEC_CHALLENGE_RESPONSE",
18  };
19  
20 +static const char *TRBCCode_names[] = {
21 +    [CC_INVALID]                       = "CC_INVALID",
22 +    [CC_SUCCESS]                       = "CC_SUCCESS",
23 +    [CC_DATA_BUFFER_ERROR]             = "CC_DATA_BUFFER_ERROR",
24 +    [CC_BABBLE_DETECTED]               = "CC_BABBLE_DETECTED",
25 +    [CC_USB_TRANSACTION_ERROR]         = "CC_USB_TRANSACTION_ERROR",
26 +    [CC_TRB_ERROR]                     = "CC_TRB_ERROR",
27 +    [CC_STALL_ERROR]                   = "CC_STALL_ERROR",
28 +    [CC_RESOURCE_ERROR]                = "CC_RESOURCE_ERROR",
29 +    [CC_BANDWIDTH_ERROR]               = "CC_BANDWIDTH_ERROR",
30 +    [CC_NO_SLOTS_ERROR]                = "CC_NO_SLOTS_ERROR",
31 +    [CC_INVALID_STREAM_TYPE_ERROR]     = "CC_INVALID_STREAM_TYPE_ERROR",
32 +    [CC_SLOT_NOT_ENABLED_ERROR]        = "CC_SLOT_NOT_ENABLED_ERROR",
33 +    [CC_EP_NOT_ENABLED_ERROR]          = "CC_EP_NOT_ENABLED_ERROR",
34 +    [CC_SHORT_PACKET]                  = "CC_SHORT_PACKET",
35 +    [CC_RING_UNDERRUN]                 = "CC_RING_UNDERRUN",
36 +    [CC_RING_OVERRUN]                  = "CC_RING_OVERRUN",
37 +    [CC_VF_ER_FULL]                    = "CC_VF_ER_FULL",
38 +    [CC_PARAMETER_ERROR]               = "CC_PARAMETER_ERROR",
39 +    [CC_BANDWIDTH_OVERRUN]             = "CC_BANDWIDTH_OVERRUN",
40 +    [CC_CONTEXT_STATE_ERROR]           = "CC_CONTEXT_STATE_ERROR",
41 +    [CC_NO_PING_RESPONSE_ERROR]        = "CC_NO_PING_RESPONSE_ERROR",
42 +    [CC_EVENT_RING_FULL_ERROR]         = "CC_EVENT_RING_FULL_ERROR",
43 +    [CC_INCOMPATIBLE_DEVICE_ERROR]     = "CC_INCOMPATIBLE_DEVICE_ERROR",
44 +    [CC_MISSED_SERVICE_ERROR]          = "CC_MISSED_SERVICE_ERROR",
45 +    [CC_COMMAND_RING_STOPPED]          = "CC_COMMAND_RING_STOPPED",
46 +    [CC_COMMAND_ABORTED]               = "CC_COMMAND_ABORTED",
47 +    [CC_STOPPED]                       = "CC_STOPPED",
48 +    [CC_STOPPED_LENGTH_INVALID]        = "CC_STOPPED_LENGTH_INVALID",
49 +    [CC_MAX_EXIT_LATENCY_TOO_LARGE_ERROR]
50 +    = "CC_MAX_EXIT_LATENCY_TOO_LARGE_ERROR",
51 +    [CC_ISOCH_BUFFER_OVERRUN]          = "CC_ISOCH_BUFFER_OVERRUN",
52 +    [CC_EVENT_LOST_ERROR]              = "CC_EVENT_LOST_ERROR",
53 +    [CC_UNDEFINED_ERROR]               = "CC_UNDEFINED_ERROR",
54 +    [CC_INVALID_STREAM_ID_ERROR]       = "CC_INVALID_STREAM_ID_ERROR",
55 +    [CC_SECONDARY_BANDWIDTH_ERROR]     = "CC_SECONDARY_BANDWIDTH_ERROR",
56 +    [CC_SPLIT_TRANSACTION_ERROR]       = "CC_SPLIT_TRANSACTION_ERROR",
57 +};
58 +
59  static const char *lookup_name(uint32_t index, const char **list, uint32_t llen)
60  {
61      if (index >= llen || list[index] == NULL) {
62 @@ -479,6 +518,12 @@ static const char *trb_name(XHCITRB *trb)
63                         ARRAY_SIZE(TRBType_names));
64  }
65  
66 +static const char *event_name(XHCIEvent *event)
67 +{
68 +    return lookup_name(event->ccode, TRBCCode_names,
69 +                       ARRAY_SIZE(TRBCCode_names));
70 +}
71 +
72  static uint64_t xhci_mfindex_get(XHCIState *xhci)
73  {
74      int64_t now = qemu_get_clock_ns(vm_clock);
75 @@ -574,7 +619,8 @@ static void xhci_write_event(XHCIState *xhci, XHCIEvent *event)
76      ev_trb.control = cpu_to_le32(ev_trb.control);
77  
78      trace_usb_xhci_queue_event(xhci->er_ep_idx, trb_name(&ev_trb),
79 -                               ev_trb.parameter, ev_trb.status, ev_trb.control);
80 +                               event_name(event), ev_trb.parameter,
81 +                               ev_trb.status, ev_trb.control);
82  
83      addr = xhci->er_start + TRB_SIZE*xhci->er_ep_idx;
84      pci_dma_write(&xhci->pci_dev, addr, &ev_trb, TRB_SIZE);
85 diff --git a/trace-events b/trace-events
86 index 07b63f1..b38e32a 100644
87 --- a/trace-events
88 +++ b/trace-events
89 @@ -316,7 +316,7 @@ usb_xhci_runtime_write(uint32_t off, uint32_t val) "off 0x%04x, val 0x%08x"
90  usb_xhci_doorbell_write(uint32_t off, uint32_t val) "off 0x%04x, val 0x%08x"
91  usb_xhci_irq_intx(uint32_t level) "level %d"
92  usb_xhci_irq_msi(uint32_t nr) "nr %d"
93 -usb_xhci_queue_event(uint32_t idx, const char *name, uint64_t param, uint32_t status, uint32_t control) "idx %d, %s, p %016" PRIx64 ", s %08x, c 0x%08x"
94 +usb_xhci_queue_event(uint32_t idx, const char *trb, const char *evt, uint64_t param, uint32_t status, uint32_t control) "idx %d, %s, %s, p %016" PRIx64 ", s %08x, c 0x%08x"
95  usb_xhci_fetch_trb(uint64_t addr, const char *name, uint64_t param, uint32_t status, uint32_t control) "addr %016" PRIx64 ", %s, p %016" PRIx64 ", s %08x, c 0x%08x"
96  usb_xhci_slot_enable(uint32_t slotid) "slotid %d"
97  usb_xhci_slot_disable(uint32_t slotid) "slotid %d"
98 -- 
99 1.7.12.1
100