1 // Copyright 2018 The Fuchsia Authors 2 // 3 // Use of this source code is governed by a MIT-style 4 // license that can be found in the LICENSE file or at 5 // https://opensource.org/licenses/MIT 6 7 #pragma once 8 9 #include <stdint.h> 10 11 enum VcpuMeta : uint32_t { 12 // Waits. 13 VCPU_INTERRUPT, 14 VCPU_PORT, 15 16 // Do not use. 17 VCPU_META_COUNT, 18 }; 19 20 enum VcpuExit : uint32_t { 21 #if ARCH_ARM64 22 VCPU_UNDERFLOW_MAINTENANCE_INTERRUPT, 23 VCPU_PHYSICAL_INTERRUPT, 24 VCPU_WFI_INSTRUCTION, 25 VCPU_WFE_INSTRUCTION, 26 VCPU_SMC_INSTRUCTION, 27 VCPU_SYSTEM_INSTRUCTION, 28 VCPU_INSTRUCTION_ABORT, 29 VCPU_DATA_ABORT, 30 #elif ARCH_X86 31 VCPU_EXTERNAL_INTERRUPT, 32 VCPU_INTERRUPT_WINDOW, 33 VCPU_CPUID, 34 VCPU_HLT, 35 VCPU_CONTROL_REGISTER_ACCESS, 36 VCPU_IO_INSTRUCTION, 37 VCPU_RDMSR, 38 VCPU_WRMSR, 39 VCPU_VM_ENTRY_FAILURE, 40 VCPU_EPT_VIOLATION, 41 VCPU_XSETBV, 42 VCPU_PAUSE, 43 VCPU_VMCALL, 44 #endif 45 VCPU_UNKNOWN, 46 VCPU_FAILURE, 47 48 // Do not use. 49 VCPU_EXIT_COUNT, 50 }; 51 52 void ktrace_report_vcpu_meta(); 53 void ktrace_vcpu(uint32_t tag, VcpuMeta meta); 54 void ktrace_vcpu_exit(VcpuExit exit, uint64_t exit_address); 55