1 /*
2  * ACRN TRACE
3  *
4  * Copyright (C) 2017-2022 Intel Corporation.
5  *
6  * SPDX-License-Identifier: BSD-3-Clause
7  *
8  * Li Fei <fei1.li@intel.com>
9  *
10  */
11 
12 #ifndef TRACE_H
13 #define TRACE_H
14 #include <asm/per_cpu.h>
15  /* TIMER EVENT */
16 #define TRACE_TIMER_ACTION_ADDED	0x1U
17 #define TRACE_TIMER_ACTION_PCKUP	0x2U
18 #define TRACE_TIMER_ACTION_UPDAT	0x3U
19 #define TRACE_TIMER_IRQ			0x4U
20 
21 #define TRACE_VM_EXIT			0x10U
22 #define TRACE_VM_ENTER			0X11U
23 
24 /* event to calculate cpu usage with shared pcpu */
25 #define TRACE_SCHED_NEXT		0x20U
26 
27 #define TRACE_VMEXIT_ENTRY		0x10000U
28 
29 #define TRACE_VMEXIT_EXCEPTION_OR_NMI	    (TRACE_VMEXIT_ENTRY + 0x00000000U)
30 #define TRACE_VMEXIT_EXTERNAL_INTERRUPT     (TRACE_VMEXIT_ENTRY + 0x00000001U)
31 #define TRACE_VMEXIT_INTERRUPT_WINDOW	    (TRACE_VMEXIT_ENTRY + 0x00000002U)
32 #define TRACE_VMEXIT_CPUID		    (TRACE_VMEXIT_ENTRY + 0x00000004U)
33 #define TRACE_VMEXIT_RDTSC		    (TRACE_VMEXIT_ENTRY + 0x00000010U)
34 #define TRACE_VMEXIT_VMCALL		    (TRACE_VMEXIT_ENTRY + 0x00000012U)
35 #define TRACE_VMEXIT_CR_ACCESS		    (TRACE_VMEXIT_ENTRY + 0x0000001CU)
36 #define TRACE_VMEXIT_IO_INSTRUCTION	    (TRACE_VMEXIT_ENTRY + 0x0000001EU)
37 #define TRACE_VMEXIT_RDMSR		    (TRACE_VMEXIT_ENTRY + 0x0000001FU)
38 #define TRACE_VMEXIT_WRMSR		    (TRACE_VMEXIT_ENTRY + 0x00000020U)
39 #define TRACE_VMEXIT_EPT_VIOLATION	    (TRACE_VMEXIT_ENTRY + 0x00000030U)
40 #define TRACE_VMEXIT_EPT_MISCONFIGURATION   (TRACE_VMEXIT_ENTRY + 0x00000031U)
41 #define TRACE_VMEXIT_RDTSCP		    (TRACE_VMEXIT_ENTRY + 0x00000033U)
42 #define TRACE_VMEXIT_APICV_WRITE	    (TRACE_VMEXIT_ENTRY + 0x00000038U)
43 #define TRACE_VMEXIT_APICV_ACCESS	    (TRACE_VMEXIT_ENTRY + 0x00000039U)
44 #define TRACE_VMEXIT_APICV_VIRT_EOI	    (TRACE_VMEXIT_ENTRY + 0x0000003AU)
45 
46 #define TRACE_VMEXIT_UNHANDLED		0x20000U
47 
48 void TRACE_2L(uint32_t evid, uint64_t e, uint64_t f);
49 void TRACE_4I(uint32_t evid, uint32_t a, uint32_t b, uint32_t c, uint32_t d);
50 void TRACE_6C(uint32_t evid, uint8_t a1, uint8_t a2, uint8_t a3, uint8_t a4, uint8_t b1, uint8_t b2);
51 void TRACE_16STR(uint32_t evid, const char name[]);
52 
53 #endif /* TRACE_H */
54