On 31.01.2013, at 18:44, Bhushan Bharat-R65777 wrote: > > >> -----Original Message----- >> From: Alexander Graf [mailto:ag...@suse.de] >> Sent: Friday, January 25, 2013 5:18 PM >> To: Bhushan Bharat-R65777 >> Cc: kvm-...@vger.kernel.org; kvm@vger.kernel.org; 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.bhus...@freescale.com> >>> --- >>> 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. Alex -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html