Commit 4817754a authored by Mathias Nyman's avatar Mathias Nyman Committed by Greg Kroah-Hartman
Browse files

xhci: add stream context tracing



Show stream id, stream context type (SCT), ring dequeue pointer and
the DMA address of the stream context during stream allocation

Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
Link: https://lore.kernel.org/r/20241106101459.775897-8-mathias.nyman@linux.intel.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 4a587aa5
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -658,6 +658,8 @@ struct xhci_stream_info *xhci_alloc_stream_info(struct xhci_hcd *xhci,
		xhci_dbg(xhci, "Setting stream %d ring ptr to 0x%08llx\n", cur_stream, addr);

		ret = xhci_update_stream_mapping(cur_ring, mem_flags);

		trace_xhci_alloc_stream_info_ctx(stream_info, cur_stream);
		if (ret) {
			xhci_ring_free(xhci, cur_ring);
			stream_info->stream_rings[cur_stream] = NULL;
+26 −0
Original line number Diff line number Diff line
@@ -314,6 +314,32 @@ DEFINE_EVENT(xhci_log_urb, xhci_urb_dequeue,
	TP_ARGS(urb)
);

DECLARE_EVENT_CLASS(xhci_log_stream_ctx,
	TP_PROTO(struct xhci_stream_info *info, unsigned int stream_id),
	TP_ARGS(info, stream_id),
	TP_STRUCT__entry(
		__field(unsigned int, stream_id)
		__field(u64, stream_ring)
		__field(dma_addr_t, ctx_array_dma)

	),
	TP_fast_assign(
		__entry->stream_id = stream_id;
		__entry->stream_ring = le64_to_cpu(info->stream_ctx_array[stream_id].stream_ring);
		__entry->ctx_array_dma = info->ctx_array_dma + stream_id * 16;

	),
	TP_printk("stream %u ctx @%pad: SCT %llu deq %llx", __entry->stream_id,
		&__entry->ctx_array_dma, CTX_TO_SCT(__entry->stream_ring),
		__entry->stream_ring
	)
);

DEFINE_EVENT(xhci_log_stream_ctx, xhci_alloc_stream_info_ctx,
	TP_PROTO(struct xhci_stream_info *info, unsigned int stream_id),
	TP_ARGS(info, stream_id)
);

DECLARE_EVENT_CLASS(xhci_log_ep_ctx,
	TP_PROTO(struct xhci_ep_ctx *ctx),
	TP_ARGS(ctx),
+1 −0
Original line number Diff line number Diff line
@@ -554,6 +554,7 @@ struct xhci_stream_ctx {

/* Stream Context Types (section 6.4.1) - bits 3:1 of stream ctx deq ptr */
#define	SCT_FOR_CTX(p)		(((p) & 0x7) << 1)
#define	CTX_TO_SCT(p)		(((p) >> 1) & 0x7)
/* Secondary stream array type, dequeue pointer is to a transfer ring */
#define	SCT_SEC_TR		0
/* Primary stream array type, dequeue pointer is to a transfer ring */