mirror of
https://kernel.googlesource.com/pub/scm/linux/kernel/git/stable/linux-stable.git
synced 2025-10-12 21:42:15 +10:00
platform/surface: aggregator: Add target and source IDs to command trace events
Add command source and target IDs to trace events. Tracing support for the Surface Aggregator driver was originally implemented at a time when only two peers were known: Host and SAM. We now know that there are at least five, with three actively being used (Host, SAM, KIP; four with Debug if you want to count manually enabling that interface). So it makes sense to also explicitly name the peers involved when tracing. Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com> Link: https://lore.kernel.org/r/20221202223327.690880-4-luzmaximilian@gmail.com Reviewed-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
parent
3f88b459a7
commit
2730fc0ab4
@ -96,6 +96,7 @@ TRACE_DEFINE_ENUM(SSAM_SSH_TC_POS);
|
||||
#define SSAM_SEQ_NOT_APPLICABLE ((u16)-1)
|
||||
#define SSAM_RQID_NOT_APPLICABLE ((u32)-1)
|
||||
#define SSAM_SSH_TC_NOT_APPLICABLE 0
|
||||
#define SSAM_SSH_TID_NOT_APPLICABLE ((u8)-1)
|
||||
|
||||
#ifndef _SURFACE_AGGREGATOR_TRACE_HELPERS
|
||||
#define _SURFACE_AGGREGATOR_TRACE_HELPERS
|
||||
@ -150,12 +151,44 @@ static inline u32 ssam_trace_get_request_id(const struct ssh_packet *p)
|
||||
return get_unaligned_le16(&p->data.ptr[SSH_MSGOFFSET_COMMAND(rqid)]);
|
||||
}
|
||||
|
||||
/**
|
||||
* ssam_trace_get_request_tid() - Read the packet's request target ID.
|
||||
* @p: The packet.
|
||||
*
|
||||
* Return: Returns the packet's request target ID (TID) field if the packet
|
||||
* represents a request with command data, or %SSAM_SSH_TID_NOT_APPLICABLE
|
||||
* if not (e.g. flush request, control packet).
|
||||
*/
|
||||
static inline u32 ssam_trace_get_request_tid(const struct ssh_packet *p)
|
||||
{
|
||||
if (!p->data.ptr || p->data.len < SSH_COMMAND_MESSAGE_LENGTH(0))
|
||||
return SSAM_SSH_TID_NOT_APPLICABLE;
|
||||
|
||||
return get_unaligned_le16(&p->data.ptr[SSH_MSGOFFSET_COMMAND(tid)]);
|
||||
}
|
||||
|
||||
/**
|
||||
* ssam_trace_get_request_sid() - Read the packet's request source ID.
|
||||
* @p: The packet.
|
||||
*
|
||||
* Return: Returns the packet's request source ID (SID) field if the packet
|
||||
* represents a request with command data, or %SSAM_SSH_TID_NOT_APPLICABLE
|
||||
* if not (e.g. flush request, control packet).
|
||||
*/
|
||||
static inline u32 ssam_trace_get_request_sid(const struct ssh_packet *p)
|
||||
{
|
||||
if (!p->data.ptr || p->data.len < SSH_COMMAND_MESSAGE_LENGTH(0))
|
||||
return SSAM_SSH_TID_NOT_APPLICABLE;
|
||||
|
||||
return get_unaligned_le16(&p->data.ptr[SSH_MSGOFFSET_COMMAND(sid)]);
|
||||
}
|
||||
|
||||
/**
|
||||
* ssam_trace_get_request_tc() - Read the packet's request target category.
|
||||
* @p: The packet.
|
||||
*
|
||||
* Return: Returns the packet's request target category (TC) field if the
|
||||
* packet represents a request with command data, or %SSAM_TC_NOT_APPLICABLE
|
||||
* packet represents a request with command data, or %SSAM_SSH_TC_NOT_APPLICABLE
|
||||
* if not (e.g. flush request, control packet).
|
||||
*/
|
||||
static inline u32 ssam_trace_get_request_tc(const struct ssh_packet *p)
|
||||
@ -232,8 +265,18 @@ static inline u32 ssam_trace_get_request_tc(const struct ssh_packet *p)
|
||||
{ SSAM_RQID_NOT_APPLICABLE, "N/A" } \
|
||||
)
|
||||
|
||||
#define ssam_show_ssh_tc(rqid) \
|
||||
__print_symbolic(rqid, \
|
||||
#define ssam_show_ssh_tid(tid) \
|
||||
__print_symbolic(tid, \
|
||||
{ SSAM_SSH_TID_NOT_APPLICABLE, "N/A" }, \
|
||||
{ SSAM_SSH_TID_HOST, "Host" }, \
|
||||
{ SSAM_SSH_TID_SAM, "SAM" }, \
|
||||
{ SSAM_SSH_TID_KIP, "KIP" }, \
|
||||
{ SSAM_SSH_TID_DEBUG, "Debug" }, \
|
||||
{ SSAM_SSH_TID_SURFLINK, "SurfLink" } \
|
||||
)
|
||||
|
||||
#define ssam_show_ssh_tc(tc) \
|
||||
__print_symbolic(tc, \
|
||||
{ SSAM_SSH_TC_NOT_APPLICABLE, "N/A" }, \
|
||||
{ SSAM_SSH_TC_SAM, "SAM" }, \
|
||||
{ SSAM_SSH_TC_BAT, "BAT" }, \
|
||||
@ -313,6 +356,8 @@ DECLARE_EVENT_CLASS(ssam_command_class,
|
||||
TP_STRUCT__entry(
|
||||
__field(u16, rqid)
|
||||
__field(u16, len)
|
||||
__field(u8, tid)
|
||||
__field(u8, sid)
|
||||
__field(u8, tc)
|
||||
__field(u8, cid)
|
||||
__field(u8, iid)
|
||||
@ -320,14 +365,18 @@ DECLARE_EVENT_CLASS(ssam_command_class,
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->rqid = get_unaligned_le16(&cmd->rqid);
|
||||
__entry->tid = cmd->tid;
|
||||
__entry->sid = cmd->sid;
|
||||
__entry->tc = cmd->tc;
|
||||
__entry->cid = cmd->cid;
|
||||
__entry->iid = cmd->iid;
|
||||
__entry->len = len;
|
||||
),
|
||||
|
||||
TP_printk("rqid=%#06x, tc=%s, cid=%#04x, iid=%#04x, len=%u",
|
||||
TP_printk("rqid=%#06x, tid=%s, sid=%s, tc=%s, cid=%#04x, iid=%#04x, len=%u",
|
||||
__entry->rqid,
|
||||
ssam_show_ssh_tid(__entry->tid),
|
||||
ssam_show_ssh_tid(__entry->sid),
|
||||
ssam_show_ssh_tc(__entry->tc),
|
||||
__entry->cid,
|
||||
__entry->iid,
|
||||
@ -430,6 +479,8 @@ DECLARE_EVENT_CLASS(ssam_request_class,
|
||||
__field(u8, tc)
|
||||
__field(u16, cid)
|
||||
__field(u16, iid)
|
||||
__field(u8, tid)
|
||||
__field(u8, sid)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
@ -439,16 +490,20 @@ DECLARE_EVENT_CLASS(ssam_request_class,
|
||||
__entry->state = READ_ONCE(request->state);
|
||||
__entry->rqid = ssam_trace_get_request_id(p);
|
||||
ssam_trace_ptr_uid(p, __entry->uid);
|
||||
__entry->tid = ssam_trace_get_request_tid(p);
|
||||
__entry->sid = ssam_trace_get_request_sid(p);
|
||||
__entry->tc = ssam_trace_get_request_tc(p);
|
||||
__entry->cid = ssam_trace_get_command_field_u8(p, cid);
|
||||
__entry->iid = ssam_trace_get_command_field_u8(p, iid);
|
||||
),
|
||||
|
||||
TP_printk("uid=%s, rqid=%s, ty=%s, sta=%s, tc=%s, cid=%s, iid=%s",
|
||||
TP_printk("uid=%s, rqid=%s, ty=%s, sta=%s, tid=%s, sid=%s, tc=%s, cid=%s, iid=%s",
|
||||
__entry->uid,
|
||||
ssam_show_request_id(__entry->rqid),
|
||||
ssam_show_request_type(__entry->state),
|
||||
ssam_show_request_state(__entry->state),
|
||||
ssam_show_ssh_tid(__entry->tid),
|
||||
ssam_show_ssh_tid(__entry->sid),
|
||||
ssam_show_ssh_tc(__entry->tc),
|
||||
ssam_show_generic_u8_field(__entry->cid),
|
||||
ssam_show_generic_u8_field(__entry->iid)
|
||||
@ -474,6 +529,8 @@ DECLARE_EVENT_CLASS(ssam_request_status_class,
|
||||
__field(u8, tc)
|
||||
__field(u16, cid)
|
||||
__field(u16, iid)
|
||||
__field(u8, tid)
|
||||
__field(u8, sid)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
@ -484,16 +541,20 @@ DECLARE_EVENT_CLASS(ssam_request_status_class,
|
||||
__entry->rqid = ssam_trace_get_request_id(p);
|
||||
__entry->status = status;
|
||||
ssam_trace_ptr_uid(p, __entry->uid);
|
||||
__entry->tid = ssam_trace_get_request_tid(p);
|
||||
__entry->sid = ssam_trace_get_request_sid(p);
|
||||
__entry->tc = ssam_trace_get_request_tc(p);
|
||||
__entry->cid = ssam_trace_get_command_field_u8(p, cid);
|
||||
__entry->iid = ssam_trace_get_command_field_u8(p, iid);
|
||||
),
|
||||
|
||||
TP_printk("uid=%s, rqid=%s, ty=%s, sta=%s, tc=%s, cid=%s, iid=%s, status=%d",
|
||||
TP_printk("uid=%s, rqid=%s, ty=%s, sta=%s, tid=%s, sid=%s, tc=%s, cid=%s, iid=%s, status=%d",
|
||||
__entry->uid,
|
||||
ssam_show_request_id(__entry->rqid),
|
||||
ssam_show_request_type(__entry->state),
|
||||
ssam_show_request_state(__entry->state),
|
||||
ssam_show_ssh_tid(__entry->tid),
|
||||
ssam_show_ssh_tid(__entry->sid),
|
||||
ssam_show_ssh_tc(__entry->tc),
|
||||
ssam_show_generic_u8_field(__entry->cid),
|
||||
ssam_show_generic_u8_field(__entry->iid),
|
||||
|
Loading…
Reference in New Issue
Block a user