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 7483cacf63f97e9f6287e73875657ebd97eee055..136acbe2f4a1b6164e9d244b7b40b4ee38161447 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 f076c430d243b6fb6f76834ea12630da82a319c0..f3a4b4d607141d103a40204cb161737a4e19c381 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)
 );