summaryrefslogtreecommitdiff
path: root/arch/riscv/kvm/vcpu.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/riscv/kvm/vcpu.c')
-rw-r--r--arch/riscv/kvm/vcpu.c172
1 files changed, 0 insertions, 172 deletions
diff --git a/arch/riscv/kvm/vcpu.c b/arch/riscv/kvm/vcpu.c
index c44cabce7dd8..e92ba3e5db8c 100644
--- a/arch/riscv/kvm/vcpu.c
+++ b/arch/riscv/kvm/vcpu.c
@@ -38,86 +38,6 @@ const struct kvm_stats_header kvm_vcpu_stats_header = {
sizeof(kvm_vcpu_stats_desc),
};
-#ifdef CONFIG_FPU
-static void kvm_riscv_vcpu_fp_reset(struct kvm_vcpu *vcpu)
-{
- unsigned long isa = vcpu->arch.isa;
- struct kvm_cpu_context *cntx = &vcpu->arch.guest_context;
-
- cntx->sstatus &= ~SR_FS;
- if (riscv_isa_extension_available(&isa, f) ||
- riscv_isa_extension_available(&isa, d))
- cntx->sstatus |= SR_FS_INITIAL;
- else
- cntx->sstatus |= SR_FS_OFF;
-}
-
-static void kvm_riscv_vcpu_fp_clean(struct kvm_cpu_context *cntx)
-{
- cntx->sstatus &= ~SR_FS;
- cntx->sstatus |= SR_FS_CLEAN;
-}
-
-static void kvm_riscv_vcpu_guest_fp_save(struct kvm_cpu_context *cntx,
- unsigned long isa)
-{
- if ((cntx->sstatus & SR_FS) == SR_FS_DIRTY) {
- if (riscv_isa_extension_available(&isa, d))
- __kvm_riscv_fp_d_save(cntx);
- else if (riscv_isa_extension_available(&isa, f))
- __kvm_riscv_fp_f_save(cntx);
- kvm_riscv_vcpu_fp_clean(cntx);
- }
-}
-
-static void kvm_riscv_vcpu_guest_fp_restore(struct kvm_cpu_context *cntx,
- unsigned long isa)
-{
- if ((cntx->sstatus & SR_FS) != SR_FS_OFF) {
- if (riscv_isa_extension_available(&isa, d))
- __kvm_riscv_fp_d_restore(cntx);
- else if (riscv_isa_extension_available(&isa, f))
- __kvm_riscv_fp_f_restore(cntx);
- kvm_riscv_vcpu_fp_clean(cntx);
- }
-}
-
-static void kvm_riscv_vcpu_host_fp_save(struct kvm_cpu_context *cntx)
-{
- /* No need to check host sstatus as it can be modified outside */
- if (riscv_isa_extension_available(NULL, d))
- __kvm_riscv_fp_d_save(cntx);
- else if (riscv_isa_extension_available(NULL, f))
- __kvm_riscv_fp_f_save(cntx);
-}
-
-static void kvm_riscv_vcpu_host_fp_restore(struct kvm_cpu_context *cntx)
-{
- if (riscv_isa_extension_available(NULL, d))
- __kvm_riscv_fp_d_restore(cntx);
- else if (riscv_isa_extension_available(NULL, f))
- __kvm_riscv_fp_f_restore(cntx);
-}
-#else
-static void kvm_riscv_vcpu_fp_reset(struct kvm_vcpu *vcpu)
-{
-}
-static void kvm_riscv_vcpu_guest_fp_save(struct kvm_cpu_context *cntx,
- unsigned long isa)
-{
-}
-static void kvm_riscv_vcpu_guest_fp_restore(struct kvm_cpu_context *cntx,
- unsigned long isa)
-{
-}
-static void kvm_riscv_vcpu_host_fp_save(struct kvm_cpu_context *cntx)
-{
-}
-static void kvm_riscv_vcpu_host_fp_restore(struct kvm_cpu_context *cntx)
-{
-}
-#endif
-
#define KVM_RISCV_ISA_ALLOWED (riscv_isa_extension_mask(a) | \
riscv_isa_extension_mask(c) | \
riscv_isa_extension_mask(d) | \
@@ -414,98 +334,6 @@ static int kvm_riscv_vcpu_set_reg_csr(struct kvm_vcpu *vcpu,
return 0;
}
-static int kvm_riscv_vcpu_get_reg_fp(struct kvm_vcpu *vcpu,
- const struct kvm_one_reg *reg,
- unsigned long rtype)
-{
- struct kvm_cpu_context *cntx = &vcpu->arch.guest_context;
- unsigned long isa = vcpu->arch.isa;
- unsigned long __user *uaddr =
- (unsigned long __user *)(unsigned long)reg->addr;
- unsigned long reg_num = reg->id & ~(KVM_REG_ARCH_MASK |
- KVM_REG_SIZE_MASK |
- rtype);
- void *reg_val;
-
- if ((rtype == KVM_REG_RISCV_FP_F) &&
- riscv_isa_extension_available(&isa, f)) {
- if (KVM_REG_SIZE(reg->id) != sizeof(u32))
- return -EINVAL;
- if (reg_num == KVM_REG_RISCV_FP_F_REG(fcsr))
- reg_val = &cntx->fp.f.fcsr;
- else if ((KVM_REG_RISCV_FP_F_REG(f[0]) <= reg_num) &&
- reg_num <= KVM_REG_RISCV_FP_F_REG(f[31]))
- reg_val = &cntx->fp.f.f[reg_num];
- else
- return -EINVAL;
- } else if ((rtype == KVM_REG_RISCV_FP_D) &&
- riscv_isa_extension_available(&isa, d)) {
- if (reg_num == KVM_REG_RISCV_FP_D_REG(fcsr)) {
- if (KVM_REG_SIZE(reg->id) != sizeof(u32))
- return -EINVAL;
- reg_val = &cntx->fp.d.fcsr;
- } else if ((KVM_REG_RISCV_FP_D_REG(f[0]) <= reg_num) &&
- reg_num <= KVM_REG_RISCV_FP_D_REG(f[31])) {
- if (KVM_REG_SIZE(reg->id) != sizeof(u64))
- return -EINVAL;
- reg_val = &cntx->fp.d.f[reg_num];
- } else
- return -EINVAL;
- } else
- return -EINVAL;
-
- if (copy_to_user(uaddr, reg_val, KVM_REG_SIZE(reg->id)))
- return -EFAULT;
-
- return 0;
-}
-
-static int kvm_riscv_vcpu_set_reg_fp(struct kvm_vcpu *vcpu,
- const struct kvm_one_reg *reg,
- unsigned long rtype)
-{
- struct kvm_cpu_context *cntx = &vcpu->arch.guest_context;
- unsigned long isa = vcpu->arch.isa;
- unsigned long __user *uaddr =
- (unsigned long __user *)(unsigned long)reg->addr;
- unsigned long reg_num = reg->id & ~(KVM_REG_ARCH_MASK |
- KVM_REG_SIZE_MASK |
- rtype);
- void *reg_val;
-
- if ((rtype == KVM_REG_RISCV_FP_F) &&
- riscv_isa_extension_available(&isa, f)) {
- if (KVM_REG_SIZE(reg->id) != sizeof(u32))
- return -EINVAL;
- if (reg_num == KVM_REG_RISCV_FP_F_REG(fcsr))
- reg_val = &cntx->fp.f.fcsr;
- else if ((KVM_REG_RISCV_FP_F_REG(f[0]) <= reg_num) &&
- reg_num <= KVM_REG_RISCV_FP_F_REG(f[31]))
- reg_val = &cntx->fp.f.f[reg_num];
- else
- return -EINVAL;
- } else if ((rtype == KVM_REG_RISCV_FP_D) &&
- riscv_isa_extension_available(&isa, d)) {
- if (reg_num == KVM_REG_RISCV_FP_D_REG(fcsr)) {
- if (KVM_REG_SIZE(reg->id) != sizeof(u32))
- return -EINVAL;
- reg_val = &cntx->fp.d.fcsr;
- } else if ((KVM_REG_RISCV_FP_D_REG(f[0]) <= reg_num) &&
- reg_num <= KVM_REG_RISCV_FP_D_REG(f[31])) {
- if (KVM_REG_SIZE(reg->id) != sizeof(u64))
- return -EINVAL;
- reg_val = &cntx->fp.d.f[reg_num];
- } else
- return -EINVAL;
- } else
- return -EINVAL;
-
- if (copy_from_user(reg_val, uaddr, KVM_REG_SIZE(reg->id)))
- return -EFAULT;
-
- return 0;
-}
-
static int kvm_riscv_vcpu_set_reg(struct kvm_vcpu *vcpu,
const struct kvm_one_reg *reg)
{