Xen Test Framework
Functions | Variables
vmxon.c File Reference
#include "test.h"
+ Include dependency graph for vmxon.c:

Go to the source code of this file.

Functions

static void test_vmxon_novmxe (void)
 vmxon with CR4.VMXE cleared More...
 
static unsigned long vmxon_in_user (void)
 
static void test_vmxon_novmxe_in_user (void)
 vmxon in CPL=3 outside of VMX operation More...
 
static void test_vmxon_in_user (void)
 vmxon in CPL=3 in VMX operation More...
 
static void test_vmxon_overly_wide_paddr (void)
 vmxon with a physical address that exceeds the maximum address width More...
 
static void test_vmxon_unaligned_paddr (void)
 vmxon with an unaligned physical address More...
 
static void test_vmxon_mismatched_revid (void)
 vmxon with VMCS revision ID mismatched with MSR_IA32_VMX_BASIC More...
 
static void test_vmxon_revid_bit31 (void)
 vmxon with VMCS revision ID[31] set More...
 
static void test_vmxon_correct (void)
 vmxon expected to succeed More...
 
static void test_vmxon_novmcs_in_root_cpl0 (void)
 vmxon in VMX root w/ CPL = 0 and w/o current VMCS More...
 
static void test_vmxon_novmcs_in_root_user (void)
 vmxon in VMX root w/ CPL = 3 and w/o current VMCS More...
 
static void test_vmxon_in_root_cpl0 (void)
 vmxon in VMX root w/ CPL = 0 and w/ current VMCS More...
 
static void test_vmxon_in_root_user (void)
 vmxon in VMX root w/ CPL = 3 and w/ current VMCS More...
 
void test_vmxon (void)
 

Variables

static uint8_t vmxon_region_unused [PAGE_SIZE]
 
static uint8_t vmxon_region_real [PAGE_SIZE]
 
static uint8_t vmcs [PAGE_SIZE]
 

Function Documentation

◆ test_vmxon_novmxe()

static void test_vmxon_novmxe ( void  )
static

vmxon with CR4.VMXE cleared

Expect: #UD

Definition at line 17 of file vmxon.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ vmxon_in_user()

static unsigned long vmxon_in_user ( void  )
static

Definition at line 27 of file vmxon.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ test_vmxon_novmxe_in_user()

static void test_vmxon_novmxe_in_user ( void  )
static

vmxon in CPL=3 outside of VMX operation

Expect: #GP(0)

Definition at line 37 of file vmxon.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ test_vmxon_in_user()

static void test_vmxon_in_user ( void  )
static

vmxon in CPL=3 in VMX operation

Expect: #UD

Definition at line 49 of file vmxon.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ test_vmxon_overly_wide_paddr()

static void test_vmxon_overly_wide_paddr ( void  )
static

vmxon with a physical address that exceeds the maximum address width

Expect: VMfailInvalid

Definition at line 61 of file vmxon.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ test_vmxon_unaligned_paddr()

static void test_vmxon_unaligned_paddr ( void  )
static

vmxon with an unaligned physical address

Expect: VMfailInvalid

Definition at line 73 of file vmxon.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ test_vmxon_mismatched_revid()

static void test_vmxon_mismatched_revid ( void  )
static

vmxon with VMCS revision ID mismatched with MSR_IA32_VMX_BASIC

Expect: VMfailInvalid

Definition at line 85 of file vmxon.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ test_vmxon_revid_bit31()

static void test_vmxon_revid_bit31 ( void  )
static

vmxon with VMCS revision ID[31] set

Expect: VMfailInvalid

Definition at line 98 of file vmxon.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ test_vmxon_correct()

static void test_vmxon_correct ( void  )
static

vmxon expected to succeed

Expect: Success

Definition at line 111 of file vmxon.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ test_vmxon_novmcs_in_root_cpl0()

static void test_vmxon_novmcs_in_root_cpl0 ( void  )
static

vmxon in VMX root w/ CPL = 0 and w/o current VMCS

Expect: VMfailInvalid

Definition at line 124 of file vmxon.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ test_vmxon_novmcs_in_root_user()

static void test_vmxon_novmcs_in_root_user ( void  )
static

vmxon in VMX root w/ CPL = 3 and w/o current VMCS

Expect: #GP(0)

Definition at line 137 of file vmxon.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ test_vmxon_in_root_cpl0()

static void test_vmxon_in_root_cpl0 ( void  )
static

vmxon in VMX root w/ CPL = 0 and w/ current VMCS

Expect: VMfailvalid()

Definition at line 150 of file vmxon.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ test_vmxon_in_root_user()

static void test_vmxon_in_root_user ( void  )
static

vmxon in VMX root w/ CPL = 3 and w/ current VMCS

Expect: #GP(0)

Definition at line 163 of file vmxon.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ test_vmxon()

void test_vmxon ( void  )

Definition at line 171 of file vmxon.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ vmxon_region_unused

uint8_t vmxon_region_unused[PAGE_SIZE]
static

Definition at line 4 of file vmxon.c.

◆ vmxon_region_real

uint8_t vmxon_region_real[PAGE_SIZE]
static

Definition at line 7 of file vmxon.c.

◆ vmcs

uint8_t vmcs[PAGE_SIZE]
static

Definition at line 10 of file vmxon.c.