diff options
Diffstat (limited to 'hypervisor/tests/kvm/x86_64.rs')
-rw-r--r-- | hypervisor/tests/kvm/x86_64.rs | 60 |
1 files changed, 21 insertions, 39 deletions
diff --git a/hypervisor/tests/kvm/x86_64.rs b/hypervisor/tests/kvm/x86_64.rs index c83d5de17..b8b45154a 100644 --- a/hypervisor/tests/kvm/x86_64.rs +++ b/hypervisor/tests/kvm/x86_64.rs @@ -25,7 +25,6 @@ use hypervisor::PitChannelState; use hypervisor::PitRWMode; use hypervisor::PitRWState; use hypervisor::PitState; -use hypervisor::Register; use hypervisor::TriggerMode; use hypervisor::Vm; use hypervisor::VmCap; @@ -365,68 +364,51 @@ fn xcrs() { let gm = GuestMemory::new(&[(GuestAddress(0), 0x10000)]).unwrap(); let vm = KvmVm::new(&kvm, gm, Default::default()).unwrap(); let vcpu = vm.create_vcpu(0).unwrap(); - let mut xcrs = vcpu.get_xcrs().unwrap(); - xcrs[0].value = 1; - vcpu.set_xcrs(&xcrs).unwrap(); - let xcrs2 = vcpu.get_xcrs().unwrap(); - assert_eq!(xcrs[0].value, xcrs2[0].value); + vcpu.set_xcr(0, 1).unwrap(); + let xcrs = vcpu.get_xcrs().unwrap(); + let xcr0 = xcrs.get(&0).unwrap(); + assert_eq!(*xcr0, 1); } #[test] -fn get_msrs() { +fn get_msr() { let kvm = Kvm::new().unwrap(); let gm = GuestMemory::new(&[(GuestAddress(0), 0x10000)]).unwrap(); let vm = KvmVm::new(&kvm, gm, Default::default()).unwrap(); let vcpu = vm.create_vcpu(0).unwrap(); - let mut msrs = vec![ - // This one should succeed - Register { - id: 0x0000011e, - ..Default::default() - }, - // This one will fail to fetch - Register { - id: 0xffffffff, - ..Default::default() - }, - ]; - vcpu.get_msrs(&mut msrs).unwrap(); - assert_eq!(msrs.len(), 1); + + // This one should succeed + let _value = vcpu.get_msr(0x0000011e).unwrap(); + + // This one will fail to fetch + vcpu.get_msr(0xffffffff) + .expect_err("invalid MSR index should fail"); } #[test] -fn set_msrs() { +fn set_msr() { let kvm = Kvm::new().unwrap(); let gm = GuestMemory::new(&[(GuestAddress(0), 0x10000)]).unwrap(); let vm = KvmVm::new(&kvm, gm, Default::default()).unwrap(); let vcpu = vm.create_vcpu(0).unwrap(); const MSR_TSC_AUX: u32 = 0xc0000103; - let mut msrs = vec![Register { - id: MSR_TSC_AUX, - value: 42, - }]; - vcpu.set_msrs(&msrs).unwrap(); - - msrs[0].value = 0; - vcpu.get_msrs(&mut msrs).unwrap(); - assert_eq!(msrs.len(), 1); - assert_eq!(msrs[0].id, MSR_TSC_AUX); - assert_eq!(msrs[0].value, 42); + vcpu.set_msr(MSR_TSC_AUX, 42).unwrap(); + let msr_tsc_aux = vcpu.get_msr(MSR_TSC_AUX).unwrap(); + assert_eq!(msr_tsc_aux, 42); } #[test] -fn set_msrs_unsupported() { +fn set_msr_unsupported() { let kvm = Kvm::new().unwrap(); let gm = GuestMemory::new(&[(GuestAddress(0), 0x10000)]).unwrap(); let vm = KvmVm::new(&kvm, gm, Default::default()).unwrap(); let vcpu = vm.create_vcpu(0).unwrap(); - let msrs = vec![Register { - id: u32::MAX, - value: u64::MAX, - }]; - assert_eq!(vcpu.set_msrs(&msrs), Err(base::Error::new(libc::EPERM))); + assert_eq!( + vcpu.set_msr(u32::MAX, u64::MAX), + Err(base::Error::new(libc::EPERM)) + ); } #[test] |