Public Member Functions
vmcs_intel_x64_vmm_state Class Reference
Inheritance diagram for vmcs_intel_x64_vmm_state:
vmcs_intel_x64_state

Public Member Functions

 vmcs_intel_x64_vmm_state ()
 
 ~vmcs_intel_x64_vmm_state () override=default
 
x64::segment_register::type cs () const override
 
x64::segment_register::type ss () const override
 
x64::segment_register::type fs () const override
 
x64::segment_register::type gs () const override
 
x64::segment_register::type tr () const override
 
intel_x64::cr0::value_type cr0 () const override
 
intel_x64::cr3::value_type cr3 () const override
 
intel_x64::cr4::value_type cr4 () const override
 
x64::rflags::value_type rflags () const override
 
gdt_x64::integer_pointer gdt_base () const override
 
idt_x64::integer_pointer idt_base () const override
 
gdt_x64::size_type gdt_limit () const override
 
idt_x64::size_type idt_limit () const override
 
gdt_x64::limit_type cs_limit () const override
 
gdt_x64::limit_type ss_limit () const override
 
gdt_x64::limit_type fs_limit () const override
 
gdt_x64::limit_type gs_limit () const override
 
gdt_x64::limit_type tr_limit () const override
 
gdt_x64::access_rights_type cs_access_rights () const override
 
gdt_x64::access_rights_type ss_access_rights () const override
 
gdt_x64::access_rights_type fs_access_rights () const override
 
gdt_x64::access_rights_type gs_access_rights () const override
 
gdt_x64::access_rights_type tr_access_rights () const override
 
gdt_x64::base_type cs_base () const override
 
gdt_x64::base_type ss_base () const override
 
gdt_x64::base_type fs_base () const override
 
gdt_x64::base_type gs_base () const override
 
gdt_x64::base_type tr_base () const override
 
intel_x64::msrs::value_type ia32_pat_msr () const override
 
intel_x64::msrs::value_type ia32_efer_msr () const override
 
void dump () const override
 
- Public Member Functions inherited from vmcs_intel_x64_state
 vmcs_intel_x64_state ()=default
 
virtual ~vmcs_intel_x64_state ()=default
 
virtual x64::segment_register::type es () const
 
virtual x64::segment_register::type ds () const
 
virtual x64::segment_register::type ldtr () const
 
virtual void set_es (x64::segment_register::type val)
 
virtual void set_cs (x64::segment_register::type val)
 
virtual void set_ss (x64::segment_register::type val)
 
virtual void set_ds (x64::segment_register::type val)
 
virtual void set_fs (x64::segment_register::type val)
 
virtual void set_gs (x64::segment_register::type val)
 
virtual void set_ldtr (x64::segment_register::type val)
 
virtual void set_tr (x64::segment_register::type val)
 
virtual x64::dr7::value_type dr7 () const
 
virtual void set_cr0 (intel_x64::cr0::value_type val)
 
virtual void set_cr3 (intel_x64::cr3::value_type val)
 
virtual void set_cr4 (intel_x64::cr4::value_type val)
 
virtual void set_dr7 (x64::dr7::value_type val)
 
virtual void set_rflags (x64::rflags::value_type val)
 
virtual void set_gdt_base (gdt_x64::integer_pointer val)
 
virtual void set_idt_base (idt_x64::integer_pointer val)
 
virtual void set_gdt_limit (gdt_x64::size_type val)
 
virtual void set_idt_limit (idt_x64::size_type val)
 
virtual gdt_x64::limit_type es_limit () const
 
virtual gdt_x64::limit_type ds_limit () const
 
virtual gdt_x64::limit_type ldtr_limit () const
 
virtual void set_es_limit (gdt_x64::limit_type val)
 
virtual void set_cs_limit (gdt_x64::limit_type val)
 
virtual void set_ss_limit (gdt_x64::limit_type val)
 
virtual void set_ds_limit (gdt_x64::limit_type val)
 
virtual void set_fs_limit (gdt_x64::limit_type val)
 
virtual void set_gs_limit (gdt_x64::limit_type val)
 
virtual void set_ldtr_limit (gdt_x64::limit_type val)
 
virtual void set_tr_limit (gdt_x64::limit_type val)
 
virtual gdt_x64::access_rights_type es_access_rights () const
 
virtual gdt_x64::access_rights_type ds_access_rights () const
 
virtual gdt_x64::access_rights_type ldtr_access_rights () const
 
virtual void set_es_access_rights (gdt_x64::access_rights_type val)
 
virtual void set_cs_access_rights (gdt_x64::access_rights_type val)
 
virtual void set_ss_access_rights (gdt_x64::access_rights_type val)
 
virtual void set_ds_access_rights (gdt_x64::access_rights_type val)
 
virtual void set_fs_access_rights (gdt_x64::access_rights_type val)
 
virtual void set_gs_access_rights (gdt_x64::access_rights_type val)
 
virtual void set_ldtr_access_rights (gdt_x64::access_rights_type val)
 
virtual void set_tr_access_rights (gdt_x64::access_rights_type val)
 
virtual gdt_x64::base_type es_base () const
 
virtual gdt_x64::base_type ds_base () const
 
virtual gdt_x64::base_type ldtr_base () const
 
virtual void set_es_base (gdt_x64::base_type val)
 
virtual void set_cs_base (gdt_x64::base_type val)
 
virtual void set_ss_base (gdt_x64::base_type val)
 
virtual void set_ds_base (gdt_x64::base_type val)
 
virtual void set_fs_base (gdt_x64::base_type val)
 
virtual void set_gs_base (gdt_x64::base_type val)
 
virtual void set_ldtr_base (gdt_x64::base_type val)
 
virtual void set_tr_base (gdt_x64::base_type val)
 
virtual intel_x64::msrs::value_type ia32_debugctl_msr () const
 
virtual intel_x64::msrs::value_type ia32_perf_global_ctrl_msr () const
 
virtual intel_x64::msrs::value_type ia32_sysenter_cs_msr () const
 
virtual intel_x64::msrs::value_type ia32_sysenter_esp_msr () const
 
virtual intel_x64::msrs::value_type ia32_sysenter_eip_msr () const
 
virtual intel_x64::msrs::value_type ia32_fs_base_msr () const
 
virtual intel_x64::msrs::value_type ia32_gs_base_msr () const
 
virtual void set_ia32_debugctl_msr (intel_x64::msrs::value_type val)
 
virtual void set_ia32_pat_msr (intel_x64::msrs::value_type val)
 
virtual void set_ia32_efer_msr (intel_x64::msrs::value_type val)
 
virtual void set_ia32_perf_global_ctrl_msr (intel_x64::msrs::value_type val)
 
virtual void set_ia32_sysenter_cs_msr (intel_x64::msrs::value_type val)
 
virtual void set_ia32_sysenter_esp_msr (intel_x64::msrs::value_type val)
 
virtual void set_ia32_sysenter_eip_msr (intel_x64::msrs::value_type val)
 
virtual void set_ia32_fs_base_msr (intel_x64::msrs::value_type val)
 
virtual void set_ia32_gs_base_msr (intel_x64::msrs::value_type val)
 
virtual bool is_guest ()
 

Additional Inherited Members

- Public Types inherited from vmcs_intel_x64_state
using integer_pointer = uintptr_t
 

Detailed Description

VMCS VMM State

Defines the VMM's CPU state. Note that the Intel Manual calls this the host state, but in our case, "host" is really reserved for the host OS which is the OS that boots first (with an actual OS, or UEFI). So the naming can be a little confusing. For Bareflank, the hypervisor is the entire repo, so like Xen, it's a collection of everything including the so called "ring -1" code, but also the drivers and user space code that supports the VMM. The VMM is the code that manages all of the virtual machines, which can run in both the context of the host OS, but also "ring -1" which is why it needs it's own state. Short answer here is, when you see "host" in the VMCS, it's really the VMM, and when you see "guest", it could either be the host VM or a guest VM.

Definition at line 48 of file vmcs_intel_x64_vmm_state.h.

Constructor & Destructor Documentation

◆ vmcs_intel_x64_vmm_state()

vmcs_intel_x64_vmm_state::vmcs_intel_x64_vmm_state ( )

Definition at line 36 of file vmcs_intel_x64_vmm_state.cpp.

◆ ~vmcs_intel_x64_vmm_state()

vmcs_intel_x64_vmm_state::~vmcs_intel_x64_vmm_state ( )
overridedefault

Member Function Documentation

◆ cs()

x64::segment_register::type vmcs_intel_x64_vmm_state::cs ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 55 of file vmcs_intel_x64_vmm_state.h.

◆ ss()

x64::segment_register::type vmcs_intel_x64_vmm_state::ss ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 57 of file vmcs_intel_x64_vmm_state.h.

◆ fs()

x64::segment_register::type vmcs_intel_x64_vmm_state::fs ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 59 of file vmcs_intel_x64_vmm_state.h.

◆ gs()

x64::segment_register::type vmcs_intel_x64_vmm_state::gs ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 61 of file vmcs_intel_x64_vmm_state.h.

◆ tr()

x64::segment_register::type vmcs_intel_x64_vmm_state::tr ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 63 of file vmcs_intel_x64_vmm_state.h.

◆ cr0()

intel_x64::cr0::value_type vmcs_intel_x64_vmm_state::cr0 ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 66 of file vmcs_intel_x64_vmm_state.h.

◆ cr3()

intel_x64::cr3::value_type vmcs_intel_x64_vmm_state::cr3 ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 68 of file vmcs_intel_x64_vmm_state.h.

◆ cr4()

intel_x64::cr4::value_type vmcs_intel_x64_vmm_state::cr4 ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 70 of file vmcs_intel_x64_vmm_state.h.

◆ rflags()

x64::rflags::value_type vmcs_intel_x64_vmm_state::rflags ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 73 of file vmcs_intel_x64_vmm_state.h.

◆ gdt_base()

gdt_x64::integer_pointer vmcs_intel_x64_vmm_state::gdt_base ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 76 of file vmcs_intel_x64_vmm_state.h.

◆ idt_base()

idt_x64::integer_pointer vmcs_intel_x64_vmm_state::idt_base ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 78 of file vmcs_intel_x64_vmm_state.h.

◆ gdt_limit()

gdt_x64::size_type vmcs_intel_x64_vmm_state::gdt_limit ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 81 of file vmcs_intel_x64_vmm_state.h.

◆ idt_limit()

idt_x64::size_type vmcs_intel_x64_vmm_state::idt_limit ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 83 of file vmcs_intel_x64_vmm_state.h.

◆ cs_limit()

gdt_x64::limit_type vmcs_intel_x64_vmm_state::cs_limit ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 86 of file vmcs_intel_x64_vmm_state.h.

◆ ss_limit()

gdt_x64::limit_type vmcs_intel_x64_vmm_state::ss_limit ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 88 of file vmcs_intel_x64_vmm_state.h.

◆ fs_limit()

gdt_x64::limit_type vmcs_intel_x64_vmm_state::fs_limit ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 90 of file vmcs_intel_x64_vmm_state.h.

◆ gs_limit()

gdt_x64::limit_type vmcs_intel_x64_vmm_state::gs_limit ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 92 of file vmcs_intel_x64_vmm_state.h.

◆ tr_limit()

gdt_x64::limit_type vmcs_intel_x64_vmm_state::tr_limit ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 94 of file vmcs_intel_x64_vmm_state.h.

◆ cs_access_rights()

gdt_x64::access_rights_type vmcs_intel_x64_vmm_state::cs_access_rights ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 97 of file vmcs_intel_x64_vmm_state.h.

◆ ss_access_rights()

gdt_x64::access_rights_type vmcs_intel_x64_vmm_state::ss_access_rights ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 99 of file vmcs_intel_x64_vmm_state.h.

◆ fs_access_rights()

gdt_x64::access_rights_type vmcs_intel_x64_vmm_state::fs_access_rights ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 101 of file vmcs_intel_x64_vmm_state.h.

◆ gs_access_rights()

gdt_x64::access_rights_type vmcs_intel_x64_vmm_state::gs_access_rights ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 103 of file vmcs_intel_x64_vmm_state.h.

◆ tr_access_rights()

gdt_x64::access_rights_type vmcs_intel_x64_vmm_state::tr_access_rights ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 105 of file vmcs_intel_x64_vmm_state.h.

◆ cs_base()

gdt_x64::base_type vmcs_intel_x64_vmm_state::cs_base ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 108 of file vmcs_intel_x64_vmm_state.h.

◆ ss_base()

gdt_x64::base_type vmcs_intel_x64_vmm_state::ss_base ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 110 of file vmcs_intel_x64_vmm_state.h.

◆ fs_base()

gdt_x64::base_type vmcs_intel_x64_vmm_state::fs_base ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 112 of file vmcs_intel_x64_vmm_state.h.

◆ gs_base()

gdt_x64::base_type vmcs_intel_x64_vmm_state::gs_base ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 114 of file vmcs_intel_x64_vmm_state.h.

◆ tr_base()

gdt_x64::base_type vmcs_intel_x64_vmm_state::tr_base ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 116 of file vmcs_intel_x64_vmm_state.h.

◆ ia32_pat_msr()

intel_x64::msrs::value_type vmcs_intel_x64_vmm_state::ia32_pat_msr ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 119 of file vmcs_intel_x64_vmm_state.h.

◆ ia32_efer_msr()

intel_x64::msrs::value_type vmcs_intel_x64_vmm_state::ia32_efer_msr ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 121 of file vmcs_intel_x64_vmm_state.h.

◆ dump()

void vmcs_intel_x64_vmm_state::dump ( ) const
inlineoverridevirtual

Reimplemented from vmcs_intel_x64_state.

Definition at line 124 of file vmcs_intel_x64_vmm_state.h.


The documentation for this class was generated from the following files: