On Mon, Oct 26, 2020 at 01:34:48PM +0000, Marc Zyngier wrote:
> The SPR setting code is now completely unused, including that dealing
> with banked AArch32 SPSRs. Cleanup time.
> 
> Signed-off-by: Marc Zyngier <[email protected]>

Acked-by: Mark Rutland <[email protected]>

Mark.

> ---
>  arch/arm64/include/asm/kvm_emulate.h | 26 --------
>  arch/arm64/kvm/regmap.c              | 96 ----------------------------
>  2 files changed, 122 deletions(-)
> 
> diff --git a/arch/arm64/include/asm/kvm_emulate.h 
> b/arch/arm64/include/asm/kvm_emulate.h
> index 736a342dadf7..5d957d0e7b69 100644
> --- a/arch/arm64/include/asm/kvm_emulate.h
> +++ b/arch/arm64/include/asm/kvm_emulate.h
> @@ -34,8 +34,6 @@ enum exception_type {
>  };
>  
>  unsigned long *vcpu_reg32(const struct kvm_vcpu *vcpu, u8 reg_num);
> -unsigned long vcpu_read_spsr32(const struct kvm_vcpu *vcpu);
> -void vcpu_write_spsr32(struct kvm_vcpu *vcpu, unsigned long v);
>  
>  bool kvm_condition_valid32(const struct kvm_vcpu *vcpu);
>  void kvm_skip_instr32(struct kvm_vcpu *vcpu);
> @@ -180,30 +178,6 @@ static __always_inline void vcpu_set_reg(struct kvm_vcpu 
> *vcpu, u8 reg_num,
>               vcpu_gp_regs(vcpu)->regs[reg_num] = val;
>  }
>  
> -static inline unsigned long vcpu_read_spsr(const struct kvm_vcpu *vcpu)
> -{
> -     if (vcpu_mode_is_32bit(vcpu))
> -             return vcpu_read_spsr32(vcpu);
> -
> -     if (vcpu->arch.sysregs_loaded_on_cpu)
> -             return read_sysreg_el1(SYS_SPSR);
> -     else
> -             return __vcpu_sys_reg(vcpu, SPSR_EL1);
> -}
> -
> -static inline void vcpu_write_spsr(struct kvm_vcpu *vcpu, unsigned long v)
> -{
> -     if (vcpu_mode_is_32bit(vcpu)) {
> -             vcpu_write_spsr32(vcpu, v);
> -             return;
> -     }
> -
> -     if (vcpu->arch.sysregs_loaded_on_cpu)
> -             write_sysreg_el1(v, SYS_SPSR);
> -     else
> -             __vcpu_sys_reg(vcpu, SPSR_EL1) = v;
> -}
> -
>  /*
>   * The layout of SPSR for an AArch32 state is different when observed from an
>   * AArch64 SPSR_ELx or an AArch32 SPSR_*. This function generates the AArch32
> diff --git a/arch/arm64/kvm/regmap.c b/arch/arm64/kvm/regmap.c
> index accc1d5fba61..ae7e290bb017 100644
> --- a/arch/arm64/kvm/regmap.c
> +++ b/arch/arm64/kvm/regmap.c
> @@ -126,99 +126,3 @@ unsigned long *vcpu_reg32(const struct kvm_vcpu *vcpu, 
> u8 reg_num)
>  
>       return reg_array + vcpu_reg_offsets[mode][reg_num];
>  }
> -
> -/*
> - * Return the SPSR for the current mode of the virtual CPU.
> - */
> -static int vcpu_spsr32_mode(const struct kvm_vcpu *vcpu)
> -{
> -     unsigned long mode = *vcpu_cpsr(vcpu) & PSR_AA32_MODE_MASK;
> -     switch (mode) {
> -     case PSR_AA32_MODE_SVC: return KVM_SPSR_SVC;
> -     case PSR_AA32_MODE_ABT: return KVM_SPSR_ABT;
> -     case PSR_AA32_MODE_UND: return KVM_SPSR_UND;
> -     case PSR_AA32_MODE_IRQ: return KVM_SPSR_IRQ;
> -     case PSR_AA32_MODE_FIQ: return KVM_SPSR_FIQ;
> -     default: BUG();
> -     }
> -}
> -
> -unsigned long vcpu_read_spsr32(const struct kvm_vcpu *vcpu)
> -{
> -     int spsr_idx = vcpu_spsr32_mode(vcpu);
> -
> -     if (!vcpu->arch.sysregs_loaded_on_cpu) {
> -             switch (spsr_idx) {
> -             case KVM_SPSR_SVC:
> -                     return __vcpu_sys_reg(vcpu, SPSR_EL1);
> -             case KVM_SPSR_ABT:
> -                     return vcpu->arch.ctxt.spsr_abt;
> -             case KVM_SPSR_UND:
> -                     return vcpu->arch.ctxt.spsr_und;
> -             case KVM_SPSR_IRQ:
> -                     return vcpu->arch.ctxt.spsr_irq;
> -             case KVM_SPSR_FIQ:
> -                     return vcpu->arch.ctxt.spsr_fiq;
> -             }
> -     }
> -
> -     switch (spsr_idx) {
> -     case KVM_SPSR_SVC:
> -             return read_sysreg_el1(SYS_SPSR);
> -     case KVM_SPSR_ABT:
> -             return read_sysreg(spsr_abt);
> -     case KVM_SPSR_UND:
> -             return read_sysreg(spsr_und);
> -     case KVM_SPSR_IRQ:
> -             return read_sysreg(spsr_irq);
> -     case KVM_SPSR_FIQ:
> -             return read_sysreg(spsr_fiq);
> -     default:
> -             BUG();
> -     }
> -}
> -
> -void vcpu_write_spsr32(struct kvm_vcpu *vcpu, unsigned long v)
> -{
> -     int spsr_idx = vcpu_spsr32_mode(vcpu);
> -
> -     if (!vcpu->arch.sysregs_loaded_on_cpu) {
> -             switch (spsr_idx) {
> -             case KVM_SPSR_SVC:
> -                     __vcpu_sys_reg(vcpu, SPSR_EL1) = v;
> -                     break;
> -             case KVM_SPSR_ABT:
> -                     vcpu->arch.ctxt.spsr_abt = v;
> -                     break;
> -             case KVM_SPSR_UND:
> -                     vcpu->arch.ctxt.spsr_und = v;
> -                     break;
> -             case KVM_SPSR_IRQ:
> -                     vcpu->arch.ctxt.spsr_irq = v;
> -                     break;
> -             case KVM_SPSR_FIQ:
> -                     vcpu->arch.ctxt.spsr_fiq = v;
> -                     break;
> -             }
> -
> -             return;
> -     }
> -
> -     switch (spsr_idx) {
> -     case KVM_SPSR_SVC:
> -             write_sysreg_el1(v, SYS_SPSR);
> -             break;
> -     case KVM_SPSR_ABT:
> -             write_sysreg(v, spsr_abt);
> -             break;
> -     case KVM_SPSR_UND:
> -             write_sysreg(v, spsr_und);
> -             break;
> -     case KVM_SPSR_IRQ:
> -             write_sysreg(v, spsr_irq);
> -             break;
> -     case KVM_SPSR_FIQ:
> -             write_sysreg(v, spsr_fiq);
> -             break;
> -     }
> -}
> -- 
> 2.28.0
> 
> _______________________________________________
> kvmarm mailing list
> [email protected]
> https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
_______________________________________________
kvmarm mailing list
[email protected]
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

Reply via email to