kvm_vcpu_timer.h (1221B)
1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* 3 * Copyright (C) 2019 Western Digital Corporation or its affiliates. 4 * 5 * Authors: 6 * Atish Patra <atish.patra@wdc.com> 7 */ 8 9#ifndef __KVM_VCPU_RISCV_TIMER_H 10#define __KVM_VCPU_RISCV_TIMER_H 11 12#include <linux/hrtimer.h> 13 14struct kvm_guest_timer { 15 /* Mult & Shift values to get nanoseconds from cycles */ 16 u32 nsec_mult; 17 u32 nsec_shift; 18 /* Time delta value */ 19 u64 time_delta; 20}; 21 22struct kvm_vcpu_timer { 23 /* Flag for whether init is done */ 24 bool init_done; 25 /* Flag for whether timer event is configured */ 26 bool next_set; 27 /* Next timer event cycles */ 28 u64 next_cycles; 29 /* Underlying hrtimer instance */ 30 struct hrtimer hrt; 31}; 32 33int kvm_riscv_vcpu_timer_next_event(struct kvm_vcpu *vcpu, u64 ncycles); 34int kvm_riscv_vcpu_get_reg_timer(struct kvm_vcpu *vcpu, 35 const struct kvm_one_reg *reg); 36int kvm_riscv_vcpu_set_reg_timer(struct kvm_vcpu *vcpu, 37 const struct kvm_one_reg *reg); 38int kvm_riscv_vcpu_timer_init(struct kvm_vcpu *vcpu); 39int kvm_riscv_vcpu_timer_deinit(struct kvm_vcpu *vcpu); 40int kvm_riscv_vcpu_timer_reset(struct kvm_vcpu *vcpu); 41void kvm_riscv_vcpu_timer_restore(struct kvm_vcpu *vcpu); 42int kvm_riscv_guest_timer_init(struct kvm *kvm); 43 44#endif