firmware: arm_scmi: Use signed integer to report transfer status
authorSudeep Holla <sudeep.holla@arm.com>
Tue, 9 Jun 2020 13:45:03 +0000 (14:45 +0100)
committerSudeep Holla <sudeep.holla@arm.com>
Tue, 30 Jun 2020 13:07:08 +0000 (14:07 +0100)
Currently the trace event 'scmi_xfer_end' reports the status of the
transfer using the unsigned status field read from the firmware which
may not be easy to interpret. It may also miss to emit any timeouts
that happen in the driver resulting in emitting garbage in the status
field in those scenarios.

Let us use signed integer so that error values are emitted out after
they are mapped from firmware error formats to standard linux error
codes. While at this, also include any timeouts in the driver itself.

Link: https://lore.kernel.org/r/20200609134503.55860-1-sudeep.holla@arm.com
Cc: Jim Quinlan <james.quinlan@broadcom.com>
Cc: Lukasz Luba <lukasz.luba@arm.com>
Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
drivers/firmware/arm_scmi/driver.c
include/trace/events/scmi.h

index 7483cac..136acbe 100644 (file)
@@ -392,8 +392,7 @@ int scmi_do_xfer(const struct scmi_handle *handle, struct scmi_xfer *xfer)
                info->desc->ops->mark_txdone(cinfo, ret);
 
        trace_scmi_xfer_end(xfer->transfer_id, xfer->hdr.id,
-                           xfer->hdr.protocol_id, xfer->hdr.seq,
-                           xfer->hdr.status);
+                           xfer->hdr.protocol_id, xfer->hdr.seq, ret);
 
        return ret;
 }
index f076c43..f3a4b4d 100644 (file)
@@ -35,7 +35,7 @@ TRACE_EVENT(scmi_xfer_begin,
 
 TRACE_EVENT(scmi_xfer_end,
        TP_PROTO(int transfer_id, u8 msg_id, u8 protocol_id, u16 seq,
-                u32 status),
+                int status),
        TP_ARGS(transfer_id, msg_id, protocol_id, seq, status),
 
        TP_STRUCT__entry(
@@ -43,7 +43,7 @@ TRACE_EVENT(scmi_xfer_end,
                __field(u8, msg_id)
                __field(u8, protocol_id)
                __field(u16, seq)
-               __field(u32, status)
+               __field(int, status)
        ),
 
        TP_fast_assign(
@@ -54,7 +54,7 @@ TRACE_EVENT(scmi_xfer_end,
                __entry->status = status;
        ),
 
-       TP_printk("transfer_id=%d msg_id=%u protocol_id=%u seq=%u status=%u",
+       TP_printk("transfer_id=%d msg_id=%u protocol_id=%u seq=%u status=%d",
                __entry->transfer_id, __entry->msg_id, __entry->protocol_id,
                __entry->seq, __entry->status)
 );