* [PATCH][v2] KVM: PPC: e500: Emulate TMCFG0 TMRN register
@ 2015-09-25 15:02 Laurentiu Tudor
2015-09-28 21:03 ` Scott Wood
2015-10-15 5:31 ` Paul Mackerras
0 siblings, 2 replies; 3+ messages in thread
From: Laurentiu Tudor @ 2015-09-25 15:02 UTC (permalink / raw)
To: kvm-ppc, kvm; +Cc: Mihai Caraman, Laurentiu Tudor, Scott Wood, Alexander Graf
Emulate TMCFG0 TMRN register exposing one HW thread per vcpu.
Signed-off-by: Mihai Caraman <mihai.caraman@freescale.com>
[Laurentiu.Tudor@freescale.com: rebased on latest kernel, use
define instead of hardcoded value, moved code in own function]
Signed-off-by: Laurentiu Tudor <Laurentiu.Tudor@freescale.com>
---
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(+)
diff --git a/arch/powerpc/include/asm/disassemble.h b/arch/powerpc/include/asm/disassemble.h
index 6330a61..4852e84 100644
--- a/arch/powerpc/include/asm/disassemble.h
+++ b/arch/powerpc/include/asm/disassemble.h
@@ -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;
diff --git a/arch/powerpc/kvm/e500_emulate.c b/arch/powerpc/kvm/e500_emulate.c
index ce7291c..990db69 100644
--- a/arch/powerpc/kvm/e500_emulate.c
+++ b/arch/powerpc/kvm/e500_emulate.c
@@ -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);
--
1.8.3.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH][v2] KVM: PPC: e500: Emulate TMCFG0 TMRN register
2015-09-25 15:02 [PATCH][v2] KVM: PPC: e500: Emulate TMCFG0 TMRN register Laurentiu Tudor
@ 2015-09-28 21:03 ` Scott Wood
2015-10-15 5:31 ` Paul Mackerras
1 sibling, 0 replies; 3+ messages in thread
From: Scott Wood @ 2015-09-28 21:03 UTC (permalink / raw)
To: Laurentiu Tudor
Cc: kvm-ppc, kvm, Mihai Caraman, Laurentiu Tudor, Alexander Graf
On Fri, 2015-09-25 at 18:02 +0300, Laurentiu Tudor wrote:
> Emulate TMCFG0 TMRN register exposing one HW thread per vcpu.
>
> Signed-off-by: Mihai Caraman <mihai.caraman@freescale.com>
> [Laurentiu.Tudor@freescale.com: rebased on latest kernel, use
> define instead of hardcoded value, moved code in own function]
> Signed-off-by: Laurentiu Tudor <Laurentiu.Tudor@freescale.com>
> ---
> 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(+)
Acked-by: Scott Wood <scotttwood@freescale.com>
-Scott
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH][v2] KVM: PPC: e500: Emulate TMCFG0 TMRN register
2015-09-25 15:02 [PATCH][v2] KVM: PPC: e500: Emulate TMCFG0 TMRN register Laurentiu Tudor
2015-09-28 21:03 ` Scott Wood
@ 2015-10-15 5:31 ` Paul Mackerras
1 sibling, 0 replies; 3+ messages in thread
From: Paul Mackerras @ 2015-10-15 5:31 UTC (permalink / raw)
To: Laurentiu Tudor
Cc: kvm-ppc, kvm, Mihai Caraman, Laurentiu Tudor, Scott Wood,
Alexander Graf
On Fri, Sep 25, 2015 at 06:02:23PM +0300, Laurentiu Tudor wrote:
> Emulate TMCFG0 TMRN register exposing one HW thread per vcpu.
>
> Signed-off-by: Mihai Caraman <mihai.caraman@freescale.com>
> [Laurentiu.Tudor@freescale.com: rebased on latest kernel, use
> define instead of hardcoded value, moved code in own function]
> Signed-off-by: Laurentiu Tudor <Laurentiu.Tudor@freescale.com>
Thanks, applied to my kvm-ppc-next branch.
Paul.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-10-15 5:31 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-25 15:02 [PATCH][v2] KVM: PPC: e500: Emulate TMCFG0 TMRN register Laurentiu Tudor
2015-09-28 21:03 ` Scott Wood
2015-10-15 5:31 ` Paul Mackerras
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).