mirror of
https://github.com/momo5502/hypervisor.git
synced 2025-07-04 18:21:55 +00:00
Compare commits
15 Commits
e9d4b3345c
...
main
Author | SHA1 | Date | |
---|---|---|---|
aab19ccb34 | |||
4051223045 | |||
dbc7b5422e | |||
de99750e53 | |||
5a796c7aae | |||
af3d08e791 | |||
8da8fa7f8e | |||
111b9c9a01 | |||
243ddeebdb | |||
a6e484d9df | |||
b3dec2e80c | |||
4d68b0bb78 | |||
79fd28ad7e | |||
7073f7169a | |||
b74f712975 |
15
.github/dependabot.yml
vendored
15
.github/dependabot.yml
vendored
@ -1,7 +1,12 @@
|
|||||||
version: 2
|
version: 2
|
||||||
updates:
|
updates:
|
||||||
- package-ecosystem: gitsubmodule
|
- package-ecosystem: gitsubmodule
|
||||||
directory: "/"
|
directory: "/"
|
||||||
schedule:
|
schedule:
|
||||||
interval: daily
|
interval: monthly
|
||||||
open-pull-requests-limit: 10
|
open-pull-requests-limit: 10
|
||||||
|
|
||||||
|
- package-ecosystem: "github-actions"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: monthly
|
||||||
|
9
.github/workflows/build.yml
vendored
9
.github/workflows/build.yml
vendored
@ -20,7 +20,7 @@ jobs:
|
|||||||
- release
|
- release
|
||||||
steps:
|
steps:
|
||||||
- name: Check out files
|
- name: Check out files
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
submodules: true
|
submodules: true
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
@ -38,13 +38,10 @@ jobs:
|
|||||||
uses: ammaraskar/msvc-problem-matcher@master
|
uses: ammaraskar/msvc-problem-matcher@master
|
||||||
|
|
||||||
- name: Setup DevCmd
|
- name: Setup DevCmd
|
||||||
uses: ilammy/msvc-dev-cmd@v1.12.0
|
uses: ilammy/msvc-dev-cmd@v1.13.0
|
||||||
with:
|
with:
|
||||||
arch: x64
|
arch: x64
|
||||||
|
|
||||||
- name: Setup Ninja
|
|
||||||
uses: ashutoshvarma/setup-ninja@master
|
|
||||||
|
|
||||||
- name: Configure CMake
|
- name: Configure CMake
|
||||||
run: cmake --preset=${{matrix.configuration}}
|
run: cmake --preset=${{matrix.configuration}}
|
||||||
|
|
||||||
@ -52,7 +49,7 @@ jobs:
|
|||||||
run: cmake --build --preset=${{matrix.configuration}}
|
run: cmake --build --preset=${{matrix.configuration}}
|
||||||
|
|
||||||
- name: Upload ${{matrix.configuration}} binaries
|
- name: Upload ${{matrix.configuration}} binaries
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: ${{matrix.configuration}} binaries
|
name: ${{matrix.configuration}} binaries
|
||||||
path: |
|
path: |
|
||||||
|
2
external/FindWDK
vendored
2
external/FindWDK
vendored
Submodule external/FindWDK updated: c941028b26...04b4151f6d
2
external/ia32-doc
vendored
2
external/ia32-doc
vendored
Submodule external/ia32-doc updated: 77e021b690...2bc5284e04
@ -291,7 +291,7 @@ namespace vmx
|
|||||||
|
|
||||||
// --------------------------
|
// --------------------------
|
||||||
|
|
||||||
epdpte temp_epdpte{};
|
pml1 temp_epdpte{};
|
||||||
temp_epdpte.flags = 0;
|
temp_epdpte.flags = 0;
|
||||||
temp_epdpte.read_access = 1;
|
temp_epdpte.read_access = 1;
|
||||||
temp_epdpte.write_access = 1;
|
temp_epdpte.write_access = 1;
|
||||||
@ -306,7 +306,7 @@ namespace vmx
|
|||||||
|
|
||||||
// --------------------------
|
// --------------------------
|
||||||
|
|
||||||
epde_2mb temp_epde{};
|
pml2 temp_epde{};
|
||||||
temp_epde.flags = 0;
|
temp_epde.flags = 0;
|
||||||
temp_epde.read_access = 1;
|
temp_epde.read_access = 1;
|
||||||
temp_epde.write_access = 1;
|
temp_epde.write_access = 1;
|
||||||
@ -400,18 +400,18 @@ namespace vmx
|
|||||||
}
|
}
|
||||||
|
|
||||||
const auto* pml2 = reinterpret_cast<pml2_ptr*>(pml2_entry);
|
const auto* pml2 = reinterpret_cast<pml2_ptr*>(pml2_entry);
|
||||||
auto* pml1 = this->find_pml1_table(pml2->page_frame_number * PAGE_SIZE);
|
auto* pml1_table = this->find_pml1_table(pml2->page_frame_number * PAGE_SIZE);
|
||||||
if (!pml1)
|
if (!pml1_table)
|
||||||
{
|
{
|
||||||
pml1 = static_cast<epte*>(memory::get_virtual_address(pml2->page_frame_number * PAGE_SIZE));
|
pml1_table = static_cast<pml1*>(memory::get_virtual_address(pml2->page_frame_number * PAGE_SIZE));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!pml1)
|
if (!pml1_table)
|
||||||
{
|
{
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
return &pml1[ADDRMASK_EPT_PML1_INDEX(physical_address)];
|
return &pml1_table[ADDRMASK_EPT_PML1_INDEX(physical_address)];
|
||||||
}
|
}
|
||||||
|
|
||||||
pml1* ept::find_pml1_table(const uint64_t physical_address)
|
pml1* ept::find_pml1_table(const uint64_t physical_address)
|
||||||
@ -551,7 +551,7 @@ namespace vmx
|
|||||||
|
|
||||||
auto& split = this->allocate_ept_split();
|
auto& split = this->allocate_ept_split();
|
||||||
|
|
||||||
epte pml1_template{};
|
pml1 pml1_template{};
|
||||||
pml1_template.flags = 0;
|
pml1_template.flags = 0;
|
||||||
pml1_template.read_access = 1;
|
pml1_template.read_access = 1;
|
||||||
pml1_template.write_access = 1;
|
pml1_template.write_access = 1;
|
||||||
|
@ -17,11 +17,11 @@
|
|||||||
|
|
||||||
namespace vmx
|
namespace vmx
|
||||||
{
|
{
|
||||||
using pml4 = ept_pml4;
|
using pml4 = ept_pml4e;
|
||||||
using pml3 = epdpte;
|
using pml3 = ept_pdpte;
|
||||||
using pml2 = epde_2mb;
|
using pml2 = ept_pde_2mb;
|
||||||
using pml2_ptr = epde;
|
using pml2_ptr = ept_pde;
|
||||||
using pml1 = epte;
|
using pml1 = ept_pte;
|
||||||
|
|
||||||
using pml4_entry = pml4e_64;
|
using pml4_entry = pml4e_64;
|
||||||
using pml3_entry = pdpte_64;
|
using pml3_entry = pdpte_64;
|
||||||
|
@ -553,7 +553,7 @@ void vmx_enable_syscall_hooks(const bool enable)
|
|||||||
ia32_vmx_entry_ctls_register entry_ctls_register{};
|
ia32_vmx_entry_ctls_register entry_ctls_register{};
|
||||||
|
|
||||||
vmx_basic_register.flags = __readmsr(IA32_VMX_BASIC);
|
vmx_basic_register.flags = __readmsr(IA32_VMX_BASIC);
|
||||||
exit_ctls_register.flags = read_vmx(VMCS_CTRL_VMEXIT_CONTROLS);
|
exit_ctls_register.flags = read_vmx(VMCS_CTRL_PRIMARY_VMEXIT_CONTROLS);
|
||||||
entry_ctls_register.flags = read_vmx(VMCS_CTRL_VMENTRY_CONTROLS);
|
entry_ctls_register.flags = read_vmx(VMCS_CTRL_VMENTRY_CONTROLS);
|
||||||
|
|
||||||
efer_register.flags = __readmsr(IA32_EFER);
|
efer_register.flags = __readmsr(IA32_EFER);
|
||||||
@ -572,7 +572,7 @@ void vmx_enable_syscall_hooks(const bool enable)
|
|||||||
__vmx_vmwrite(VMCS_CTRL_VMENTRY_CONTROLS, adjust_msr(msr, entry_ctls_register.flags));
|
__vmx_vmwrite(VMCS_CTRL_VMENTRY_CONTROLS, adjust_msr(msr, entry_ctls_register.flags));
|
||||||
|
|
||||||
msr.QuadPart = __readmsr(vmx_basic_register.vmx_controls ? IA32_VMX_TRUE_EXIT_CTLS : IA32_VMX_EXIT_CTLS);
|
msr.QuadPart = __readmsr(vmx_basic_register.vmx_controls ? IA32_VMX_TRUE_EXIT_CTLS : IA32_VMX_EXIT_CTLS);
|
||||||
__vmx_vmwrite(VMCS_CTRL_VMEXIT_CONTROLS, adjust_msr(msr, exit_ctls_register.flags));
|
__vmx_vmwrite(VMCS_CTRL_PRIMARY_VMEXIT_CONTROLS, adjust_msr(msr, exit_ctls_register.flags));
|
||||||
}
|
}
|
||||||
|
|
||||||
__vmx_vmwrite(VMCS_GUEST_EFER, efer_register.flags);
|
__vmx_vmwrite(VMCS_GUEST_EFER, efer_register.flags);
|
||||||
@ -996,7 +996,7 @@ void setup_vmcs_for_cpu(vmx::state& vm_state)
|
|||||||
|
|
||||||
ia32_vmx_exit_ctls_register exit_ctls_register{};
|
ia32_vmx_exit_ctls_register exit_ctls_register{};
|
||||||
exit_ctls_register.host_address_space_size = 1;
|
exit_ctls_register.host_address_space_size = 1;
|
||||||
__vmx_vmwrite(VMCS_CTRL_VMEXIT_CONTROLS,
|
__vmx_vmwrite(VMCS_CTRL_PRIMARY_VMEXIT_CONTROLS,
|
||||||
adjust_msr(launch_context->msr_data[15],
|
adjust_msr(launch_context->msr_data[15],
|
||||||
exit_ctls_register.flags));
|
exit_ctls_register.flags));
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user