162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0+ */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Trace points for SSAM/SSH. 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2020-2022 Maximilian Luz <luzmaximilian@gmail.com> 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#undef TRACE_SYSTEM 962306a36Sopenharmony_ci#define TRACE_SYSTEM surface_aggregator 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#if !defined(_SURFACE_AGGREGATOR_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) 1262306a36Sopenharmony_ci#define _SURFACE_AGGREGATOR_TRACE_H 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci#include <linux/surface_aggregator/serial_hub.h> 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci#include <asm/unaligned.h> 1762306a36Sopenharmony_ci#include <linux/tracepoint.h> 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_FRAME_TYPE_DATA_SEQ); 2062306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_FRAME_TYPE_DATA_NSQ); 2162306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_FRAME_TYPE_ACK); 2262306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_FRAME_TYPE_NAK); 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_PACKET_SF_LOCKED_BIT); 2562306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_PACKET_SF_QUEUED_BIT); 2662306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_PACKET_SF_PENDING_BIT); 2762306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_PACKET_SF_TRANSMITTING_BIT); 2862306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_PACKET_SF_TRANSMITTED_BIT); 2962306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_PACKET_SF_ACKED_BIT); 3062306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_PACKET_SF_CANCELED_BIT); 3162306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_PACKET_SF_COMPLETED_BIT); 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_PACKET_TY_FLUSH_BIT); 3462306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_PACKET_TY_SEQUENCED_BIT); 3562306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_PACKET_TY_BLOCKING_BIT); 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_PACKET_FLAGS_SF_MASK); 3862306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_PACKET_FLAGS_TY_MASK); 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_REQUEST_SF_LOCKED_BIT); 4162306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_REQUEST_SF_QUEUED_BIT); 4262306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_REQUEST_SF_PENDING_BIT); 4362306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_REQUEST_SF_TRANSMITTING_BIT); 4462306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_REQUEST_SF_TRANSMITTED_BIT); 4562306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_REQUEST_SF_RSPRCVD_BIT); 4662306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_REQUEST_SF_CANCELED_BIT); 4762306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_REQUEST_SF_COMPLETED_BIT); 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_REQUEST_TY_FLUSH_BIT); 5062306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_REQUEST_TY_HAS_RESPONSE_BIT); 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_REQUEST_FLAGS_SF_MASK); 5362306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSH_REQUEST_FLAGS_TY_MASK); 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_SAM); 5662306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_BAT); 5762306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_TMP); 5862306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_PMC); 5962306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_FAN); 6062306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_PoM); 6162306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_DBG); 6262306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_KBD); 6362306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_FWU); 6462306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_UNI); 6562306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_LPC); 6662306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_TCL); 6762306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_SFL); 6862306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_KIP); 6962306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_EXT); 7062306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_BLD); 7162306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_BAS); 7262306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_SEN); 7362306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_SRQ); 7462306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_MCU); 7562306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_HID); 7662306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_TCH); 7762306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_BKL); 7862306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_TAM); 7962306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_ACC0); 8062306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_UFI); 8162306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_USC); 8262306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_PEN); 8362306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_VID); 8462306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_AUD); 8562306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_SMC); 8662306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_KPD); 8762306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_REG); 8862306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_SPT); 8962306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_SYS); 9062306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_ACC1); 9162306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_SHB); 9262306a36Sopenharmony_ciTRACE_DEFINE_ENUM(SSAM_SSH_TC_POS); 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_ci#define SSAM_PTR_UID_LEN 9 9562306a36Sopenharmony_ci#define SSAM_U8_FIELD_NOT_APPLICABLE ((u16)-1) 9662306a36Sopenharmony_ci#define SSAM_SEQ_NOT_APPLICABLE ((u16)-1) 9762306a36Sopenharmony_ci#define SSAM_RQID_NOT_APPLICABLE ((u32)-1) 9862306a36Sopenharmony_ci#define SSAM_SSH_TC_NOT_APPLICABLE 0 9962306a36Sopenharmony_ci#define SSAM_SSH_TID_NOT_APPLICABLE ((u8)-1) 10062306a36Sopenharmony_ci 10162306a36Sopenharmony_ci#ifndef _SURFACE_AGGREGATOR_TRACE_HELPERS 10262306a36Sopenharmony_ci#define _SURFACE_AGGREGATOR_TRACE_HELPERS 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_ci/** 10562306a36Sopenharmony_ci * ssam_trace_ptr_uid() - Convert the pointer to a non-pointer UID string. 10662306a36Sopenharmony_ci * @ptr: The pointer to convert. 10762306a36Sopenharmony_ci * @uid_str: A buffer of length SSAM_PTR_UID_LEN where the UID will be stored. 10862306a36Sopenharmony_ci * 10962306a36Sopenharmony_ci * Converts the given pointer into a UID string that is safe to be shared 11062306a36Sopenharmony_ci * with userspace and logs, i.e. doesn't give away the real memory location. 11162306a36Sopenharmony_ci */ 11262306a36Sopenharmony_cistatic inline void ssam_trace_ptr_uid(const void *ptr, char *uid_str) 11362306a36Sopenharmony_ci{ 11462306a36Sopenharmony_ci char buf[2 * sizeof(void *) + 1]; 11562306a36Sopenharmony_ci 11662306a36Sopenharmony_ci BUILD_BUG_ON(ARRAY_SIZE(buf) < SSAM_PTR_UID_LEN); 11762306a36Sopenharmony_ci 11862306a36Sopenharmony_ci snprintf(buf, ARRAY_SIZE(buf), "%p", ptr); 11962306a36Sopenharmony_ci memcpy(uid_str, &buf[ARRAY_SIZE(buf) - SSAM_PTR_UID_LEN], 12062306a36Sopenharmony_ci SSAM_PTR_UID_LEN); 12162306a36Sopenharmony_ci} 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_ci/** 12462306a36Sopenharmony_ci * ssam_trace_get_packet_seq() - Read the packet's sequence ID. 12562306a36Sopenharmony_ci * @p: The packet. 12662306a36Sopenharmony_ci * 12762306a36Sopenharmony_ci * Return: Returns the packet's sequence ID (SEQ) field if present, or 12862306a36Sopenharmony_ci * %SSAM_SEQ_NOT_APPLICABLE if not (e.g. flush packet). 12962306a36Sopenharmony_ci */ 13062306a36Sopenharmony_cistatic inline u16 ssam_trace_get_packet_seq(const struct ssh_packet *p) 13162306a36Sopenharmony_ci{ 13262306a36Sopenharmony_ci if (!p->data.ptr || p->data.len < SSH_MESSAGE_LENGTH(0)) 13362306a36Sopenharmony_ci return SSAM_SEQ_NOT_APPLICABLE; 13462306a36Sopenharmony_ci 13562306a36Sopenharmony_ci return p->data.ptr[SSH_MSGOFFSET_FRAME(seq)]; 13662306a36Sopenharmony_ci} 13762306a36Sopenharmony_ci 13862306a36Sopenharmony_ci/** 13962306a36Sopenharmony_ci * ssam_trace_get_request_id() - Read the packet's request ID. 14062306a36Sopenharmony_ci * @p: The packet. 14162306a36Sopenharmony_ci * 14262306a36Sopenharmony_ci * Return: Returns the packet's request ID (RQID) field if the packet 14362306a36Sopenharmony_ci * represents a request with command data, or %SSAM_RQID_NOT_APPLICABLE if not 14462306a36Sopenharmony_ci * (e.g. flush request, control packet). 14562306a36Sopenharmony_ci */ 14662306a36Sopenharmony_cistatic inline u32 ssam_trace_get_request_id(const struct ssh_packet *p) 14762306a36Sopenharmony_ci{ 14862306a36Sopenharmony_ci if (!p->data.ptr || p->data.len < SSH_COMMAND_MESSAGE_LENGTH(0)) 14962306a36Sopenharmony_ci return SSAM_RQID_NOT_APPLICABLE; 15062306a36Sopenharmony_ci 15162306a36Sopenharmony_ci return get_unaligned_le16(&p->data.ptr[SSH_MSGOFFSET_COMMAND(rqid)]); 15262306a36Sopenharmony_ci} 15362306a36Sopenharmony_ci 15462306a36Sopenharmony_ci/** 15562306a36Sopenharmony_ci * ssam_trace_get_request_tid() - Read the packet's request target ID. 15662306a36Sopenharmony_ci * @p: The packet. 15762306a36Sopenharmony_ci * 15862306a36Sopenharmony_ci * Return: Returns the packet's request target ID (TID) field if the packet 15962306a36Sopenharmony_ci * represents a request with command data, or %SSAM_SSH_TID_NOT_APPLICABLE 16062306a36Sopenharmony_ci * if not (e.g. flush request, control packet). 16162306a36Sopenharmony_ci */ 16262306a36Sopenharmony_cistatic inline u32 ssam_trace_get_request_tid(const struct ssh_packet *p) 16362306a36Sopenharmony_ci{ 16462306a36Sopenharmony_ci if (!p->data.ptr || p->data.len < SSH_COMMAND_MESSAGE_LENGTH(0)) 16562306a36Sopenharmony_ci return SSAM_SSH_TID_NOT_APPLICABLE; 16662306a36Sopenharmony_ci 16762306a36Sopenharmony_ci return get_unaligned_le16(&p->data.ptr[SSH_MSGOFFSET_COMMAND(tid)]); 16862306a36Sopenharmony_ci} 16962306a36Sopenharmony_ci 17062306a36Sopenharmony_ci/** 17162306a36Sopenharmony_ci * ssam_trace_get_request_sid() - Read the packet's request source ID. 17262306a36Sopenharmony_ci * @p: The packet. 17362306a36Sopenharmony_ci * 17462306a36Sopenharmony_ci * Return: Returns the packet's request source ID (SID) field if the packet 17562306a36Sopenharmony_ci * represents a request with command data, or %SSAM_SSH_TID_NOT_APPLICABLE 17662306a36Sopenharmony_ci * if not (e.g. flush request, control packet). 17762306a36Sopenharmony_ci */ 17862306a36Sopenharmony_cistatic inline u32 ssam_trace_get_request_sid(const struct ssh_packet *p) 17962306a36Sopenharmony_ci{ 18062306a36Sopenharmony_ci if (!p->data.ptr || p->data.len < SSH_COMMAND_MESSAGE_LENGTH(0)) 18162306a36Sopenharmony_ci return SSAM_SSH_TID_NOT_APPLICABLE; 18262306a36Sopenharmony_ci 18362306a36Sopenharmony_ci return get_unaligned_le16(&p->data.ptr[SSH_MSGOFFSET_COMMAND(sid)]); 18462306a36Sopenharmony_ci} 18562306a36Sopenharmony_ci 18662306a36Sopenharmony_ci/** 18762306a36Sopenharmony_ci * ssam_trace_get_request_tc() - Read the packet's request target category. 18862306a36Sopenharmony_ci * @p: The packet. 18962306a36Sopenharmony_ci * 19062306a36Sopenharmony_ci * Return: Returns the packet's request target category (TC) field if the 19162306a36Sopenharmony_ci * packet represents a request with command data, or %SSAM_SSH_TC_NOT_APPLICABLE 19262306a36Sopenharmony_ci * if not (e.g. flush request, control packet). 19362306a36Sopenharmony_ci */ 19462306a36Sopenharmony_cistatic inline u32 ssam_trace_get_request_tc(const struct ssh_packet *p) 19562306a36Sopenharmony_ci{ 19662306a36Sopenharmony_ci if (!p->data.ptr || p->data.len < SSH_COMMAND_MESSAGE_LENGTH(0)) 19762306a36Sopenharmony_ci return SSAM_SSH_TC_NOT_APPLICABLE; 19862306a36Sopenharmony_ci 19962306a36Sopenharmony_ci return get_unaligned_le16(&p->data.ptr[SSH_MSGOFFSET_COMMAND(tc)]); 20062306a36Sopenharmony_ci} 20162306a36Sopenharmony_ci 20262306a36Sopenharmony_ci#endif /* _SURFACE_AGGREGATOR_TRACE_HELPERS */ 20362306a36Sopenharmony_ci 20462306a36Sopenharmony_ci#define ssam_trace_get_command_field_u8(packet, field) \ 20562306a36Sopenharmony_ci ((!(packet) || (packet)->data.len < SSH_COMMAND_MESSAGE_LENGTH(0)) \ 20662306a36Sopenharmony_ci ? 0 : (packet)->data.ptr[SSH_MSGOFFSET_COMMAND(field)]) 20762306a36Sopenharmony_ci 20862306a36Sopenharmony_ci#define ssam_show_generic_u8_field(value) \ 20962306a36Sopenharmony_ci __print_symbolic(value, \ 21062306a36Sopenharmony_ci { SSAM_U8_FIELD_NOT_APPLICABLE, "N/A" } \ 21162306a36Sopenharmony_ci ) 21262306a36Sopenharmony_ci 21362306a36Sopenharmony_ci#define ssam_show_frame_type(ty) \ 21462306a36Sopenharmony_ci __print_symbolic(ty, \ 21562306a36Sopenharmony_ci { SSH_FRAME_TYPE_DATA_SEQ, "DSEQ" }, \ 21662306a36Sopenharmony_ci { SSH_FRAME_TYPE_DATA_NSQ, "DNSQ" }, \ 21762306a36Sopenharmony_ci { SSH_FRAME_TYPE_ACK, "ACK" }, \ 21862306a36Sopenharmony_ci { SSH_FRAME_TYPE_NAK, "NAK" } \ 21962306a36Sopenharmony_ci ) 22062306a36Sopenharmony_ci 22162306a36Sopenharmony_ci#define ssam_show_packet_type(type) \ 22262306a36Sopenharmony_ci __print_flags(flags & SSH_PACKET_FLAGS_TY_MASK, "", \ 22362306a36Sopenharmony_ci { BIT(SSH_PACKET_TY_FLUSH_BIT), "F" }, \ 22462306a36Sopenharmony_ci { BIT(SSH_PACKET_TY_SEQUENCED_BIT), "S" }, \ 22562306a36Sopenharmony_ci { BIT(SSH_PACKET_TY_BLOCKING_BIT), "B" } \ 22662306a36Sopenharmony_ci ) 22762306a36Sopenharmony_ci 22862306a36Sopenharmony_ci#define ssam_show_packet_state(state) \ 22962306a36Sopenharmony_ci __print_flags(flags & SSH_PACKET_FLAGS_SF_MASK, "", \ 23062306a36Sopenharmony_ci { BIT(SSH_PACKET_SF_LOCKED_BIT), "L" }, \ 23162306a36Sopenharmony_ci { BIT(SSH_PACKET_SF_QUEUED_BIT), "Q" }, \ 23262306a36Sopenharmony_ci { BIT(SSH_PACKET_SF_PENDING_BIT), "P" }, \ 23362306a36Sopenharmony_ci { BIT(SSH_PACKET_SF_TRANSMITTING_BIT), "S" }, \ 23462306a36Sopenharmony_ci { BIT(SSH_PACKET_SF_TRANSMITTED_BIT), "T" }, \ 23562306a36Sopenharmony_ci { BIT(SSH_PACKET_SF_ACKED_BIT), "A" }, \ 23662306a36Sopenharmony_ci { BIT(SSH_PACKET_SF_CANCELED_BIT), "C" }, \ 23762306a36Sopenharmony_ci { BIT(SSH_PACKET_SF_COMPLETED_BIT), "F" } \ 23862306a36Sopenharmony_ci ) 23962306a36Sopenharmony_ci 24062306a36Sopenharmony_ci#define ssam_show_packet_seq(seq) \ 24162306a36Sopenharmony_ci __print_symbolic(seq, \ 24262306a36Sopenharmony_ci { SSAM_SEQ_NOT_APPLICABLE, "N/A" } \ 24362306a36Sopenharmony_ci ) 24462306a36Sopenharmony_ci 24562306a36Sopenharmony_ci#define ssam_show_request_type(flags) \ 24662306a36Sopenharmony_ci __print_flags((flags) & SSH_REQUEST_FLAGS_TY_MASK, "", \ 24762306a36Sopenharmony_ci { BIT(SSH_REQUEST_TY_FLUSH_BIT), "F" }, \ 24862306a36Sopenharmony_ci { BIT(SSH_REQUEST_TY_HAS_RESPONSE_BIT), "R" } \ 24962306a36Sopenharmony_ci ) 25062306a36Sopenharmony_ci 25162306a36Sopenharmony_ci#define ssam_show_request_state(flags) \ 25262306a36Sopenharmony_ci __print_flags((flags) & SSH_REQUEST_FLAGS_SF_MASK, "", \ 25362306a36Sopenharmony_ci { BIT(SSH_REQUEST_SF_LOCKED_BIT), "L" }, \ 25462306a36Sopenharmony_ci { BIT(SSH_REQUEST_SF_QUEUED_BIT), "Q" }, \ 25562306a36Sopenharmony_ci { BIT(SSH_REQUEST_SF_PENDING_BIT), "P" }, \ 25662306a36Sopenharmony_ci { BIT(SSH_REQUEST_SF_TRANSMITTING_BIT), "S" }, \ 25762306a36Sopenharmony_ci { BIT(SSH_REQUEST_SF_TRANSMITTED_BIT), "T" }, \ 25862306a36Sopenharmony_ci { BIT(SSH_REQUEST_SF_RSPRCVD_BIT), "A" }, \ 25962306a36Sopenharmony_ci { BIT(SSH_REQUEST_SF_CANCELED_BIT), "C" }, \ 26062306a36Sopenharmony_ci { BIT(SSH_REQUEST_SF_COMPLETED_BIT), "F" } \ 26162306a36Sopenharmony_ci ) 26262306a36Sopenharmony_ci 26362306a36Sopenharmony_ci#define ssam_show_request_id(rqid) \ 26462306a36Sopenharmony_ci __print_symbolic(rqid, \ 26562306a36Sopenharmony_ci { SSAM_RQID_NOT_APPLICABLE, "N/A" } \ 26662306a36Sopenharmony_ci ) 26762306a36Sopenharmony_ci 26862306a36Sopenharmony_ci#define ssam_show_ssh_tid(tid) \ 26962306a36Sopenharmony_ci __print_symbolic(tid, \ 27062306a36Sopenharmony_ci { SSAM_SSH_TID_NOT_APPLICABLE, "N/A" }, \ 27162306a36Sopenharmony_ci { SSAM_SSH_TID_HOST, "Host" }, \ 27262306a36Sopenharmony_ci { SSAM_SSH_TID_SAM, "SAM" }, \ 27362306a36Sopenharmony_ci { SSAM_SSH_TID_KIP, "KIP" }, \ 27462306a36Sopenharmony_ci { SSAM_SSH_TID_DEBUG, "Debug" }, \ 27562306a36Sopenharmony_ci { SSAM_SSH_TID_SURFLINK, "SurfLink" } \ 27662306a36Sopenharmony_ci ) 27762306a36Sopenharmony_ci 27862306a36Sopenharmony_ci#define ssam_show_ssh_tc(tc) \ 27962306a36Sopenharmony_ci __print_symbolic(tc, \ 28062306a36Sopenharmony_ci { SSAM_SSH_TC_NOT_APPLICABLE, "N/A" }, \ 28162306a36Sopenharmony_ci { SSAM_SSH_TC_SAM, "SAM" }, \ 28262306a36Sopenharmony_ci { SSAM_SSH_TC_BAT, "BAT" }, \ 28362306a36Sopenharmony_ci { SSAM_SSH_TC_TMP, "TMP" }, \ 28462306a36Sopenharmony_ci { SSAM_SSH_TC_PMC, "PMC" }, \ 28562306a36Sopenharmony_ci { SSAM_SSH_TC_FAN, "FAN" }, \ 28662306a36Sopenharmony_ci { SSAM_SSH_TC_PoM, "PoM" }, \ 28762306a36Sopenharmony_ci { SSAM_SSH_TC_DBG, "DBG" }, \ 28862306a36Sopenharmony_ci { SSAM_SSH_TC_KBD, "KBD" }, \ 28962306a36Sopenharmony_ci { SSAM_SSH_TC_FWU, "FWU" }, \ 29062306a36Sopenharmony_ci { SSAM_SSH_TC_UNI, "UNI" }, \ 29162306a36Sopenharmony_ci { SSAM_SSH_TC_LPC, "LPC" }, \ 29262306a36Sopenharmony_ci { SSAM_SSH_TC_TCL, "TCL" }, \ 29362306a36Sopenharmony_ci { SSAM_SSH_TC_SFL, "SFL" }, \ 29462306a36Sopenharmony_ci { SSAM_SSH_TC_KIP, "KIP" }, \ 29562306a36Sopenharmony_ci { SSAM_SSH_TC_EXT, "EXT" }, \ 29662306a36Sopenharmony_ci { SSAM_SSH_TC_BLD, "BLD" }, \ 29762306a36Sopenharmony_ci { SSAM_SSH_TC_BAS, "BAS" }, \ 29862306a36Sopenharmony_ci { SSAM_SSH_TC_SEN, "SEN" }, \ 29962306a36Sopenharmony_ci { SSAM_SSH_TC_SRQ, "SRQ" }, \ 30062306a36Sopenharmony_ci { SSAM_SSH_TC_MCU, "MCU" }, \ 30162306a36Sopenharmony_ci { SSAM_SSH_TC_HID, "HID" }, \ 30262306a36Sopenharmony_ci { SSAM_SSH_TC_TCH, "TCH" }, \ 30362306a36Sopenharmony_ci { SSAM_SSH_TC_BKL, "BKL" }, \ 30462306a36Sopenharmony_ci { SSAM_SSH_TC_TAM, "TAM" }, \ 30562306a36Sopenharmony_ci { SSAM_SSH_TC_ACC0, "ACC0" }, \ 30662306a36Sopenharmony_ci { SSAM_SSH_TC_UFI, "UFI" }, \ 30762306a36Sopenharmony_ci { SSAM_SSH_TC_USC, "USC" }, \ 30862306a36Sopenharmony_ci { SSAM_SSH_TC_PEN, "PEN" }, \ 30962306a36Sopenharmony_ci { SSAM_SSH_TC_VID, "VID" }, \ 31062306a36Sopenharmony_ci { SSAM_SSH_TC_AUD, "AUD" }, \ 31162306a36Sopenharmony_ci { SSAM_SSH_TC_SMC, "SMC" }, \ 31262306a36Sopenharmony_ci { SSAM_SSH_TC_KPD, "KPD" }, \ 31362306a36Sopenharmony_ci { SSAM_SSH_TC_REG, "REG" }, \ 31462306a36Sopenharmony_ci { SSAM_SSH_TC_SPT, "SPT" }, \ 31562306a36Sopenharmony_ci { SSAM_SSH_TC_SYS, "SYS" }, \ 31662306a36Sopenharmony_ci { SSAM_SSH_TC_ACC1, "ACC1" }, \ 31762306a36Sopenharmony_ci { SSAM_SSH_TC_SHB, "SMB" }, \ 31862306a36Sopenharmony_ci { SSAM_SSH_TC_POS, "POS" } \ 31962306a36Sopenharmony_ci ) 32062306a36Sopenharmony_ci 32162306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ssam_frame_class, 32262306a36Sopenharmony_ci TP_PROTO(const struct ssh_frame *frame), 32362306a36Sopenharmony_ci 32462306a36Sopenharmony_ci TP_ARGS(frame), 32562306a36Sopenharmony_ci 32662306a36Sopenharmony_ci TP_STRUCT__entry( 32762306a36Sopenharmony_ci __field(u8, type) 32862306a36Sopenharmony_ci __field(u8, seq) 32962306a36Sopenharmony_ci __field(u16, len) 33062306a36Sopenharmony_ci ), 33162306a36Sopenharmony_ci 33262306a36Sopenharmony_ci TP_fast_assign( 33362306a36Sopenharmony_ci __entry->type = frame->type; 33462306a36Sopenharmony_ci __entry->seq = frame->seq; 33562306a36Sopenharmony_ci __entry->len = get_unaligned_le16(&frame->len); 33662306a36Sopenharmony_ci ), 33762306a36Sopenharmony_ci 33862306a36Sopenharmony_ci TP_printk("ty=%s, seq=%#04x, len=%u", 33962306a36Sopenharmony_ci ssam_show_frame_type(__entry->type), 34062306a36Sopenharmony_ci __entry->seq, 34162306a36Sopenharmony_ci __entry->len 34262306a36Sopenharmony_ci ) 34362306a36Sopenharmony_ci); 34462306a36Sopenharmony_ci 34562306a36Sopenharmony_ci#define DEFINE_SSAM_FRAME_EVENT(name) \ 34662306a36Sopenharmony_ci DEFINE_EVENT(ssam_frame_class, ssam_##name, \ 34762306a36Sopenharmony_ci TP_PROTO(const struct ssh_frame *frame), \ 34862306a36Sopenharmony_ci TP_ARGS(frame) \ 34962306a36Sopenharmony_ci ) 35062306a36Sopenharmony_ci 35162306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ssam_command_class, 35262306a36Sopenharmony_ci TP_PROTO(const struct ssh_command *cmd, u16 len), 35362306a36Sopenharmony_ci 35462306a36Sopenharmony_ci TP_ARGS(cmd, len), 35562306a36Sopenharmony_ci 35662306a36Sopenharmony_ci TP_STRUCT__entry( 35762306a36Sopenharmony_ci __field(u16, rqid) 35862306a36Sopenharmony_ci __field(u16, len) 35962306a36Sopenharmony_ci __field(u8, tid) 36062306a36Sopenharmony_ci __field(u8, sid) 36162306a36Sopenharmony_ci __field(u8, tc) 36262306a36Sopenharmony_ci __field(u8, cid) 36362306a36Sopenharmony_ci __field(u8, iid) 36462306a36Sopenharmony_ci ), 36562306a36Sopenharmony_ci 36662306a36Sopenharmony_ci TP_fast_assign( 36762306a36Sopenharmony_ci __entry->rqid = get_unaligned_le16(&cmd->rqid); 36862306a36Sopenharmony_ci __entry->tid = cmd->tid; 36962306a36Sopenharmony_ci __entry->sid = cmd->sid; 37062306a36Sopenharmony_ci __entry->tc = cmd->tc; 37162306a36Sopenharmony_ci __entry->cid = cmd->cid; 37262306a36Sopenharmony_ci __entry->iid = cmd->iid; 37362306a36Sopenharmony_ci __entry->len = len; 37462306a36Sopenharmony_ci ), 37562306a36Sopenharmony_ci 37662306a36Sopenharmony_ci TP_printk("rqid=%#06x, tid=%s, sid=%s, tc=%s, cid=%#04x, iid=%#04x, len=%u", 37762306a36Sopenharmony_ci __entry->rqid, 37862306a36Sopenharmony_ci ssam_show_ssh_tid(__entry->tid), 37962306a36Sopenharmony_ci ssam_show_ssh_tid(__entry->sid), 38062306a36Sopenharmony_ci ssam_show_ssh_tc(__entry->tc), 38162306a36Sopenharmony_ci __entry->cid, 38262306a36Sopenharmony_ci __entry->iid, 38362306a36Sopenharmony_ci __entry->len 38462306a36Sopenharmony_ci ) 38562306a36Sopenharmony_ci); 38662306a36Sopenharmony_ci 38762306a36Sopenharmony_ci#define DEFINE_SSAM_COMMAND_EVENT(name) \ 38862306a36Sopenharmony_ci DEFINE_EVENT(ssam_command_class, ssam_##name, \ 38962306a36Sopenharmony_ci TP_PROTO(const struct ssh_command *cmd, u16 len), \ 39062306a36Sopenharmony_ci TP_ARGS(cmd, len) \ 39162306a36Sopenharmony_ci ) 39262306a36Sopenharmony_ci 39362306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ssam_packet_class, 39462306a36Sopenharmony_ci TP_PROTO(const struct ssh_packet *packet), 39562306a36Sopenharmony_ci 39662306a36Sopenharmony_ci TP_ARGS(packet), 39762306a36Sopenharmony_ci 39862306a36Sopenharmony_ci TP_STRUCT__entry( 39962306a36Sopenharmony_ci __field(unsigned long, state) 40062306a36Sopenharmony_ci __array(char, uid, SSAM_PTR_UID_LEN) 40162306a36Sopenharmony_ci __field(u8, priority) 40262306a36Sopenharmony_ci __field(u16, length) 40362306a36Sopenharmony_ci __field(u16, seq) 40462306a36Sopenharmony_ci ), 40562306a36Sopenharmony_ci 40662306a36Sopenharmony_ci TP_fast_assign( 40762306a36Sopenharmony_ci __entry->state = READ_ONCE(packet->state); 40862306a36Sopenharmony_ci ssam_trace_ptr_uid(packet, __entry->uid); 40962306a36Sopenharmony_ci __entry->priority = READ_ONCE(packet->priority); 41062306a36Sopenharmony_ci __entry->length = packet->data.len; 41162306a36Sopenharmony_ci __entry->seq = ssam_trace_get_packet_seq(packet); 41262306a36Sopenharmony_ci ), 41362306a36Sopenharmony_ci 41462306a36Sopenharmony_ci TP_printk("uid=%s, seq=%s, ty=%s, pri=%#04x, len=%u, sta=%s", 41562306a36Sopenharmony_ci __entry->uid, 41662306a36Sopenharmony_ci ssam_show_packet_seq(__entry->seq), 41762306a36Sopenharmony_ci ssam_show_packet_type(__entry->state), 41862306a36Sopenharmony_ci __entry->priority, 41962306a36Sopenharmony_ci __entry->length, 42062306a36Sopenharmony_ci ssam_show_packet_state(__entry->state) 42162306a36Sopenharmony_ci ) 42262306a36Sopenharmony_ci); 42362306a36Sopenharmony_ci 42462306a36Sopenharmony_ci#define DEFINE_SSAM_PACKET_EVENT(name) \ 42562306a36Sopenharmony_ci DEFINE_EVENT(ssam_packet_class, ssam_##name, \ 42662306a36Sopenharmony_ci TP_PROTO(const struct ssh_packet *packet), \ 42762306a36Sopenharmony_ci TP_ARGS(packet) \ 42862306a36Sopenharmony_ci ) 42962306a36Sopenharmony_ci 43062306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ssam_packet_status_class, 43162306a36Sopenharmony_ci TP_PROTO(const struct ssh_packet *packet, int status), 43262306a36Sopenharmony_ci 43362306a36Sopenharmony_ci TP_ARGS(packet, status), 43462306a36Sopenharmony_ci 43562306a36Sopenharmony_ci TP_STRUCT__entry( 43662306a36Sopenharmony_ci __field(unsigned long, state) 43762306a36Sopenharmony_ci __field(int, status) 43862306a36Sopenharmony_ci __array(char, uid, SSAM_PTR_UID_LEN) 43962306a36Sopenharmony_ci __field(u8, priority) 44062306a36Sopenharmony_ci __field(u16, length) 44162306a36Sopenharmony_ci __field(u16, seq) 44262306a36Sopenharmony_ci ), 44362306a36Sopenharmony_ci 44462306a36Sopenharmony_ci TP_fast_assign( 44562306a36Sopenharmony_ci __entry->state = READ_ONCE(packet->state); 44662306a36Sopenharmony_ci __entry->status = status; 44762306a36Sopenharmony_ci ssam_trace_ptr_uid(packet, __entry->uid); 44862306a36Sopenharmony_ci __entry->priority = READ_ONCE(packet->priority); 44962306a36Sopenharmony_ci __entry->length = packet->data.len; 45062306a36Sopenharmony_ci __entry->seq = ssam_trace_get_packet_seq(packet); 45162306a36Sopenharmony_ci ), 45262306a36Sopenharmony_ci 45362306a36Sopenharmony_ci TP_printk("uid=%s, seq=%s, ty=%s, pri=%#04x, len=%u, sta=%s, status=%d", 45462306a36Sopenharmony_ci __entry->uid, 45562306a36Sopenharmony_ci ssam_show_packet_seq(__entry->seq), 45662306a36Sopenharmony_ci ssam_show_packet_type(__entry->state), 45762306a36Sopenharmony_ci __entry->priority, 45862306a36Sopenharmony_ci __entry->length, 45962306a36Sopenharmony_ci ssam_show_packet_state(__entry->state), 46062306a36Sopenharmony_ci __entry->status 46162306a36Sopenharmony_ci ) 46262306a36Sopenharmony_ci); 46362306a36Sopenharmony_ci 46462306a36Sopenharmony_ci#define DEFINE_SSAM_PACKET_STATUS_EVENT(name) \ 46562306a36Sopenharmony_ci DEFINE_EVENT(ssam_packet_status_class, ssam_##name, \ 46662306a36Sopenharmony_ci TP_PROTO(const struct ssh_packet *packet, int status), \ 46762306a36Sopenharmony_ci TP_ARGS(packet, status) \ 46862306a36Sopenharmony_ci ) 46962306a36Sopenharmony_ci 47062306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ssam_request_class, 47162306a36Sopenharmony_ci TP_PROTO(const struct ssh_request *request), 47262306a36Sopenharmony_ci 47362306a36Sopenharmony_ci TP_ARGS(request), 47462306a36Sopenharmony_ci 47562306a36Sopenharmony_ci TP_STRUCT__entry( 47662306a36Sopenharmony_ci __field(unsigned long, state) 47762306a36Sopenharmony_ci __field(u32, rqid) 47862306a36Sopenharmony_ci __array(char, uid, SSAM_PTR_UID_LEN) 47962306a36Sopenharmony_ci __field(u8, tc) 48062306a36Sopenharmony_ci __field(u16, cid) 48162306a36Sopenharmony_ci __field(u16, iid) 48262306a36Sopenharmony_ci __field(u8, tid) 48362306a36Sopenharmony_ci __field(u8, sid) 48462306a36Sopenharmony_ci ), 48562306a36Sopenharmony_ci 48662306a36Sopenharmony_ci TP_fast_assign( 48762306a36Sopenharmony_ci const struct ssh_packet *p = &request->packet; 48862306a36Sopenharmony_ci 48962306a36Sopenharmony_ci /* Use packet for UID so we can match requests to packets. */ 49062306a36Sopenharmony_ci __entry->state = READ_ONCE(request->state); 49162306a36Sopenharmony_ci __entry->rqid = ssam_trace_get_request_id(p); 49262306a36Sopenharmony_ci ssam_trace_ptr_uid(p, __entry->uid); 49362306a36Sopenharmony_ci __entry->tid = ssam_trace_get_request_tid(p); 49462306a36Sopenharmony_ci __entry->sid = ssam_trace_get_request_sid(p); 49562306a36Sopenharmony_ci __entry->tc = ssam_trace_get_request_tc(p); 49662306a36Sopenharmony_ci __entry->cid = ssam_trace_get_command_field_u8(p, cid); 49762306a36Sopenharmony_ci __entry->iid = ssam_trace_get_command_field_u8(p, iid); 49862306a36Sopenharmony_ci ), 49962306a36Sopenharmony_ci 50062306a36Sopenharmony_ci TP_printk("uid=%s, rqid=%s, ty=%s, sta=%s, tid=%s, sid=%s, tc=%s, cid=%s, iid=%s", 50162306a36Sopenharmony_ci __entry->uid, 50262306a36Sopenharmony_ci ssam_show_request_id(__entry->rqid), 50362306a36Sopenharmony_ci ssam_show_request_type(__entry->state), 50462306a36Sopenharmony_ci ssam_show_request_state(__entry->state), 50562306a36Sopenharmony_ci ssam_show_ssh_tid(__entry->tid), 50662306a36Sopenharmony_ci ssam_show_ssh_tid(__entry->sid), 50762306a36Sopenharmony_ci ssam_show_ssh_tc(__entry->tc), 50862306a36Sopenharmony_ci ssam_show_generic_u8_field(__entry->cid), 50962306a36Sopenharmony_ci ssam_show_generic_u8_field(__entry->iid) 51062306a36Sopenharmony_ci ) 51162306a36Sopenharmony_ci); 51262306a36Sopenharmony_ci 51362306a36Sopenharmony_ci#define DEFINE_SSAM_REQUEST_EVENT(name) \ 51462306a36Sopenharmony_ci DEFINE_EVENT(ssam_request_class, ssam_##name, \ 51562306a36Sopenharmony_ci TP_PROTO(const struct ssh_request *request), \ 51662306a36Sopenharmony_ci TP_ARGS(request) \ 51762306a36Sopenharmony_ci ) 51862306a36Sopenharmony_ci 51962306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ssam_request_status_class, 52062306a36Sopenharmony_ci TP_PROTO(const struct ssh_request *request, int status), 52162306a36Sopenharmony_ci 52262306a36Sopenharmony_ci TP_ARGS(request, status), 52362306a36Sopenharmony_ci 52462306a36Sopenharmony_ci TP_STRUCT__entry( 52562306a36Sopenharmony_ci __field(unsigned long, state) 52662306a36Sopenharmony_ci __field(u32, rqid) 52762306a36Sopenharmony_ci __field(int, status) 52862306a36Sopenharmony_ci __array(char, uid, SSAM_PTR_UID_LEN) 52962306a36Sopenharmony_ci __field(u8, tc) 53062306a36Sopenharmony_ci __field(u16, cid) 53162306a36Sopenharmony_ci __field(u16, iid) 53262306a36Sopenharmony_ci __field(u8, tid) 53362306a36Sopenharmony_ci __field(u8, sid) 53462306a36Sopenharmony_ci ), 53562306a36Sopenharmony_ci 53662306a36Sopenharmony_ci TP_fast_assign( 53762306a36Sopenharmony_ci const struct ssh_packet *p = &request->packet; 53862306a36Sopenharmony_ci 53962306a36Sopenharmony_ci /* Use packet for UID so we can match requests to packets. */ 54062306a36Sopenharmony_ci __entry->state = READ_ONCE(request->state); 54162306a36Sopenharmony_ci __entry->rqid = ssam_trace_get_request_id(p); 54262306a36Sopenharmony_ci __entry->status = status; 54362306a36Sopenharmony_ci ssam_trace_ptr_uid(p, __entry->uid); 54462306a36Sopenharmony_ci __entry->tid = ssam_trace_get_request_tid(p); 54562306a36Sopenharmony_ci __entry->sid = ssam_trace_get_request_sid(p); 54662306a36Sopenharmony_ci __entry->tc = ssam_trace_get_request_tc(p); 54762306a36Sopenharmony_ci __entry->cid = ssam_trace_get_command_field_u8(p, cid); 54862306a36Sopenharmony_ci __entry->iid = ssam_trace_get_command_field_u8(p, iid); 54962306a36Sopenharmony_ci ), 55062306a36Sopenharmony_ci 55162306a36Sopenharmony_ci TP_printk("uid=%s, rqid=%s, ty=%s, sta=%s, tid=%s, sid=%s, tc=%s, cid=%s, iid=%s, status=%d", 55262306a36Sopenharmony_ci __entry->uid, 55362306a36Sopenharmony_ci ssam_show_request_id(__entry->rqid), 55462306a36Sopenharmony_ci ssam_show_request_type(__entry->state), 55562306a36Sopenharmony_ci ssam_show_request_state(__entry->state), 55662306a36Sopenharmony_ci ssam_show_ssh_tid(__entry->tid), 55762306a36Sopenharmony_ci ssam_show_ssh_tid(__entry->sid), 55862306a36Sopenharmony_ci ssam_show_ssh_tc(__entry->tc), 55962306a36Sopenharmony_ci ssam_show_generic_u8_field(__entry->cid), 56062306a36Sopenharmony_ci ssam_show_generic_u8_field(__entry->iid), 56162306a36Sopenharmony_ci __entry->status 56262306a36Sopenharmony_ci ) 56362306a36Sopenharmony_ci); 56462306a36Sopenharmony_ci 56562306a36Sopenharmony_ci#define DEFINE_SSAM_REQUEST_STATUS_EVENT(name) \ 56662306a36Sopenharmony_ci DEFINE_EVENT(ssam_request_status_class, ssam_##name, \ 56762306a36Sopenharmony_ci TP_PROTO(const struct ssh_request *request, int status),\ 56862306a36Sopenharmony_ci TP_ARGS(request, status) \ 56962306a36Sopenharmony_ci ) 57062306a36Sopenharmony_ci 57162306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ssam_alloc_class, 57262306a36Sopenharmony_ci TP_PROTO(void *ptr, size_t len), 57362306a36Sopenharmony_ci 57462306a36Sopenharmony_ci TP_ARGS(ptr, len), 57562306a36Sopenharmony_ci 57662306a36Sopenharmony_ci TP_STRUCT__entry( 57762306a36Sopenharmony_ci __field(size_t, len) 57862306a36Sopenharmony_ci __array(char, uid, SSAM_PTR_UID_LEN) 57962306a36Sopenharmony_ci ), 58062306a36Sopenharmony_ci 58162306a36Sopenharmony_ci TP_fast_assign( 58262306a36Sopenharmony_ci __entry->len = len; 58362306a36Sopenharmony_ci ssam_trace_ptr_uid(ptr, __entry->uid); 58462306a36Sopenharmony_ci ), 58562306a36Sopenharmony_ci 58662306a36Sopenharmony_ci TP_printk("uid=%s, len=%zu", __entry->uid, __entry->len) 58762306a36Sopenharmony_ci); 58862306a36Sopenharmony_ci 58962306a36Sopenharmony_ci#define DEFINE_SSAM_ALLOC_EVENT(name) \ 59062306a36Sopenharmony_ci DEFINE_EVENT(ssam_alloc_class, ssam_##name, \ 59162306a36Sopenharmony_ci TP_PROTO(void *ptr, size_t len), \ 59262306a36Sopenharmony_ci TP_ARGS(ptr, len) \ 59362306a36Sopenharmony_ci ) 59462306a36Sopenharmony_ci 59562306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ssam_free_class, 59662306a36Sopenharmony_ci TP_PROTO(void *ptr), 59762306a36Sopenharmony_ci 59862306a36Sopenharmony_ci TP_ARGS(ptr), 59962306a36Sopenharmony_ci 60062306a36Sopenharmony_ci TP_STRUCT__entry( 60162306a36Sopenharmony_ci __array(char, uid, SSAM_PTR_UID_LEN) 60262306a36Sopenharmony_ci ), 60362306a36Sopenharmony_ci 60462306a36Sopenharmony_ci TP_fast_assign( 60562306a36Sopenharmony_ci ssam_trace_ptr_uid(ptr, __entry->uid); 60662306a36Sopenharmony_ci ), 60762306a36Sopenharmony_ci 60862306a36Sopenharmony_ci TP_printk("uid=%s", __entry->uid) 60962306a36Sopenharmony_ci); 61062306a36Sopenharmony_ci 61162306a36Sopenharmony_ci#define DEFINE_SSAM_FREE_EVENT(name) \ 61262306a36Sopenharmony_ci DEFINE_EVENT(ssam_free_class, ssam_##name, \ 61362306a36Sopenharmony_ci TP_PROTO(void *ptr), \ 61462306a36Sopenharmony_ci TP_ARGS(ptr) \ 61562306a36Sopenharmony_ci ) 61662306a36Sopenharmony_ci 61762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ssam_pending_class, 61862306a36Sopenharmony_ci TP_PROTO(unsigned int pending), 61962306a36Sopenharmony_ci 62062306a36Sopenharmony_ci TP_ARGS(pending), 62162306a36Sopenharmony_ci 62262306a36Sopenharmony_ci TP_STRUCT__entry( 62362306a36Sopenharmony_ci __field(unsigned int, pending) 62462306a36Sopenharmony_ci ), 62562306a36Sopenharmony_ci 62662306a36Sopenharmony_ci TP_fast_assign( 62762306a36Sopenharmony_ci __entry->pending = pending; 62862306a36Sopenharmony_ci ), 62962306a36Sopenharmony_ci 63062306a36Sopenharmony_ci TP_printk("pending=%u", __entry->pending) 63162306a36Sopenharmony_ci); 63262306a36Sopenharmony_ci 63362306a36Sopenharmony_ci#define DEFINE_SSAM_PENDING_EVENT(name) \ 63462306a36Sopenharmony_ci DEFINE_EVENT(ssam_pending_class, ssam_##name, \ 63562306a36Sopenharmony_ci TP_PROTO(unsigned int pending), \ 63662306a36Sopenharmony_ci TP_ARGS(pending) \ 63762306a36Sopenharmony_ci ) 63862306a36Sopenharmony_ci 63962306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ssam_data_class, 64062306a36Sopenharmony_ci TP_PROTO(size_t length), 64162306a36Sopenharmony_ci 64262306a36Sopenharmony_ci TP_ARGS(length), 64362306a36Sopenharmony_ci 64462306a36Sopenharmony_ci TP_STRUCT__entry( 64562306a36Sopenharmony_ci __field(size_t, length) 64662306a36Sopenharmony_ci ), 64762306a36Sopenharmony_ci 64862306a36Sopenharmony_ci TP_fast_assign( 64962306a36Sopenharmony_ci __entry->length = length; 65062306a36Sopenharmony_ci ), 65162306a36Sopenharmony_ci 65262306a36Sopenharmony_ci TP_printk("length=%zu", __entry->length) 65362306a36Sopenharmony_ci); 65462306a36Sopenharmony_ci 65562306a36Sopenharmony_ci#define DEFINE_SSAM_DATA_EVENT(name) \ 65662306a36Sopenharmony_ci DEFINE_EVENT(ssam_data_class, ssam_##name, \ 65762306a36Sopenharmony_ci TP_PROTO(size_t length), \ 65862306a36Sopenharmony_ci TP_ARGS(length) \ 65962306a36Sopenharmony_ci ) 66062306a36Sopenharmony_ci 66162306a36Sopenharmony_ciDEFINE_SSAM_FRAME_EVENT(rx_frame_received); 66262306a36Sopenharmony_ciDEFINE_SSAM_COMMAND_EVENT(rx_response_received); 66362306a36Sopenharmony_ciDEFINE_SSAM_COMMAND_EVENT(rx_event_received); 66462306a36Sopenharmony_ci 66562306a36Sopenharmony_ciDEFINE_SSAM_PACKET_EVENT(packet_release); 66662306a36Sopenharmony_ciDEFINE_SSAM_PACKET_EVENT(packet_submit); 66762306a36Sopenharmony_ciDEFINE_SSAM_PACKET_EVENT(packet_resubmit); 66862306a36Sopenharmony_ciDEFINE_SSAM_PACKET_EVENT(packet_timeout); 66962306a36Sopenharmony_ciDEFINE_SSAM_PACKET_EVENT(packet_cancel); 67062306a36Sopenharmony_ciDEFINE_SSAM_PACKET_STATUS_EVENT(packet_complete); 67162306a36Sopenharmony_ciDEFINE_SSAM_PENDING_EVENT(ptl_timeout_reap); 67262306a36Sopenharmony_ci 67362306a36Sopenharmony_ciDEFINE_SSAM_REQUEST_EVENT(request_submit); 67462306a36Sopenharmony_ciDEFINE_SSAM_REQUEST_EVENT(request_timeout); 67562306a36Sopenharmony_ciDEFINE_SSAM_REQUEST_EVENT(request_cancel); 67662306a36Sopenharmony_ciDEFINE_SSAM_REQUEST_STATUS_EVENT(request_complete); 67762306a36Sopenharmony_ciDEFINE_SSAM_PENDING_EVENT(rtl_timeout_reap); 67862306a36Sopenharmony_ci 67962306a36Sopenharmony_ciDEFINE_SSAM_PACKET_EVENT(ei_tx_drop_ack_packet); 68062306a36Sopenharmony_ciDEFINE_SSAM_PACKET_EVENT(ei_tx_drop_nak_packet); 68162306a36Sopenharmony_ciDEFINE_SSAM_PACKET_EVENT(ei_tx_drop_dsq_packet); 68262306a36Sopenharmony_ciDEFINE_SSAM_PACKET_STATUS_EVENT(ei_tx_fail_write); 68362306a36Sopenharmony_ciDEFINE_SSAM_PACKET_EVENT(ei_tx_corrupt_data); 68462306a36Sopenharmony_ciDEFINE_SSAM_DATA_EVENT(ei_rx_corrupt_syn); 68562306a36Sopenharmony_ciDEFINE_SSAM_FRAME_EVENT(ei_rx_corrupt_data); 68662306a36Sopenharmony_ciDEFINE_SSAM_REQUEST_EVENT(ei_rx_drop_response); 68762306a36Sopenharmony_ci 68862306a36Sopenharmony_ciDEFINE_SSAM_ALLOC_EVENT(ctrl_packet_alloc); 68962306a36Sopenharmony_ciDEFINE_SSAM_FREE_EVENT(ctrl_packet_free); 69062306a36Sopenharmony_ci 69162306a36Sopenharmony_ciDEFINE_SSAM_ALLOC_EVENT(event_item_alloc); 69262306a36Sopenharmony_ciDEFINE_SSAM_FREE_EVENT(event_item_free); 69362306a36Sopenharmony_ci 69462306a36Sopenharmony_ci#endif /* _SURFACE_AGGREGATOR_TRACE_H */ 69562306a36Sopenharmony_ci 69662306a36Sopenharmony_ci/* This part must be outside protection */ 69762306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH 69862306a36Sopenharmony_ci#undef TRACE_INCLUDE_FILE 69962306a36Sopenharmony_ci 70062306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH . 70162306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE trace 70262306a36Sopenharmony_ci 70362306a36Sopenharmony_ci#include <trace/define_trace.h> 704