| /* Copyright (c) 2015 Google Inc. |
| * Barret Rhoden <brho@cs.berkeley.edu> |
| * See LICENSE for details. |
| * |
| * x86 VMM kernel headers */ |
| |
| #pragma once |
| |
| #include <ros/arch/vmx.h> |
| |
| /* Initialization data provided by the userspace part of the VMM when setting |
| * up a guest physical core (vmx vcpu). */ |
| struct vmm_gpcore_init { |
| void *posted_irq_desc; |
| void *vapic_addr; |
| void *apic_addr; |
| uintptr_t fsbase; |
| uintptr_t gsbase; |
| }; |
| |
| /* Intel VM Trap Injection Fields */ |
| #define VM_TRAP_VALID (1 << 31) |
| #define VM_TRAP_ERROR_CODE (1 << 11) |
| #define VM_TRAP_HARDWARE (3 << 8) |
| /* End Intel VM Trap Injection Fields */ |
| |
| static inline bool vmm_user_handles_cpuid(uint32_t eax, uint32_t ecx) |
| { |
| switch (eax) { |
| case 0x0b: |
| return true; |
| } |
| return false; |
| } |