KVM: PPC: e500: Emulate TMCFG0 TMRN register
Subsystems (3)
PATCH v2 1/1 KVM: PPC: e500: Emulate TMCFG0 TMRN register
Emulate TMCFG0 TMRN register exposing one HW thread per vcpu.
[[email protected]: rebased on latest kernel, use
define instead of hardcoded value, moved code in own function]
---
v2:
- moved code in its own function
Needs this patch: https://patchwork.ozlabs.org/patch/521752/
arch/powerpc/include/asm/disassemble.h | 5 +++++ arch/powerpc/kvm/e500_emulate.c | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+)
arch/powerpc/include/asm/disassemble.h +5 -0
@@ -42,6 +42,11 @@ static inline unsigned int get_dcrn(u32 inst)return ((inst >>16 ) &0x1f ) | ((inst >>6 ) &0x3e0 ); } +static inline unsigned int get_tmrn (u32 inst) +{ +return ((inst >>16 ) &0x1f ) | ((inst >>6 ) &0x3e0 ); +} +static inline unsigned int get_rt (u32 inst) {return (inst >>21 ) &0x1f ;
arch/powerpc/kvm/e500_emulate.c +19 -0
@@ -15,6 +15,7 @@#include <asm/kvm_ppc.h> #include <asm/disassemble.h> #include <asm/dbell.h> +#include <asm/reg_booke.h> #include "booke.h" #include "e500.h"
@@ -22,6 +23,7 @@#define XOP_DCBTLS 166#define XOP_MSGSND 206#define XOP_MSGCLR 238 +#define XOP_MFTMR 366#define XOP_TLBIVAX 786#define XOP_TLBSX 914#define XOP_TLBRE 946
@@ -113,6 +115,19 @@ static int kvmppc_e500_emul_dcbtls(struct kvm_vcpu *vcpu)return EMULATE_DONE ; } +static int kvmppc_e500_emul_mftmr (struct kvm_vcpu *vcpu,unsigned int inst, +int rt) +{ +/* Expose one thread per vcpu */ +if (get_tmrn (inst) =TMRN_TMCFG0 ) { +kvmppc_set_gpr (vcpu, rt, +1 | (1 <<TMRN_TMCFG0_NATHRD_SHIFT )); +return EMULATE_DONE ; + } + +return EMULATE_FAIL ; +} +int kvmppc_core_emulate_op_e500 (struct kvm_run *run,struct kvm_vcpu *vcpu,unsigned int inst,int *advance) {
@@ -165,6 +180,10 @@ int kvmppc_core_emulate_op_e500(struct kvm_run *run, struct kvm_vcpu *vcpu, emulated =kvmppc_e500_emul_tlbivax (vcpu, ea);break ; +case XOP_MFTMR : + emulated =kvmppc_e500_emul_mftmr (vcpu, inst, rt); +break ; +case XOP_EHPRIV : emulated =kvmppc_e500_emul_ehpriv (run, vcpu, inst, advance);
Signature · 1 line
1.8.3.1
Quoted 6 lines · Laurentiu Tudor
Emulate TMCFG0 TMRN register exposing one HW thread per vcpu.
Signed-off-by Mihai Caraman <[email protected]>[[email protected]: rebased on latest kernel, use
define instead of hardcoded value, moved code in own function]Signed-off-by Laurentiu Tudor <[email protected]>
Quoted 8 lines
---
v2:
- moved code in its own function
Needs this patch: https://patchwork.ozlabs.org/patch/521752/arch/powerpc/include/asm/disassemble.h | 5 +++++ arch/powerpc/kvm/e500_emulate.c | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+)
-Scott
Paul Mackerras
AppliedQuoted 6 lines · Laurentiu Tudor
Emulate TMCFG0 TMRN register exposing one HW thread per vcpu.
Signed-off-by Mihai Caraman <[email protected]>[[email protected]: rebased on latest kernel, use
define instead of hardcoded value, moved code in own function]Signed-off-by Laurentiu Tudor <[email protected]>
Thanks, applied to my kvm-ppc-next branch.
Paul.