Skip to content

Commit bfe47a7

Browse files
KaigeFulijinxia
authored andcommitted
HV: trace: Add nr of data and cpuid to trace_entry
Later patch will refactor acrntrace to make trace data output as raw data(binary) and introduce a new tool(acrntrace_format) to parse raw data to human-readable file. Adding nr of data and cpuid to trace_entry will make it easy for acrntrace_format to parse data file and inditify which cpu this trace entry belong to. Signed-off-by: Kaige Fu <kaige.fu@intel.com> Reviewed-by: Yan, Like <like.yan@intel.com> Reviewed-by: Geoffroy Van Cutsem <geoffroy.vancutsem@intel.com>
1 parent 1c605a4 commit bfe47a7

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

hypervisor/include/debug/trace.h

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,10 @@
5353
/* sizeof(trace_entry) == 4 x 64bit */
5454
struct trace_entry {
5555
uint64_t tsc; /* TSC */
56-
uint64_t id;
56+
uint64_t id:48;
57+
uint64_t n_data:8; /* nr of data in trace_entry */
58+
uint64_t cpu:8; /* pcpu id of trace_entry */
59+
5760
union {
5861
struct {
5962
uint32_t a, b, c, d;
@@ -85,13 +88,15 @@ trace_check(uint16_t cpu_id, __unused int evid)
8588
}
8689

8790
static inline void
88-
_trace_put(uint16_t cpu_id, int evid, struct trace_entry *entry)
91+
_trace_put(uint16_t cpu_id, int evid, int n_data, struct trace_entry *entry)
8992
{
9093
struct shared_buf *sbuf = (struct shared_buf *)
9194
per_cpu(sbuf, cpu_id)[ACRN_TRACE];
9295

9396
entry->tsc = rdtsc();
9497
entry->id = evid;
98+
entry->n_data = n_data;
99+
entry->cpu = cpu_id;
95100
sbuf_put(sbuf, (uint8_t *)entry);
96101
}
97102

@@ -106,7 +111,7 @@ TRACE_2L(int evid, uint64_t e, uint64_t f)
106111

107112
entry.payload.fields_64.e = e;
108113
entry.payload.fields_64.f = f;
109-
_trace_put(cpu_id, evid, &entry);
114+
_trace_put(cpu_id, evid, 2, &entry);
110115
}
111116

112117
static inline void
@@ -123,7 +128,7 @@ TRACE_4I(int evid, uint32_t a, uint32_t b, uint32_t c,
123128
entry.payload.fields_32.b = b;
124129
entry.payload.fields_32.c = c;
125130
entry.payload.fields_32.d = d;
126-
_trace_put(cpu_id, evid, &entry);
131+
_trace_put(cpu_id, evid, 4, &entry);
127132
}
128133

129134
static inline void
@@ -142,7 +147,8 @@ TRACE_6C(int evid, uint8_t a1, uint8_t a2, uint8_t a3,
142147
entry.payload.fields_8.a4 = a4;
143148
entry.payload.fields_8.b1 = b1;
144149
entry.payload.fields_8.b2 = b2;
145-
_trace_put(cpu_id, evid, &entry);
150+
/* payload.fields_8.b3/b4 not used, but is put in trace buf */
151+
_trace_put(cpu_id, evid, 8, &entry);
146152
}
147153

148154
#define TRACE_ENTER TRACE_16STR(TRACE_FUNC_ENTER, __func__)
@@ -168,7 +174,7 @@ TRACE_16STR(int evid, const char name[])
168174
entry.payload.str[i] = name[i];
169175

170176
entry.payload.str[15] = 0;
171-
_trace_put(cpu_id, evid, &entry);
177+
_trace_put(cpu_id, evid, 16, &entry);
172178
}
173179

174180
#else /* HV_DEBUG */

0 commit comments

Comments
 (0)