Skip to content

Commit 99bb7e9

Browse files
committed
WIP: Windows 11 support
OSXSAVE feature support in the root OS
1 parent 98b82a9 commit 99bb7e9

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

deps/hypervisor/bfvmm/src/hve/arch/intel_x64/vcpu.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,10 @@ setup()
102102

103103
if (feature_information::ecx::xsave::is_enabled()) {
104104
g_cr4_reg |= ::intel_x64::cr4::osxsave::mask;
105+
bfalert_info(0, "--> vcpu::setup::osxsave on");
106+
}
107+
else {
108+
bfalert_info(0, "--> vcpu::setup::osxsave off");
105109
}
106110

107111
if (extended_feature_flags::subleaf0::ebx::smep::is_enabled()) {
@@ -1452,7 +1456,8 @@ void
14521456
vcpu::set_cr4(uint64_t val) noexcept
14531457
{
14541458
vmcs_n::cr4_read_shadow::set(val);
1455-
vmcs_n::guest_cr4::set(val | m_global_state->ia32_vmx_cr4_fixed0);
1459+
// vmcs_n::guest_cr4::set(val | m_global_state->ia32_vmx_cr4_fixed0);
1460+
vmcs_n::guest_cr4::set(val | m_global_state->ia32_vmx_cr4_fixed0 | ::intel_x64::cr4::osxsave::mask);
14561461
}
14571462

14581463
uint64_t

deps/hypervisor/bfvmm/src/hve/arch/intel_x64/vmexit/control_register.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,8 @@ control_register_handler::control_register_handler(
253253
{
254254
using namespace vmcs_n;
255255

256+
bfalert_info(0, "--> control_register_handler");
257+
256258
vcpu->add_handler(
257259
exit_reason::basic_exit_reason::control_register_accesses,
258260
{&control_register_handler::handle, this}
@@ -333,6 +335,9 @@ control_register_handler::enable_wrcr4_exiting(
333335
vmcs_n::value_type mask)
334336
{
335337
mask |= m_vcpu->global_state()->ia32_vmx_cr4_fixed0;
338+
mask |= ::intel_x64::cr4::osxsave::mask;
339+
340+
bfalert_nhex(0, " control_register_handler::enable_wrcr4_exiting::mask ", mask);
336341
vmcs_n::cr4_guest_host_mask::set(mask);
337342
}
338343

@@ -385,6 +390,8 @@ control_register_handler::execute_wrcr4(
385390
emulate_rdgpr(vcpu);
386391
vcpu->set_gr2(vcpu->cr4());
387392
vcpu->set_cr4(vcpu->gr1());
393+
bfalert_nhex(0, "--> mov_to_cr -> execute_wrcr4 old ", vcpu->gr2());
394+
bfalert_nhex(0, "--> mov_to_cr -> execute_wrcr4 new ", vmcs_n::guest_cr4::get());
388395
}
389396

390397
// -----------------------------------------------------------------------------

0 commit comments

Comments
 (0)