On 31.01.2013, at 18:58, Bhushan Bharat-R65777 wrote: > > >> -----Original Message----- >> From: Alexander Graf [mailto:agraf@xxxxxxx] >> Sent: Thursday, January 31, 2013 11:23 PM >> To: Bhushan Bharat-R65777 >> Cc: kvm-ppc@xxxxxxxxxxxxxxx; kvm@xxxxxxxxxxxxxxx >> Subject: Re: [PATCH 4/8] Added ONE_REG interface for debug instruction >> >> >> On 31.01.2013, at 18:44, Bhushan Bharat-R65777 wrote: >> >>> >>> >>>> -----Original Message----- >>>> From: Alexander Graf [mailto:agraf@xxxxxxx] >>>> Sent: Friday, January 25, 2013 5:18 PM >>>> To: Bhushan Bharat-R65777 >>>> Cc: kvm-ppc@xxxxxxxxxxxxxxx; kvm@xxxxxxxxxxxxxxx; Bhushan >>>> Bharat-R65777 >>>> Subject: Re: [PATCH 4/8] Added ONE_REG interface for debug >>>> instruction >>>> >>>> >>>> On 16.01.2013, at 09:24, Bharat Bhushan wrote: >>>> >>>>> This patch adds the one_reg interface to get the special instruction >>>>> to be used for setting software breakpoint from userspace. >>>>> >>>>> Signed-off-by: Bharat Bhushan <bharat.bhushan@xxxxxxxxxxxxx> >>>>> --- >>>>> Documentation/virtual/kvm/api.txt | 1 + >>>>> arch/powerpc/include/asm/kvm_ppc.h | 1 + >>>>> arch/powerpc/include/uapi/asm/kvm.h | 3 +++ >>>>> arch/powerpc/kvm/44x.c | 5 +++++ >>>>> arch/powerpc/kvm/booke.c | 10 ++++++++++ >>>>> arch/powerpc/kvm/e500.c | 5 +++++ >>>>> arch/powerpc/kvm/e500.h | 9 +++++++++ >>>>> arch/powerpc/kvm/e500mc.c | 5 +++++ >>>>> 8 files changed, 39 insertions(+), 0 deletions(-) >>>>> >>>>> diff --git a/Documentation/virtual/kvm/api.txt >>>>> b/Documentation/virtual/kvm/api.txt >>>>> index 09905cb..7e8be9e 100644 >>>>> --- a/Documentation/virtual/kvm/api.txt >>>>> +++ b/Documentation/virtual/kvm/api.txt >>>>> @@ -1775,6 +1775,7 @@ registers, find a list below: >>>>> PPC | KVM_REG_PPC_VPA_DTL | 128 >>>>> PPC | KVM_REG_PPC_EPCR | 32 >>>>> PPC | KVM_REG_PPC_EPR | 32 >>>>> + PPC | KVM_REG_PPC_DEBUG_INST| 32 >>>>> >>>>> 4.69 KVM_GET_ONE_REG >>>>> >>>>> diff --git a/arch/powerpc/include/asm/kvm_ppc.h >>>>> b/arch/powerpc/include/asm/kvm_ppc.h >>>>> index 44a657a..b3c481e 100644 >>>>> --- a/arch/powerpc/include/asm/kvm_ppc.h >>>>> +++ b/arch/powerpc/include/asm/kvm_ppc.h >>>>> @@ -235,6 +235,7 @@ union kvmppc_one_reg { >>>>> >>>>> void kvmppc_core_get_sregs(struct kvm_vcpu *vcpu, struct kvm_sregs >>>>> *sregs); int kvmppc_core_set_sregs(struct kvm_vcpu *vcpu, struct >>>>> kvm_sregs *sregs); >>>>> +u32 kvmppc_core_debug_inst_op(void); >>>>> >>>>> void kvmppc_get_sregs_ivor(struct kvm_vcpu *vcpu, struct kvm_sregs >>>>> *sregs); int kvmppc_set_sregs_ivor(struct kvm_vcpu *vcpu, struct >>>>> kvm_sregs *sregs); diff --git a/arch/powerpc/include/uapi/asm/kvm.h >>>>> b/arch/powerpc/include/uapi/asm/kvm.h >>>>> index 16064d0..e81ae5b 100644 >>>>> --- a/arch/powerpc/include/uapi/asm/kvm.h >>>>> +++ b/arch/powerpc/include/uapi/asm/kvm.h >>>>> @@ -417,4 +417,7 @@ struct kvm_get_htab_header { >>>>> #define KVM_REG_PPC_EPCR (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x85) >>>>> #define KVM_REG_PPC_EPR (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0x86) >>>>> >>>>> +/* Debugging: Special instruction for software breakpoint */ >>>>> +#define KVM_REG_PPC_DEBUG_INST (KVM_REG_PPC | KVM_REG_SIZE_U32 | >>>>> +0x87) >>>>> + >>>>> #endif /* __LINUX_KVM_POWERPC_H */ >>>>> diff --git a/arch/powerpc/kvm/44x.c b/arch/powerpc/kvm/44x.c index >>>>> 3d7fd21..41501be 100644 >>>>> --- a/arch/powerpc/kvm/44x.c >>>>> +++ b/arch/powerpc/kvm/44x.c >>>>> @@ -114,6 +114,11 @@ int kvmppc_core_vcpu_translate(struct kvm_vcpu *vcpu, >>>>> return 0; >>>>> } >>>>> >>>>> +u32 kvmppc_core_debug_inst_op(void) { >>>>> + return -1; >> >> The way you handle it here this needs to be an int >> kvmppc_core_debug_inst_op(u32 *inst) so you can return an error for 440. I don't >> think it's worth to worry about a case where we don't know about the inst >> though. Just return the same as what we use on e500v2 here. >> >>>>> +} >>>>> + >>>>> void kvmppc_core_get_sregs(struct kvm_vcpu *vcpu, struct kvm_sregs >>>>> *sregs) { >>>>> kvmppc_get_sregs_ivor(vcpu, sregs); diff --git >>>>> a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c index >>>>> d2f502d..453a10f 100644 >>>>> --- a/arch/powerpc/kvm/booke.c >>>>> +++ b/arch/powerpc/kvm/booke.c >>>> >>>> Please provide the DEBUG_INST on a more global level - across all ppc >> subarchs. >>> >>> Do you mean defining in powerpc.c ? >>> >>> We are using one_reg for DEBUG_INST and one_reg_ioctl and defined in >> respective subarchs (booke and books have their separate handler). So how you >> want this to be defined in more common way for all subarchs? >> >> Just add it to all subarch's one_reg handlers. > > And what book3s etc should return? > > -1 ? trap maybe? Alex -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html