|
@@ -224,57 +224,37 @@ TRACE_EVENT(oos_sync,
|
|
|
TP_printk("%s", __entry->buf)
|
|
|
);
|
|
|
|
|
|
-#define MAX_CMD_STR_LEN 256
|
|
|
TRACE_EVENT(gvt_command,
|
|
|
- TP_PROTO(u8 vm_id, u8 ring_id, u32 ip_gma, u32 *cmd_va, u32 cmd_len, bool ring_buffer_cmd, cycles_t cost_pre_cmd_handler, cycles_t cost_cmd_handler),
|
|
|
-
|
|
|
- TP_ARGS(vm_id, ring_id, ip_gma, cmd_va, cmd_len, ring_buffer_cmd, cost_pre_cmd_handler, cost_cmd_handler),
|
|
|
-
|
|
|
- TP_STRUCT__entry(
|
|
|
- __field(u8, vm_id)
|
|
|
- __field(u8, ring_id)
|
|
|
- __field(int, i)
|
|
|
- __array(char, tmp_buf, MAX_CMD_STR_LEN)
|
|
|
- __array(char, cmd_str, MAX_CMD_STR_LEN)
|
|
|
- ),
|
|
|
-
|
|
|
- TP_fast_assign(
|
|
|
- __entry->vm_id = vm_id;
|
|
|
- __entry->ring_id = ring_id;
|
|
|
- __entry->cmd_str[0] = '\0';
|
|
|
- snprintf(__entry->tmp_buf, MAX_CMD_STR_LEN, "VM(%d) Ring(%d): %s ip(%08x) pre handler cost (%llu), handler cost (%llu) ", vm_id, ring_id, ring_buffer_cmd ? "RB":"BB", ip_gma, cost_pre_cmd_handler, cost_cmd_handler);
|
|
|
- strcat(__entry->cmd_str, __entry->tmp_buf);
|
|
|
- entry->i = 0;
|
|
|
- while (cmd_len > 0) {
|
|
|
- if (cmd_len >= 8) {
|
|
|
- snprintf(__entry->tmp_buf, MAX_CMD_STR_LEN, "%08x %08x %08x %08x %08x %08x %08x %08x ",
|
|
|
- cmd_va[__entry->i], cmd_va[__entry->i+1], cmd_va[__entry->i+2], cmd_va[__entry->i+3],
|
|
|
- cmd_va[__entry->i+4], cmd_va[__entry->i+5], cmd_va[__entry->i+6], cmd_va[__entry->i+7]);
|
|
|
- __entry->i += 8;
|
|
|
- cmd_len -= 8;
|
|
|
- strcat(__entry->cmd_str, __entry->tmp_buf);
|
|
|
- } else if (cmd_len >= 4) {
|
|
|
- snprintf(__entry->tmp_buf, MAX_CMD_STR_LEN, "%08x %08x %08x %08x ",
|
|
|
- cmd_va[__entry->i], cmd_va[__entry->i+1], cmd_va[__entry->i+2], cmd_va[__entry->i+3]);
|
|
|
- __entry->i += 4;
|
|
|
- cmd_len -= 4;
|
|
|
- strcat(__entry->cmd_str, __entry->tmp_buf);
|
|
|
- } else if (cmd_len >= 2) {
|
|
|
- snprintf(__entry->tmp_buf, MAX_CMD_STR_LEN, "%08x %08x ", cmd_va[__entry->i], cmd_va[__entry->i+1]);
|
|
|
- __entry->i += 2;
|
|
|
- cmd_len -= 2;
|
|
|
- strcat(__entry->cmd_str, __entry->tmp_buf);
|
|
|
- } else if (cmd_len == 1) {
|
|
|
- snprintf(__entry->tmp_buf, MAX_CMD_STR_LEN, "%08x ", cmd_va[__entry->i]);
|
|
|
- __entry->i += 1;
|
|
|
- cmd_len -= 1;
|
|
|
- strcat(__entry->cmd_str, __entry->tmp_buf);
|
|
|
- }
|
|
|
- }
|
|
|
- strcat(__entry->cmd_str, "\n");
|
|
|
- ),
|
|
|
+ TP_PROTO(u8 vgpu_id, u8 ring_id, u32 ip_gma, u32 *cmd_va, u32 cmd_len,
|
|
|
+ u32 buf_type),
|
|
|
+
|
|
|
+ TP_ARGS(vgpu_id, ring_id, ip_gma, cmd_va, cmd_len, buf_type),
|
|
|
+
|
|
|
+ TP_STRUCT__entry(
|
|
|
+ __field(u8, vgpu_id)
|
|
|
+ __field(u8, ring_id)
|
|
|
+ __field(u32, ip_gma)
|
|
|
+ __field(u32, buf_type)
|
|
|
+ __field(u32, cmd_len)
|
|
|
+ __dynamic_array(u32, raw_cmd, cmd_len)
|
|
|
+ ),
|
|
|
+
|
|
|
+ TP_fast_assign(
|
|
|
+ __entry->vgpu_id = vgpu_id;
|
|
|
+ __entry->ring_id = ring_id;
|
|
|
+ __entry->ip_gma = ip_gma;
|
|
|
+ __entry->buf_type = buf_type;
|
|
|
+ __entry->cmd_len = cmd_len;
|
|
|
+ memcpy(__get_dynamic_array(raw_cmd), cmd_va, cmd_len * sizeof(*cmd_va));
|
|
|
+ ),
|
|
|
+
|
|
|
|
|
|
- TP_printk("%s", __entry->cmd_str)
|
|
|
+ TP_printk("vgpu%d ring %d: buf_type %u, ip_gma %08x, raw cmd %s",
|
|
|
+ __entry->vgpu_id,
|
|
|
+ __entry->ring_id,
|
|
|
+ __entry->buf_type,
|
|
|
+ __entry->ip_gma,
|
|
|
+ __print_array(__get_dynamic_array(raw_cmd), __entry->cmd_len, 4))
|
|
|
);
|
|
|
#endif /* _GVT_TRACE_H_ */
|
|
|
|