Skip to content

Commit 386aac7

Browse files
author
Marc Zyngier
committed
KVM: arm64: Kill leftovers of ad-hoc timer userspace access
Now that the whole timer infrastructure is handled as system register accesses, get rid of the now unused ad-hoc infrastructure. Signed-off-by: Marc Zyngier <maz@kernel.org>
1 parent 892f7c3 commit 386aac7

File tree

3 files changed

+0
-126
lines changed

3 files changed

+0
-126
lines changed

arch/arm64/kvm/arch_timer.c

Lines changed: 0 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1112,49 +1112,6 @@ void kvm_timer_cpu_down(void)
11121112
disable_percpu_irq(host_ptimer_irq);
11131113
}
11141114

1115-
int kvm_arm_timer_set_reg(struct kvm_vcpu *vcpu, u64 regid, u64 value)
1116-
{
1117-
struct arch_timer_context *timer;
1118-
1119-
switch (regid) {
1120-
case KVM_REG_ARM_TIMER_CTL:
1121-
timer = vcpu_vtimer(vcpu);
1122-
kvm_arm_timer_write(vcpu, timer, TIMER_REG_CTL, value);
1123-
break;
1124-
case KVM_REG_ARM_TIMER_CNT:
1125-
if (!test_bit(KVM_ARCH_FLAG_VM_COUNTER_OFFSET,
1126-
&vcpu->kvm->arch.flags)) {
1127-
timer = vcpu_vtimer(vcpu);
1128-
timer_set_offset(timer, kvm_phys_timer_read() - value);
1129-
}
1130-
break;
1131-
case KVM_REG_ARM_TIMER_CVAL:
1132-
timer = vcpu_vtimer(vcpu);
1133-
kvm_arm_timer_write(vcpu, timer, TIMER_REG_CVAL, value);
1134-
break;
1135-
case KVM_REG_ARM_PTIMER_CTL:
1136-
timer = vcpu_ptimer(vcpu);
1137-
kvm_arm_timer_write(vcpu, timer, TIMER_REG_CTL, value);
1138-
break;
1139-
case KVM_REG_ARM_PTIMER_CNT:
1140-
if (!test_bit(KVM_ARCH_FLAG_VM_COUNTER_OFFSET,
1141-
&vcpu->kvm->arch.flags)) {
1142-
timer = vcpu_ptimer(vcpu);
1143-
timer_set_offset(timer, kvm_phys_timer_read() - value);
1144-
}
1145-
break;
1146-
case KVM_REG_ARM_PTIMER_CVAL:
1147-
timer = vcpu_ptimer(vcpu);
1148-
kvm_arm_timer_write(vcpu, timer, TIMER_REG_CVAL, value);
1149-
break;
1150-
1151-
default:
1152-
return -1;
1153-
}
1154-
1155-
return 0;
1156-
}
1157-
11581115
static u64 read_timer_ctl(struct arch_timer_context *timer)
11591116
{
11601117
/*
@@ -1171,31 +1128,6 @@ static u64 read_timer_ctl(struct arch_timer_context *timer)
11711128
return ctl;
11721129
}
11731130

1174-
u64 kvm_arm_timer_get_reg(struct kvm_vcpu *vcpu, u64 regid)
1175-
{
1176-
switch (regid) {
1177-
case KVM_REG_ARM_TIMER_CTL:
1178-
return kvm_arm_timer_read(vcpu,
1179-
vcpu_vtimer(vcpu), TIMER_REG_CTL);
1180-
case KVM_REG_ARM_TIMER_CNT:
1181-
return kvm_arm_timer_read(vcpu,
1182-
vcpu_vtimer(vcpu), TIMER_REG_CNT);
1183-
case KVM_REG_ARM_TIMER_CVAL:
1184-
return kvm_arm_timer_read(vcpu,
1185-
vcpu_vtimer(vcpu), TIMER_REG_CVAL);
1186-
case KVM_REG_ARM_PTIMER_CTL:
1187-
return kvm_arm_timer_read(vcpu,
1188-
vcpu_ptimer(vcpu), TIMER_REG_CTL);
1189-
case KVM_REG_ARM_PTIMER_CNT:
1190-
return kvm_arm_timer_read(vcpu,
1191-
vcpu_ptimer(vcpu), TIMER_REG_CNT);
1192-
case KVM_REG_ARM_PTIMER_CVAL:
1193-
return kvm_arm_timer_read(vcpu,
1194-
vcpu_ptimer(vcpu), TIMER_REG_CVAL);
1195-
}
1196-
return (u64)-1;
1197-
}
1198-
11991131
static u64 kvm_arm_timer_read(struct kvm_vcpu *vcpu,
12001132
struct arch_timer_context *timer,
12011133
enum kvm_arch_timer_regs treg)

arch/arm64/kvm/guest.c

Lines changed: 0 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -591,49 +591,6 @@ static unsigned long num_core_regs(const struct kvm_vcpu *vcpu)
591591
return copy_core_reg_indices(vcpu, NULL);
592592
}
593593

594-
static const u64 timer_reg_list[] = {
595-
};
596-
597-
#define NUM_TIMER_REGS ARRAY_SIZE(timer_reg_list)
598-
599-
static bool is_timer_reg(u64 index)
600-
{
601-
return false;
602-
}
603-
604-
static int copy_timer_indices(struct kvm_vcpu *vcpu, u64 __user *uindices)
605-
{
606-
for (int i = 0; i < NUM_TIMER_REGS; i++) {
607-
if (put_user(timer_reg_list[i], uindices))
608-
return -EFAULT;
609-
uindices++;
610-
}
611-
612-
return 0;
613-
}
614-
615-
static int set_timer_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
616-
{
617-
void __user *uaddr = (void __user *)(long)reg->addr;
618-
u64 val;
619-
int ret;
620-
621-
ret = copy_from_user(&val, uaddr, KVM_REG_SIZE(reg->id));
622-
if (ret != 0)
623-
return -EFAULT;
624-
625-
return kvm_arm_timer_set_reg(vcpu, reg->id, val);
626-
}
627-
628-
static int get_timer_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
629-
{
630-
void __user *uaddr = (void __user *)(long)reg->addr;
631-
u64 val;
632-
633-
val = kvm_arm_timer_get_reg(vcpu, reg->id);
634-
return copy_to_user(uaddr, &val, KVM_REG_SIZE(reg->id)) ? -EFAULT : 0;
635-
}
636-
637594
static unsigned long num_sve_regs(const struct kvm_vcpu *vcpu)
638595
{
639596
const unsigned int slices = vcpu_sve_slices(vcpu);
@@ -709,7 +666,6 @@ unsigned long kvm_arm_num_regs(struct kvm_vcpu *vcpu)
709666
res += num_sve_regs(vcpu);
710667
res += kvm_arm_num_sys_reg_descs(vcpu);
711668
res += kvm_arm_get_fw_num_regs(vcpu);
712-
res += NUM_TIMER_REGS;
713669

714670
return res;
715671
}
@@ -740,11 +696,6 @@ int kvm_arm_copy_reg_indices(struct kvm_vcpu *vcpu, u64 __user *uindices)
740696
return ret;
741697
uindices += kvm_arm_get_fw_num_regs(vcpu);
742698

743-
ret = copy_timer_indices(vcpu, uindices);
744-
if (ret < 0)
745-
return ret;
746-
uindices += NUM_TIMER_REGS;
747-
748699
return kvm_arm_copy_sys_reg_indices(vcpu, uindices);
749700
}
750701

@@ -762,9 +713,6 @@ int kvm_arm_get_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
762713
case KVM_REG_ARM64_SVE: return get_sve_reg(vcpu, reg);
763714
}
764715

765-
if (is_timer_reg(reg->id))
766-
return get_timer_reg(vcpu, reg);
767-
768716
return kvm_arm_sys_reg_get_reg(vcpu, reg);
769717
}
770718

@@ -782,9 +730,6 @@ int kvm_arm_set_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
782730
case KVM_REG_ARM64_SVE: return set_sve_reg(vcpu, reg);
783731
}
784732

785-
if (is_timer_reg(reg->id))
786-
return set_timer_reg(vcpu, reg);
787-
788733
return kvm_arm_sys_reg_set_reg(vcpu, reg);
789734
}
790735

include/kvm/arm_arch_timer.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,6 @@ void kvm_timer_vcpu_terminate(struct kvm_vcpu *vcpu);
107107

108108
void kvm_timer_init_vm(struct kvm *kvm);
109109

110-
u64 kvm_arm_timer_get_reg(struct kvm_vcpu *, u64 regid);
111-
int kvm_arm_timer_set_reg(struct kvm_vcpu *, u64 regid, u64 value);
112-
113110
int kvm_arm_timer_set_attr(struct kvm_vcpu *vcpu, struct kvm_device_attr *attr);
114111
int kvm_arm_timer_get_attr(struct kvm_vcpu *vcpu, struct kvm_device_attr *attr);
115112
int kvm_arm_timer_has_attr(struct kvm_vcpu *vcpu, struct kvm_device_attr *attr);

0 commit comments

Comments
 (0)