From: Daniel Henrique Barboza Date: Thu, 3 Aug 2023 16:32:56 +0000 (-0300) Subject: RISC-V: KVM: do not EOPNOTSUPP in set KVM_REG_RISCV_TIMER_REG X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=432a8b35cc23d3af9c60e9c0d191d7ff737afbdc;p=linux.git RISC-V: KVM: do not EOPNOTSUPP in set KVM_REG_RISCV_TIMER_REG The KVM_REG_RISCV_TIMER_REG can be read via get_one_reg(). But trying to write anything in this reg via set_one_reg() results in an EOPNOTSUPP. Change the API to behave like cbom_block_size: instead of always erroring out with EOPNOTSUPP, allow userspace to write the same value (riscv_timebase) back, throwing an EINVAL if a different value is attempted. Signed-off-by: Daniel Henrique Barboza Reviewed-by: Andrew Jones Signed-off-by: Anup Patel --- diff --git a/arch/riscv/kvm/vcpu_timer.c b/arch/riscv/kvm/vcpu_timer.c index 527d269cafffc..75486b25ac45a 100644 --- a/arch/riscv/kvm/vcpu_timer.c +++ b/arch/riscv/kvm/vcpu_timer.c @@ -218,7 +218,8 @@ int kvm_riscv_vcpu_set_reg_timer(struct kvm_vcpu *vcpu, switch (reg_num) { case KVM_REG_RISCV_TIMER_REG(frequency): - ret = -EOPNOTSUPP; + if (reg_val != riscv_timebase) + return -EINVAL; break; case KVM_REG_RISCV_TIMER_REG(time): gt->time_delta = reg_val - get_cycles64();