diff --git a/hypervisor/include/debug/trace.h b/hypervisor/include/debug/trace.h index edd9b7aed..7fb986744 100644 --- a/hypervisor/include/debug/trace.h +++ b/hypervisor/include/debug/trace.h @@ -13,49 +13,49 @@ #define TRACE_H #include /* TIMER EVENT */ -#define TRACE_TIMER_ACTION_ADDED 0x1 -#define TRACE_TIMER_ACTION_PCKUP 0x2 -#define TRACE_TIMER_ACTION_UPDAT 0x3 -#define TRACE_TIMER_IRQ 0x4 +#define TRACE_TIMER_ACTION_ADDED 0x1U +#define TRACE_TIMER_ACTION_PCKUP 0x2U +#define TRACE_TIMER_ACTION_UPDAT 0x3U +#define TRACE_TIMER_IRQ 0x4U -#define TRACE_VM_EXIT 0x10 -#define TRACE_VM_ENTER 0X11 -#define TRACE_VMEXIT_ENTRY 0x10000 +#define TRACE_VM_EXIT 0x10U +#define TRACE_VM_ENTER 0X11U +#define TRACE_VMEXIT_ENTRY 0x10000U -#define TRACE_VMEXIT_EXCEPTION_OR_NMI (TRACE_VMEXIT_ENTRY + 0x00000000) -#define TRACE_VMEXIT_EXTERNAL_INTERRUPT (TRACE_VMEXIT_ENTRY + 0x00000001) -#define TRACE_VMEXIT_INTERRUPT_WINDOW (TRACE_VMEXIT_ENTRY + 0x00000002) -#define TRACE_VMEXIT_CPUID (TRACE_VMEXIT_ENTRY + 0x00000004) -#define TRACE_VMEXIT_RDTSC (TRACE_VMEXIT_ENTRY + 0x00000010) -#define TRACE_VMEXIT_VMCALL (TRACE_VMEXIT_ENTRY + 0x00000012) -#define TRACE_VMEXIT_CR_ACCESS (TRACE_VMEXIT_ENTRY + 0x0000001C) -#define TRACE_VMEXIT_IO_INSTRUCTION (TRACE_VMEXIT_ENTRY + 0x0000001E) -#define TRACE_VMEXIT_RDMSR (TRACE_VMEXIT_ENTRY + 0x0000001F) -#define TRACE_VMEXIT_WRMSR (TRACE_VMEXIT_ENTRY + 0x00000020) -#define TRACE_VMEXIT_EPT_VIOLATION (TRACE_VMEXIT_ENTRY + 0x00000030) -#define TRACE_VMEXIT_EPT_MISCONFIGURATION (TRACE_VMEXIT_ENTRY + 0x00000031) -#define TRACE_VMEXIT_RDTSCP (TRACE_VMEXIT_ENTRY + 0x00000033) -#define TRACE_VMEXIT_APICV_WRITE (TRACE_VMEXIT_ENTRY + 0x00000038) -#define TRACE_VMEXIT_APICV_ACCESS (TRACE_VMEXIT_ENTRY + 0x00000039) -#define TRACE_VMEXIT_APICV_VIRT_EOI (TRACE_VMEXIT_ENTRY + 0x0000003A) +#define TRACE_VMEXIT_EXCEPTION_OR_NMI (TRACE_VMEXIT_ENTRY + 0x00000000U) +#define TRACE_VMEXIT_EXTERNAL_INTERRUPT (TRACE_VMEXIT_ENTRY + 0x00000001U) +#define TRACE_VMEXIT_INTERRUPT_WINDOW (TRACE_VMEXIT_ENTRY + 0x00000002U) +#define TRACE_VMEXIT_CPUID (TRACE_VMEXIT_ENTRY + 0x00000004U) +#define TRACE_VMEXIT_RDTSC (TRACE_VMEXIT_ENTRY + 0x00000010U) +#define TRACE_VMEXIT_VMCALL (TRACE_VMEXIT_ENTRY + 0x00000012U) +#define TRACE_VMEXIT_CR_ACCESS (TRACE_VMEXIT_ENTRY + 0x0000001CU) +#define TRACE_VMEXIT_IO_INSTRUCTION (TRACE_VMEXIT_ENTRY + 0x0000001EU) +#define TRACE_VMEXIT_RDMSR (TRACE_VMEXIT_ENTRY + 0x0000001FU) +#define TRACE_VMEXIT_WRMSR (TRACE_VMEXIT_ENTRY + 0x00000020U) +#define TRACE_VMEXIT_EPT_VIOLATION (TRACE_VMEXIT_ENTRY + 0x00000030U) +#define TRACE_VMEXIT_EPT_MISCONFIGURATION (TRACE_VMEXIT_ENTRY + 0x00000031U) +#define TRACE_VMEXIT_RDTSCP (TRACE_VMEXIT_ENTRY + 0x00000033U) +#define TRACE_VMEXIT_APICV_WRITE (TRACE_VMEXIT_ENTRY + 0x00000038U) +#define TRACE_VMEXIT_APICV_ACCESS (TRACE_VMEXIT_ENTRY + 0x00000039U) +#define TRACE_VMEXIT_APICV_VIRT_EOI (TRACE_VMEXIT_ENTRY + 0x0000003AU) -#define TRACE_VMEXIT_UNHANDLED 0x20000 +#define TRACE_VMEXIT_UNHANDLED 0x20000U #ifdef HV_DEBUG #include -#define TRACE_CUSTOM 0xFC -#define TRACE_FUNC_ENTER 0xFD -#define TRACE_FUNC_EXIT 0xFE -#define TRACE_STR 0xFF +#define TRACE_CUSTOM 0xFCU +#define TRACE_FUNC_ENTER 0xFDU +#define TRACE_FUNC_EXIT 0xFEU +#define TRACE_STR 0xFFU /* sizeof(trace_entry) == 4 x 64bit */ struct trace_entry { uint64_t tsc; /* TSC */ uint64_t id:48; - uint64_t n_data:8; /* nr of data in trace_entry */ - uint64_t cpu:8; /* pcpu id of trace_entry */ + uint8_t n_data; /* nr of data in trace_entry */ + uint8_t cpu; /* pcpu id of trace_entry */ union { struct { @@ -76,7 +76,7 @@ struct trace_entry { } __attribute__((aligned(8))); static inline bool -trace_check(uint16_t cpu_id, __unused int evid) +trace_check(uint16_t cpu_id, __unused uint32_t evid) { if (cpu_id >= phys_cpu_num) return false; @@ -88,20 +88,21 @@ trace_check(uint16_t cpu_id, __unused int evid) } static inline void -_trace_put(uint16_t cpu_id, int evid, int n_data, struct trace_entry *entry) +_trace_put(uint16_t cpu_id, uint32_t evid, + uint32_t n_data, struct trace_entry *entry) { struct shared_buf *sbuf = (struct shared_buf *) per_cpu(sbuf, cpu_id)[ACRN_TRACE]; entry->tsc = rdtsc(); entry->id = evid; - entry->n_data = n_data; - entry->cpu = cpu_id; + entry->n_data = (uint8_t)n_data; + entry->cpu = (uint8_t)cpu_id; sbuf_put(sbuf, (uint8_t *)entry); } static inline void -TRACE_2L(int evid, uint64_t e, uint64_t f) +TRACE_2L(uint32_t evid, uint64_t e, uint64_t f) { struct trace_entry entry; uint16_t cpu_id = get_cpu_id(); @@ -111,11 +112,11 @@ TRACE_2L(int evid, uint64_t e, uint64_t f) entry.payload.fields_64.e = e; entry.payload.fields_64.f = f; - _trace_put(cpu_id, evid, 2, &entry); + _trace_put(cpu_id, evid, 2U, &entry); } static inline void -TRACE_4I(int evid, uint32_t a, uint32_t b, uint32_t c, +TRACE_4I(uint32_t evid, uint32_t a, uint32_t b, uint32_t c, uint32_t d) { struct trace_entry entry; @@ -128,11 +129,11 @@ TRACE_4I(int evid, uint32_t a, uint32_t b, uint32_t c, entry.payload.fields_32.b = b; entry.payload.fields_32.c = c; entry.payload.fields_32.d = d; - _trace_put(cpu_id, evid, 4, &entry); + _trace_put(cpu_id, evid, 4U, &entry); } static inline void -TRACE_6C(int evid, uint8_t a1, uint8_t a2, uint8_t a3, +TRACE_6C(uint32_t evid, uint8_t a1, uint8_t a2, uint8_t a3, uint8_t a4, uint8_t b1, uint8_t b2) { struct trace_entry entry; @@ -148,33 +149,32 @@ TRACE_6C(int evid, uint8_t a1, uint8_t a2, uint8_t a3, entry.payload.fields_8.b1 = b1; entry.payload.fields_8.b2 = b2; /* payload.fields_8.b3/b4 not used, but is put in trace buf */ - _trace_put(cpu_id, evid, 8, &entry); + _trace_put(cpu_id, evid, 8U, &entry); } #define TRACE_ENTER TRACE_16STR(TRACE_FUNC_ENTER, __func__) #define TRACE_EXIT TRACE_16STR(TRACE_FUNC_EXIT, __func__) static inline void -TRACE_16STR(int evid, const char name[]) +TRACE_16STR(uint32_t evid, const char name[]) { struct trace_entry entry; uint16_t cpu_id = get_cpu_id(); - int len; - int i; + size_t len, i; if (!trace_check(cpu_id, evid)) return; - entry.payload.fields_64.e = 0; - entry.payload.fields_64.f = 0; + entry.payload.fields_64.e = 0UL; + entry.payload.fields_64.f = 0UL; - len = strnlen_s(name, 20); - len = (len > 16) ? 16 : len; - for (i = 0; i < len; i++) + len = strnlen_s(name, 20U); + len = (len > 16U) ? 16U : len; + for (i = 0U; i < len; i++) entry.payload.str[i] = name[i]; entry.payload.str[15] = 0; - _trace_put(cpu_id, evid, 16, &entry); + _trace_put(cpu_id, evid, 16U, &entry); } #else /* HV_DEBUG */ @@ -183,14 +183,14 @@ TRACE_16STR(int evid, const char name[]) #define TRACE_EXIT static inline void -TRACE_2L(__unused int evid, +TRACE_2L(__unused uint32_t evid, __unused uint64_t e, __unused uint64_t f) { } static inline void -TRACE_4I(__unused int evid, +TRACE_4I(__unused uint32_t evid, __unused uint32_t a, __unused uint32_t b, __unused uint32_t c, @@ -199,7 +199,7 @@ TRACE_4I(__unused int evid, } static inline void -TRACE_6C(__unused int evid, +TRACE_6C(__unused uint32_t evid, __unused uint8_t a1, __unused uint8_t a2, __unused uint8_t a3,