From d0c61ce424a01c5ac3dac9971f45f5ef30cbd11a Mon Sep 17 00:00:00 2001 From: Junjie Mao Date: Mon, 9 Jul 2018 21:14:32 +0800 Subject: [PATCH] HV: trace: integral type cleanup In the current trace.h, the entries use proper unsigned types while some function prototypes and local variables still use plain 'int', resulting in implicit signedness conversions. This patch makes the following conversions: * evid: int -> uint32_t, * n_data & cpu: 8-bit bit-field -> uint8_t, * local variable holding the value from strnlen_s(): int -> size_t. Note: In the following definition: struct trace_entry { uint64_t tsc; /* TSC */ uint64_t id:48; .... The type of bit-field ''id'' cannot be uint32_t since gcc complains about bit-fields larger than the type. Thus this patch keeps it as is. Signed-off-by: Junjie Mao Acked-by: Eddie Dong --- hypervisor/include/debug/trace.h | 104 +++++++++++++++---------------- 1 file changed, 52 insertions(+), 52 deletions(-) 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,