Re: [PATCH 4/8] Added ONE_REG interface for debug instruction

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.


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


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux