lkml.org 
[lkml]   [2023]   [Jan]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v8 08/17] include: trace: Add platform and channel instance references
    Date
    Add channel and platform instance indentifier to SCMI message dump traces
    in order to easily associate message flows to specific transport channels.

    Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
    ---
    drivers/firmware/arm_scmi/driver.c | 20 ++++++++++++--------
    include/trace/events/scmi.h | 18 ++++++++++++------
    2 files changed, 24 insertions(+), 14 deletions(-)

    diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c
    index af34324e923b..c765d0c51dc5 100644
    --- a/drivers/firmware/arm_scmi/driver.c
    +++ b/drivers/firmware/arm_scmi/driver.c
    @@ -860,9 +860,9 @@ static void scmi_handle_notification(struct scmi_chan_info *cinfo,
    info->desc->ops->fetch_notification(cinfo, info->desc->max_msg_size,
    xfer);

    - trace_scmi_msg_dump(xfer->hdr.protocol_id, xfer->hdr.id, "NOTI",
    - xfer->hdr.seq, xfer->hdr.status,
    - xfer->rx.buf, xfer->rx.len);
    + trace_scmi_msg_dump(info->id, cinfo->id, xfer->hdr.protocol_id,
    + xfer->hdr.id, "NOTI", xfer->hdr.seq,
    + xfer->hdr.status, xfer->rx.buf, xfer->rx.len);

    scmi_notify(cinfo->handle, xfer->hdr.protocol_id,
    xfer->hdr.id, xfer->rx.buf, xfer->rx.len, ts);
    @@ -898,7 +898,8 @@ static void scmi_handle_response(struct scmi_chan_info *cinfo,
    smp_store_mb(xfer->priv, priv);
    info->desc->ops->fetch_response(cinfo, xfer);

    - trace_scmi_msg_dump(xfer->hdr.protocol_id, xfer->hdr.id,
    + trace_scmi_msg_dump(info->id, cinfo->id, xfer->hdr.protocol_id,
    + xfer->hdr.id,
    xfer->hdr.type == MSG_TYPE_DELAYED_RESP ?
    "DLYD" : "RESP",
    xfer->hdr.seq, xfer->hdr.status,
    @@ -1008,6 +1009,8 @@ static int scmi_wait_for_reply(struct device *dev, const struct scmi_desc *desc,

    if (!ret) {
    unsigned long flags;
    + struct scmi_info *info =
    + handle_to_scmi_info(cinfo->handle);

    /*
    * Do not fetch_response if an out-of-order delayed
    @@ -1021,7 +1024,8 @@ static int scmi_wait_for_reply(struct device *dev, const struct scmi_desc *desc,
    spin_unlock_irqrestore(&xfer->lock, flags);

    /* Trace polled replies. */
    - trace_scmi_msg_dump(xfer->hdr.protocol_id, xfer->hdr.id,
    + trace_scmi_msg_dump(info->id, cinfo->id,
    + xfer->hdr.protocol_id, xfer->hdr.id,
    "RESP",
    xfer->hdr.seq, xfer->hdr.status,
    xfer->rx.buf, xfer->rx.len);
    @@ -1157,9 +1161,9 @@ static int do_xfer(const struct scmi_protocol_handle *ph,
    return ret;
    }

    - trace_scmi_msg_dump(xfer->hdr.protocol_id, xfer->hdr.id, "CMND",
    - xfer->hdr.seq, xfer->hdr.status,
    - xfer->tx.buf, xfer->tx.len);
    + trace_scmi_msg_dump(info->id, cinfo->id, xfer->hdr.protocol_id,
    + xfer->hdr.id, "CMND", xfer->hdr.seq,
    + xfer->hdr.status, xfer->tx.buf, xfer->tx.len);

    ret = scmi_wait_for_message_response(cinfo, xfer);
    if (!ret && xfer->hdr.status)
    diff --git a/include/trace/events/scmi.h b/include/trace/events/scmi.h
    index f160d68f961d..422c1ad9484d 100644
    --- a/include/trace/events/scmi.h
    +++ b/include/trace/events/scmi.h
    @@ -139,11 +139,15 @@ TRACE_EVENT(scmi_rx_done,
    );

    TRACE_EVENT(scmi_msg_dump,
    - TP_PROTO(u8 protocol_id, u8 msg_id, unsigned char *tag, u16 seq,
    - int status, void *buf, size_t len),
    - TP_ARGS(protocol_id, msg_id, tag, seq, status, buf, len),
    + TP_PROTO(int id, u8 channel_id, u8 protocol_id, u8 msg_id,
    + unsigned char *tag, u16 seq, int status,
    + void *buf, size_t len),
    + TP_ARGS(id, channel_id, protocol_id, msg_id, tag, seq, status,
    + buf, len),

    TP_STRUCT__entry(
    + __field(int, id)
    + __field(u8, channel_id)
    __field(u8, protocol_id)
    __field(u8, msg_id)
    __array(char, tag, 5)
    @@ -154,6 +158,8 @@ TRACE_EVENT(scmi_msg_dump,
    ),

    TP_fast_assign(
    + __entry->id = id;
    + __entry->channel_id = channel_id;
    __entry->protocol_id = protocol_id;
    __entry->msg_id = msg_id;
    strscpy(__entry->tag, tag, 5);
    @@ -163,9 +169,9 @@ TRACE_EVENT(scmi_msg_dump,
    memcpy(__get_dynamic_array(cmd), buf, __entry->len);
    ),

    - TP_printk("pt=%02X t=%s msg_id=%02X seq=%04X s=%d pyld=%s",
    - __entry->protocol_id, __entry->tag, __entry->msg_id,
    - __entry->seq, __entry->status,
    + TP_printk("id=%d ch=%02X pt=%02X t=%s msg_id=%02X seq=%04X s=%d pyld=%s",
    + __entry->id, __entry->channel_id, __entry->protocol_id,
    + __entry->tag, __entry->msg_id, __entry->seq, __entry->status,
    __print_hex_str(__get_dynamic_array(cmd), __entry->len))
    );
    #endif /* _TRACE_SCMI_H */
    --
    2.34.1
    \
     
     \ /
      Last update: 2023-03-26 23:45    [W:3.126 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site