From 18f780c57515fa4eb3fe71657113a49083009135 Mon Sep 17 00:00:00 2001 From: hky1999 <976929993@qq.com> Date: Wed, 21 Jan 2026 11:45:08 +0800 Subject: [PATCH] [fix] bug introduces by commit 5f6eaf4 --- src/vmx/vcpu.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/vmx/vcpu.rs b/src/vmx/vcpu.rs index e142fdb..64642c0 100644 --- a/src/vmx/vcpu.rs +++ b/src/vmx/vcpu.rs @@ -1220,20 +1220,25 @@ impl VmxVcpu { return None; } - if x.contains(Xcr0::XCR0_OPMASK_STATE) + if (x.contains(Xcr0::XCR0_OPMASK_STATE) || x.contains(Xcr0::XCR0_ZMM_HI256_STATE) - || x.contains(Xcr0::XCR0_HI16_ZMM_STATE) - || !x.contains(Xcr0::XCR0_AVX_STATE) + || x.contains(Xcr0::XCR0_HI16_ZMM_STATE)) + && (!x.contains(Xcr0::XCR0_AVX_STATE) || !x.contains(Xcr0::XCR0_OPMASK_STATE) || !x.contains(Xcr0::XCR0_ZMM_HI256_STATE) - || !x.contains(Xcr0::XCR0_HI16_ZMM_STATE) + || !x.contains(Xcr0::XCR0_HI16_ZMM_STATE)) { return None; } Some(x) }) - .ok_or(ax_err_type!(InvalidInput)) + .ok_or_else(|| { + ax_err_type!( + InvalidInput, + format_args!("invalid xcr0 value: {:#x}", value) + ) + }) .and_then(|x| { self.xstate.guest_xcr0 = x.bits(); self.advance_rip(VM_EXIT_INSTR_LEN_XSETBV)