Re: [PATCH] KVM/PPC: emulate ehpriv

2013-04-19 Thread Alexander Graf

On 19.04.2013, at 04:44, Tiejun Chen wrote:

 We can provide this emulation to simplify more extension later.

Works for me, but this should really be part of a series that makes use of 
ehpriv.


Alex

 
 Signed-off-by: Tiejun Chen tiejun.c...@windriver.com
 ---
 arch/powerpc/include/asm/disassemble.h |4 
 arch/powerpc/kvm/e500_emulate.c|   17 +
 2 files changed, 21 insertions(+)
 
 diff --git a/arch/powerpc/include/asm/disassemble.h 
 b/arch/powerpc/include/asm/disassemble.h
 index 9b198d1..856f8de 100644
 --- a/arch/powerpc/include/asm/disassemble.h
 +++ b/arch/powerpc/include/asm/disassemble.h
 @@ -77,4 +77,8 @@ static inline unsigned int get_d(u32 inst)
   return inst  0x;
 }
 
 +static inline unsigned int get_oc(u32 inst)
 +{
 + return (inst  11)  0x7fff;
 +}
 #endif /* __ASM_PPC_DISASSEMBLE_H__ */
 diff --git a/arch/powerpc/kvm/e500_emulate.c b/arch/powerpc/kvm/e500_emulate.c
 index e78f353..36492cf 100644
 --- a/arch/powerpc/kvm/e500_emulate.c
 +++ b/arch/powerpc/kvm/e500_emulate.c
 @@ -26,6 +26,7 @@
 #define XOP_TLBRE   946
 #define XOP_TLBWE   978
 #define XOP_TLBILX  18
 +#define XOP_EHPRIV  270
 
 #ifdef CONFIG_KVM_E500MC
 static int dbell2prio(ulong param)
 @@ -80,6 +81,18 @@ static int kvmppc_e500_emul_msgsnd(struct kvm_vcpu *vcpu, 
 int rb)
 
   return EMULATE_DONE;
 }
 +
 +static int kvmppc_e500_emul_ehpriv(struct kvm_run *run, struct kvm_vcpu 
 *vcpu,
 + unsigned int inst)
 +{
 + int emulated = EMULATE_DONE;
 +
 + switch (get_oc(inst)) {
 + default:
 + emulated = EMULATE_FAIL;
 + }
 + return emulated;
 +}
 #endif
 
 int kvmppc_core_emulate_op(struct kvm_run *run, struct kvm_vcpu *vcpu,
 @@ -130,6 +143,10 @@ int kvmppc_core_emulate_op(struct kvm_run *run, struct 
 kvm_vcpu *vcpu,
   emulated = kvmppc_e500_emul_tlbivax(vcpu, ea);
   break;
 
 + case XOP_EHPRIV:
 + emulated = kvmppc_e500_emul_ehpriv(run, vcpu, inst);
 + break;
 +
   default:
   emulated = EMULATE_FAIL;
   }
 -- 
 1.7.9.5
 

--
To unsubscribe from this list: send the line unsubscribe kvm-ppc in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: [PATCH] KVM/PPC: emulate ehpriv

2013-04-19 Thread Bhushan Bharat-R65777


 -Original Message-
 From: Alexander Graf [mailto:ag...@suse.de]
 Sent: Friday, April 19, 2013 5:44 PM
 To: Tiejun Chen
 Cc: k...@vger.kernel.org mailing list; kvm-ppc@vger.kernel.org; Bhushan 
 Bharat-
 R65777
 Subject: Re: [PATCH] KVM/PPC: emulate ehpriv
 
 
 On 19.04.2013, at 04:44, Tiejun Chen wrote:
 
  We can provide this emulation to simplify more extension later.
 
 Works for me, but this should really be part of a series that makes use of
 ehpriv.

Alex, this already planned to be in my debug patches. I know you are busy and I 
am just waiting for other patches to be reviewed :) 

-Bharat

 
 
 Alex
 
 
  Signed-off-by: Tiejun Chen tiejun.c...@windriver.com
  ---
  arch/powerpc/include/asm/disassemble.h |4 
  arch/powerpc/kvm/e500_emulate.c|   17 +
  2 files changed, 21 insertions(+)
 
  diff --git a/arch/powerpc/include/asm/disassemble.h
  b/arch/powerpc/include/asm/disassemble.h
  index 9b198d1..856f8de 100644
  --- a/arch/powerpc/include/asm/disassemble.h
  +++ b/arch/powerpc/include/asm/disassemble.h
  @@ -77,4 +77,8 @@ static inline unsigned int get_d(u32 inst)
  return inst  0x;
  }
 
  +static inline unsigned int get_oc(u32 inst) {
  +   return (inst  11)  0x7fff;
  +}
  #endif /* __ASM_PPC_DISASSEMBLE_H__ */ diff --git
  a/arch/powerpc/kvm/e500_emulate.c b/arch/powerpc/kvm/e500_emulate.c
  index e78f353..36492cf 100644
  --- a/arch/powerpc/kvm/e500_emulate.c
  +++ b/arch/powerpc/kvm/e500_emulate.c
  @@ -26,6 +26,7 @@
  #define XOP_TLBRE   946
  #define XOP_TLBWE   978
  #define XOP_TLBILX  18
  +#define XOP_EHPRIV  270
 
  #ifdef CONFIG_KVM_E500MC
  static int dbell2prio(ulong param)
  @@ -80,6 +81,18 @@ static int kvmppc_e500_emul_msgsnd(struct kvm_vcpu
  *vcpu, int rb)
 
  return EMULATE_DONE;
  }
  +
  +static int kvmppc_e500_emul_ehpriv(struct kvm_run *run, struct kvm_vcpu
 *vcpu,
  +   unsigned int inst)
  +{
  +   int emulated = EMULATE_DONE;
  +
  +   switch (get_oc(inst)) {
  +   default:
  +   emulated = EMULATE_FAIL;
  +   }
  +   return emulated;
  +}
  #endif
 
  int kvmppc_core_emulate_op(struct kvm_run *run, struct kvm_vcpu *vcpu,
  @@ -130,6 +143,10 @@ int kvmppc_core_emulate_op(struct kvm_run *run, struct
 kvm_vcpu *vcpu,
  emulated = kvmppc_e500_emul_tlbivax(vcpu, ea);
  break;
 
  +   case XOP_EHPRIV:
  +   emulated = kvmppc_e500_emul_ehpriv(run, vcpu, inst);
  +   break;
  +
  default:
  emulated = EMULATE_FAIL;
  }
  --
  1.7.9.5
 
 


--
To unsubscribe from this list: send the line unsubscribe kvm-ppc in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] KVM/PPC: emulate ehpriv

2013-04-18 Thread Tiejun Chen
We can provide this emulation to simplify more extension later.

Signed-off-by: Tiejun Chen tiejun.c...@windriver.com
---
 arch/powerpc/include/asm/disassemble.h |4 
 arch/powerpc/kvm/e500_emulate.c|   17 +
 2 files changed, 21 insertions(+)

diff --git a/arch/powerpc/include/asm/disassemble.h 
b/arch/powerpc/include/asm/disassemble.h
index 9b198d1..856f8de 100644
--- a/arch/powerpc/include/asm/disassemble.h
+++ b/arch/powerpc/include/asm/disassemble.h
@@ -77,4 +77,8 @@ static inline unsigned int get_d(u32 inst)
return inst  0x;
 }
 
+static inline unsigned int get_oc(u32 inst)
+{
+   return (inst  11)  0x7fff;
+}
 #endif /* __ASM_PPC_DISASSEMBLE_H__ */
diff --git a/arch/powerpc/kvm/e500_emulate.c b/arch/powerpc/kvm/e500_emulate.c
index e78f353..36492cf 100644
--- a/arch/powerpc/kvm/e500_emulate.c
+++ b/arch/powerpc/kvm/e500_emulate.c
@@ -26,6 +26,7 @@
 #define XOP_TLBRE   946
 #define XOP_TLBWE   978
 #define XOP_TLBILX  18
+#define XOP_EHPRIV  270
 
 #ifdef CONFIG_KVM_E500MC
 static int dbell2prio(ulong param)
@@ -80,6 +81,18 @@ static int kvmppc_e500_emul_msgsnd(struct kvm_vcpu *vcpu, 
int rb)
 
return EMULATE_DONE;
 }
+
+static int kvmppc_e500_emul_ehpriv(struct kvm_run *run, struct kvm_vcpu *vcpu,
+   unsigned int inst)
+{
+   int emulated = EMULATE_DONE;
+
+   switch (get_oc(inst)) {
+   default:
+   emulated = EMULATE_FAIL;
+   }
+   return emulated;
+}
 #endif
 
 int kvmppc_core_emulate_op(struct kvm_run *run, struct kvm_vcpu *vcpu,
@@ -130,6 +143,10 @@ int kvmppc_core_emulate_op(struct kvm_run *run, struct 
kvm_vcpu *vcpu,
emulated = kvmppc_e500_emul_tlbivax(vcpu, ea);
break;
 
+   case XOP_EHPRIV:
+   emulated = kvmppc_e500_emul_ehpriv(run, vcpu, inst);
+   break;
+
default:
emulated = EMULATE_FAIL;
}
-- 
1.7.9.5

--
To unsubscribe from this list: send the line unsubscribe kvm-ppc in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html