@@ -3094,6 +3094,41 @@ mod tests {
30943094 vm. set_device_attr ( & dist_attr) . unwrap ( ) ;
30953095 }
30963096
3097+ #[ cfg( target_arch = "x86_64" ) ]
3098+ #[ test]
3099+ fn test_get_tsc_khz ( ) {
3100+ let kvm = Kvm :: new ( ) . unwrap ( ) ;
3101+ let vm = kvm. create_vm ( ) . unwrap ( ) ;
3102+
3103+ if !kvm. check_extension ( Cap :: GetTscKhz ) {
3104+ vm. get_tsc_khz ( ) . unwrap_err ( ) ;
3105+ } else {
3106+ assert ! ( vm. get_tsc_khz( ) . unwrap( ) > 0 ) ;
3107+ }
3108+ }
3109+
3110+ #[ cfg( target_arch = "x86_64" ) ]
3111+ #[ test]
3112+ fn test_set_tsc_khz ( ) {
3113+ let kvm = Kvm :: new ( ) . unwrap ( ) ;
3114+ let vm = kvm. create_vm ( ) . unwrap ( ) ;
3115+ let freq = vm. get_tsc_khz ( ) . unwrap ( ) ;
3116+
3117+ if !( kvm. check_extension ( Cap :: GetTscKhz ) && kvm. check_extension ( Cap :: TscControl ) ) {
3118+ vm. set_tsc_khz ( 0 ) . unwrap_err ( ) ;
3119+ } else {
3120+ vm. set_tsc_khz ( freq - 500000 ) . unwrap ( ) ;
3121+ assert_eq ! ( vm. get_tsc_khz( ) . unwrap( ) , freq - 500000 ) ;
3122+ let vcpu = vm. create_vcpu ( 0 ) . unwrap ( ) ;
3123+ assert_eq ! ( vcpu. get_tsc_khz( ) . unwrap( ) , freq - 500000 ) ;
3124+
3125+ vm. set_tsc_khz ( freq + 500000 ) . unwrap ( ) ;
3126+ assert_eq ! ( vm. get_tsc_khz( ) . unwrap( ) , freq + 500000 ) ;
3127+ let vcpu = vm. create_vcpu ( 1 ) . unwrap ( ) ;
3128+ assert_eq ! ( vcpu. get_tsc_khz( ) . unwrap( ) , freq + 500000 ) ;
3129+ }
3130+ }
3131+
30973132 #[ test]
30983133 #[ cfg( target_arch = "x86_64" ) ]
30993134 fn test_set_msr_filter_unchecked ( ) {
0 commit comments