Revision 873123fe

b/hw/usb/hcd-xhci.c
465 465
    [CR_VENDOR_NEC_CHALLENGE_RESPONSE] = "CR_VENDOR_NEC_CHALLENGE_RESPONSE",
466 466
};
467 467

  
468
static const char *TRBCCode_names[] = {
469
    [CC_INVALID]                       = "CC_INVALID",
470
    [CC_SUCCESS]                       = "CC_SUCCESS",
471
    [CC_DATA_BUFFER_ERROR]             = "CC_DATA_BUFFER_ERROR",
472
    [CC_BABBLE_DETECTED]               = "CC_BABBLE_DETECTED",
473
    [CC_USB_TRANSACTION_ERROR]         = "CC_USB_TRANSACTION_ERROR",
474
    [CC_TRB_ERROR]                     = "CC_TRB_ERROR",
475
    [CC_STALL_ERROR]                   = "CC_STALL_ERROR",
476
    [CC_RESOURCE_ERROR]                = "CC_RESOURCE_ERROR",
477
    [CC_BANDWIDTH_ERROR]               = "CC_BANDWIDTH_ERROR",
478
    [CC_NO_SLOTS_ERROR]                = "CC_NO_SLOTS_ERROR",
479
    [CC_INVALID_STREAM_TYPE_ERROR]     = "CC_INVALID_STREAM_TYPE_ERROR",
480
    [CC_SLOT_NOT_ENABLED_ERROR]        = "CC_SLOT_NOT_ENABLED_ERROR",
481
    [CC_EP_NOT_ENABLED_ERROR]          = "CC_EP_NOT_ENABLED_ERROR",
482
    [CC_SHORT_PACKET]                  = "CC_SHORT_PACKET",
483
    [CC_RING_UNDERRUN]                 = "CC_RING_UNDERRUN",
484
    [CC_RING_OVERRUN]                  = "CC_RING_OVERRUN",
485
    [CC_VF_ER_FULL]                    = "CC_VF_ER_FULL",
486
    [CC_PARAMETER_ERROR]               = "CC_PARAMETER_ERROR",
487
    [CC_BANDWIDTH_OVERRUN]             = "CC_BANDWIDTH_OVERRUN",
488
    [CC_CONTEXT_STATE_ERROR]           = "CC_CONTEXT_STATE_ERROR",
489
    [CC_NO_PING_RESPONSE_ERROR]        = "CC_NO_PING_RESPONSE_ERROR",
490
    [CC_EVENT_RING_FULL_ERROR]         = "CC_EVENT_RING_FULL_ERROR",
491
    [CC_INCOMPATIBLE_DEVICE_ERROR]     = "CC_INCOMPATIBLE_DEVICE_ERROR",
492
    [CC_MISSED_SERVICE_ERROR]          = "CC_MISSED_SERVICE_ERROR",
493
    [CC_COMMAND_RING_STOPPED]          = "CC_COMMAND_RING_STOPPED",
494
    [CC_COMMAND_ABORTED]               = "CC_COMMAND_ABORTED",
495
    [CC_STOPPED]                       = "CC_STOPPED",
496
    [CC_STOPPED_LENGTH_INVALID]        = "CC_STOPPED_LENGTH_INVALID",
497
    [CC_MAX_EXIT_LATENCY_TOO_LARGE_ERROR]
498
    = "CC_MAX_EXIT_LATENCY_TOO_LARGE_ERROR",
499
    [CC_ISOCH_BUFFER_OVERRUN]          = "CC_ISOCH_BUFFER_OVERRUN",
500
    [CC_EVENT_LOST_ERROR]              = "CC_EVENT_LOST_ERROR",
501
    [CC_UNDEFINED_ERROR]               = "CC_UNDEFINED_ERROR",
502
    [CC_INVALID_STREAM_ID_ERROR]       = "CC_INVALID_STREAM_ID_ERROR",
503
    [CC_SECONDARY_BANDWIDTH_ERROR]     = "CC_SECONDARY_BANDWIDTH_ERROR",
504
    [CC_SPLIT_TRANSACTION_ERROR]       = "CC_SPLIT_TRANSACTION_ERROR",
505
};
506

  
468 507
static const char *lookup_name(uint32_t index, const char **list, uint32_t llen)
469 508
{
470 509
    if (index >= llen || list[index] == NULL) {
......
479 518
                       ARRAY_SIZE(TRBType_names));
480 519
}
481 520

  
521
static const char *event_name(XHCIEvent *event)
522
{
523
    return lookup_name(event->ccode, TRBCCode_names,
524
                       ARRAY_SIZE(TRBCCode_names));
525
}
526

  
482 527
static uint64_t xhci_mfindex_get(XHCIState *xhci)
483 528
{
484 529
    int64_t now = qemu_get_clock_ns(vm_clock);
......
574 619
    ev_trb.control = cpu_to_le32(ev_trb.control);
575 620

  
576 621
    trace_usb_xhci_queue_event(xhci->er_ep_idx, trb_name(&ev_trb),
577
                               ev_trb.parameter, ev_trb.status, ev_trb.control);
622
                               event_name(event), ev_trb.parameter,
623
                               ev_trb.status, ev_trb.control);
578 624

  
579 625
    addr = xhci->er_start + TRB_SIZE*xhci->er_ep_idx;
580 626
    pci_dma_write(&xhci->pci_dev, addr, &ev_trb, TRB_SIZE);
b/trace-events
313 313
usb_xhci_doorbell_write(uint32_t off, uint32_t val) "off 0x%04x, val 0x%08x"
314 314
usb_xhci_irq_intx(uint32_t level) "level %d"
315 315
usb_xhci_irq_msi(uint32_t nr) "nr %d"
316
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"
316
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"
317 317
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"
318 318
usb_xhci_slot_enable(uint32_t slotid) "slotid %d"
319 319
usb_xhci_slot_disable(uint32_t slotid) "slotid %d"

Also available in: Unified diff