Re: [PATCH 3/7] KVM: PPC: debug stub interface parameter defined

2013-03-14 Thread Alexander Graf

On 14.03.2013, at 13:22, Jan Kiszka wrote:

> On 2013-03-14 13:19, Alexander Graf wrote:
>> 
>> On 14.03.2013, at 13:13, Jan Kiszka wrote:
>> 
>>> On 2013-03-14 13:09, Alexander Graf wrote:
>>>> 
>>>> On 14.03.2013, at 12:57, Jan Kiszka wrote:
>>>> 
>>>>> On 2013-03-14 12:54, Alexander Graf wrote:
>>>>>> 
>>>>>> On 14.03.2013, at 05:42, Bhushan Bharat-R65777 wrote:
>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>>> -Original Message-
>>>>>>>> From: Alexander Graf [mailto:ag...@suse.de]
>>>>>>>> Sent: Thursday, March 07, 2013 6:51 PM
>>>>>>>> To: Bhushan Bharat-R65777
>>>>>>>> Cc: kvm-ppc@vger.kernel.org; k...@vger.kernel.org; Wood Scott-B07421; 
>>>>>>>> Bhushan
>>>>>>>> Bharat-R65777
>>>>>>>> Subject: Re: [PATCH 3/7] KVM: PPC: debug stub interface parameter 
>>>>>>>> defined
>>>>>>>> 
>>>>>>>> 
>>>>>>>> On 28.02.2013, at 05:13, Bharat Bhushan wrote:
>>>>>>>> 
>>>>>>>>> This patch defines the interface parameter for KVM_SET_GUEST_DEBUG
>>>>>>>>> ioctl support. Follow up patches will use this for setting up hardware
>>>>>>>>> breakpoints, watchpoints and software breakpoints.
>>>>>>>>> 
>>>>>>>>> Also kvm_arch_vcpu_ioctl_set_guest_debug() is brought one level below.
>>>>>>>>> This is because I am not sure what is required for book3s. So this
>>>>>>>>> ioctl behaviour will not change for book3s.
>>>>>>>>> 
>>>>>>>>> Signed-off-by: Bharat Bhushan 
>>>>>>>>> ---
>>>>>>>>> arch/powerpc/include/uapi/asm/kvm.h |   23 +++
>>>>>>>>> arch/powerpc/kvm/book3s.c   |6 ++
>>>>>>>>> arch/powerpc/kvm/booke.c|6 ++
>>>>>>>>> arch/powerpc/kvm/powerpc.c  |6 --
>>>>>>>>> 4 files changed, 35 insertions(+), 6 deletions(-)
>>>>>>>>> 
>>>>>>>>> diff --git a/arch/powerpc/include/uapi/asm/kvm.h
>>>>>>>>> b/arch/powerpc/include/uapi/asm/kvm.h
>>>>>>>>> index c2ff99c..15f9a00 100644
>>>>>>>>> --- a/arch/powerpc/include/uapi/asm/kvm.h
>>>>>>>>> +++ b/arch/powerpc/include/uapi/asm/kvm.h
>>>>>>>>> @@ -272,8 +272,31 @@ struct kvm_debug_exit_arch {
>>>>>>>>> 
>>>>>>>>> /* for KVM_SET_GUEST_DEBUG */
>>>>>>>>> struct kvm_guest_debug_arch {
>>>>>>>>> + struct {
>>>>>>>>> + /* H/W breakpoint/watchpoint address */
>>>>>>>>> + __u64 addr;
>>>>>>>>> + /*
>>>>>>>>> +  * Type denotes h/w breakpoint, read watchpoint, write
>>>>>>>>> +  * watchpoint or watchpoint (both read and write).
>>>>>>>>> +  */
>>>>>>>>> +#define KVMPPC_DEBUG_NOTYPE  0x0
>>>>>>>>> +#define KVMPPC_DEBUG_BREAKPOINT  (1UL << 1)
>>>>>>>>> +#define KVMPPC_DEBUG_WATCH_WRITE (1UL << 2)
>>>>>>>>> +#define KVMPPC_DEBUG_WATCH_READ  (1UL << 3)
>>>>>>>>> + __u32 type;
>>>>>>>>> + __u32 reserved;
>>>>>>>>> + } bp[16];
>>>>>>>>> };
>>>>>>>>> 
>>>>>>>>> +/* Debug related defines */
>>>>>>>>> +/*
>>>>>>>>> + * kvm_guest_debug->control is a 32 bit field. The lower 16 bits are
>>>>>>>>> +generic
>>>>>>>>> + * and upper 16 bits are architecture specific. Architecture specific
>>>>>>>>> +defines
>>>>>>>>> + * that ioctl is for setting hardware breakpoint or software 
>>>>>>>>> breakpoint.
>>

Re: [PATCH 3/7] KVM: PPC: debug stub interface parameter defined

2013-03-14 Thread Jan Kiszka
On 2013-03-14 12:54, Alexander Graf wrote:
> 
> On 14.03.2013, at 05:42, Bhushan Bharat-R65777 wrote:
> 
>>
>>
>>> -Original Message-
>>> From: Alexander Graf [mailto:ag...@suse.de]
>>> Sent: Thursday, March 07, 2013 6:51 PM
>>> To: Bhushan Bharat-R65777
>>> Cc: kvm-ppc@vger.kernel.org; k...@vger.kernel.org; Wood Scott-B07421; 
>>> Bhushan
>>> Bharat-R65777
>>> Subject: Re: [PATCH 3/7] KVM: PPC: debug stub interface parameter defined
>>>
>>>
>>> On 28.02.2013, at 05:13, Bharat Bhushan wrote:
>>>
>>>> This patch defines the interface parameter for KVM_SET_GUEST_DEBUG
>>>> ioctl support. Follow up patches will use this for setting up hardware
>>>> breakpoints, watchpoints and software breakpoints.
>>>>
>>>> Also kvm_arch_vcpu_ioctl_set_guest_debug() is brought one level below.
>>>> This is because I am not sure what is required for book3s. So this
>>>> ioctl behaviour will not change for book3s.
>>>>
>>>> Signed-off-by: Bharat Bhushan 
>>>> ---
>>>> arch/powerpc/include/uapi/asm/kvm.h |   23 +++
>>>> arch/powerpc/kvm/book3s.c   |6 ++
>>>> arch/powerpc/kvm/booke.c|6 ++
>>>> arch/powerpc/kvm/powerpc.c  |6 --
>>>> 4 files changed, 35 insertions(+), 6 deletions(-)
>>>>
>>>> diff --git a/arch/powerpc/include/uapi/asm/kvm.h
>>>> b/arch/powerpc/include/uapi/asm/kvm.h
>>>> index c2ff99c..15f9a00 100644
>>>> --- a/arch/powerpc/include/uapi/asm/kvm.h
>>>> +++ b/arch/powerpc/include/uapi/asm/kvm.h
>>>> @@ -272,8 +272,31 @@ struct kvm_debug_exit_arch {
>>>>
>>>> /* for KVM_SET_GUEST_DEBUG */
>>>> struct kvm_guest_debug_arch {
>>>> +  struct {
>>>> +  /* H/W breakpoint/watchpoint address */
>>>> +  __u64 addr;
>>>> +  /*
>>>> +   * Type denotes h/w breakpoint, read watchpoint, write
>>>> +   * watchpoint or watchpoint (both read and write).
>>>> +   */
>>>> +#define KVMPPC_DEBUG_NOTYPE   0x0
>>>> +#define KVMPPC_DEBUG_BREAKPOINT   (1UL << 1)
>>>> +#define KVMPPC_DEBUG_WATCH_WRITE  (1UL << 2)
>>>> +#define KVMPPC_DEBUG_WATCH_READ   (1UL << 3)
>>>> +  __u32 type;
>>>> +  __u32 reserved;
>>>> +  } bp[16];
>>>> };
>>>>
>>>> +/* Debug related defines */
>>>> +/*
>>>> + * kvm_guest_debug->control is a 32 bit field. The lower 16 bits are
>>>> +generic
>>>> + * and upper 16 bits are architecture specific. Architecture specific
>>>> +defines
>>>> + * that ioctl is for setting hardware breakpoint or software breakpoint.
>>>> + */
>>>> +#define KVM_GUESTDBG_USE_SW_BP0x0001
>>>> +#define KVM_GUESTDBG_USE_HW_BP0x0002
>>>
>>> You only need
>>>
>>> #define KVM_GUESTDBG_HW_BP 0x0001
>>>
>>> In absence of the flag, it's a SW breakpoint.
>>
>> We kept this for 2 reasons; 1) Same logic is applied for i386, so trying to 
>> keep consistent 2) better clarity.
> 
> Jan, was there any special reason to have 2 flags for HW/SW breakpoint on x86 
> rather than one bit that indicates which one is used?

Different mechanics on x86: HW goes via debug registers and shows up as
INT1, SW is INT3 (plus guest patching done by user land).

Jan

-- 
Siemens AG, Corporate Technology, CT RTC ITP SDP-DE
Corporate Competence Center Embedded Linux
--
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 3/7] KVM: PPC: debug stub interface parameter defined

2013-03-14 Thread Jan Kiszka
On 2013-03-14 13:19, Alexander Graf wrote:
> 
> On 14.03.2013, at 13:13, Jan Kiszka wrote:
> 
>> On 2013-03-14 13:09, Alexander Graf wrote:
>>>
>>> On 14.03.2013, at 12:57, Jan Kiszka wrote:
>>>
>>>> On 2013-03-14 12:54, Alexander Graf wrote:
>>>>>
>>>>> On 14.03.2013, at 05:42, Bhushan Bharat-R65777 wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>>> -Original Message-
>>>>>>> From: Alexander Graf [mailto:ag...@suse.de]
>>>>>>> Sent: Thursday, March 07, 2013 6:51 PM
>>>>>>> To: Bhushan Bharat-R65777
>>>>>>> Cc: kvm-ppc@vger.kernel.org; k...@vger.kernel.org; Wood Scott-B07421; 
>>>>>>> Bhushan
>>>>>>> Bharat-R65777
>>>>>>> Subject: Re: [PATCH 3/7] KVM: PPC: debug stub interface parameter 
>>>>>>> defined
>>>>>>>
>>>>>>>
>>>>>>> On 28.02.2013, at 05:13, Bharat Bhushan wrote:
>>>>>>>
>>>>>>>> This patch defines the interface parameter for KVM_SET_GUEST_DEBUG
>>>>>>>> ioctl support. Follow up patches will use this for setting up hardware
>>>>>>>> breakpoints, watchpoints and software breakpoints.
>>>>>>>>
>>>>>>>> Also kvm_arch_vcpu_ioctl_set_guest_debug() is brought one level below.
>>>>>>>> This is because I am not sure what is required for book3s. So this
>>>>>>>> ioctl behaviour will not change for book3s.
>>>>>>>>
>>>>>>>> Signed-off-by: Bharat Bhushan 
>>>>>>>> ---
>>>>>>>> arch/powerpc/include/uapi/asm/kvm.h |   23 +++
>>>>>>>> arch/powerpc/kvm/book3s.c   |6 ++
>>>>>>>> arch/powerpc/kvm/booke.c|6 ++
>>>>>>>> arch/powerpc/kvm/powerpc.c  |6 --
>>>>>>>> 4 files changed, 35 insertions(+), 6 deletions(-)
>>>>>>>>
>>>>>>>> diff --git a/arch/powerpc/include/uapi/asm/kvm.h
>>>>>>>> b/arch/powerpc/include/uapi/asm/kvm.h
>>>>>>>> index c2ff99c..15f9a00 100644
>>>>>>>> --- a/arch/powerpc/include/uapi/asm/kvm.h
>>>>>>>> +++ b/arch/powerpc/include/uapi/asm/kvm.h
>>>>>>>> @@ -272,8 +272,31 @@ struct kvm_debug_exit_arch {
>>>>>>>>
>>>>>>>> /* for KVM_SET_GUEST_DEBUG */
>>>>>>>> struct kvm_guest_debug_arch {
>>>>>>>> +  struct {
>>>>>>>> +  /* H/W breakpoint/watchpoint address */
>>>>>>>> +  __u64 addr;
>>>>>>>> +  /*
>>>>>>>> +   * Type denotes h/w breakpoint, read watchpoint, write
>>>>>>>> +   * watchpoint or watchpoint (both read and write).
>>>>>>>> +   */
>>>>>>>> +#define KVMPPC_DEBUG_NOTYPE   0x0
>>>>>>>> +#define KVMPPC_DEBUG_BREAKPOINT   (1UL << 1)
>>>>>>>> +#define KVMPPC_DEBUG_WATCH_WRITE  (1UL << 2)
>>>>>>>> +#define KVMPPC_DEBUG_WATCH_READ   (1UL << 3)
>>>>>>>> +  __u32 type;
>>>>>>>> +  __u32 reserved;
>>>>>>>> +  } bp[16];
>>>>>>>> };
>>>>>>>>
>>>>>>>> +/* Debug related defines */
>>>>>>>> +/*
>>>>>>>> + * kvm_guest_debug->control is a 32 bit field. The lower 16 bits are
>>>>>>>> +generic
>>>>>>>> + * and upper 16 bits are architecture specific. Architecture specific
>>>>>>>> +defines
>>>>>>>> + * that ioctl is for setting hardware breakpoint or software 
>>>>>>>> breakpoint.
>>>>>>>> + */
>>>>>>>> +#define KVM_GUESTDBG_USE_SW_BP0x0001
>>>>>>>> +#define KVM_GUESTDBG_USE_HW_BP0x0002
>>>>>>>
>>>>>>> You only need
>>>>>>>
>>>>>>> #defi

Re: [PATCH 3/7] KVM: PPC: debug stub interface parameter defined

2013-03-14 Thread Alexander Graf

On 14.03.2013, at 13:13, Jan Kiszka wrote:

> On 2013-03-14 13:09, Alexander Graf wrote:
>> 
>> On 14.03.2013, at 12:57, Jan Kiszka wrote:
>> 
>>> On 2013-03-14 12:54, Alexander Graf wrote:
>>>> 
>>>> On 14.03.2013, at 05:42, Bhushan Bharat-R65777 wrote:
>>>> 
>>>>> 
>>>>> 
>>>>>> -Original Message-
>>>>>> From: Alexander Graf [mailto:ag...@suse.de]
>>>>>> Sent: Thursday, March 07, 2013 6:51 PM
>>>>>> To: Bhushan Bharat-R65777
>>>>>> Cc: kvm-ppc@vger.kernel.org; k...@vger.kernel.org; Wood Scott-B07421; 
>>>>>> Bhushan
>>>>>> Bharat-R65777
>>>>>> Subject: Re: [PATCH 3/7] KVM: PPC: debug stub interface parameter defined
>>>>>> 
>>>>>> 
>>>>>> On 28.02.2013, at 05:13, Bharat Bhushan wrote:
>>>>>> 
>>>>>>> This patch defines the interface parameter for KVM_SET_GUEST_DEBUG
>>>>>>> ioctl support. Follow up patches will use this for setting up hardware
>>>>>>> breakpoints, watchpoints and software breakpoints.
>>>>>>> 
>>>>>>> Also kvm_arch_vcpu_ioctl_set_guest_debug() is brought one level below.
>>>>>>> This is because I am not sure what is required for book3s. So this
>>>>>>> ioctl behaviour will not change for book3s.
>>>>>>> 
>>>>>>> Signed-off-by: Bharat Bhushan 
>>>>>>> ---
>>>>>>> arch/powerpc/include/uapi/asm/kvm.h |   23 +++
>>>>>>> arch/powerpc/kvm/book3s.c   |6 ++
>>>>>>> arch/powerpc/kvm/booke.c|6 ++
>>>>>>> arch/powerpc/kvm/powerpc.c  |6 --
>>>>>>> 4 files changed, 35 insertions(+), 6 deletions(-)
>>>>>>> 
>>>>>>> diff --git a/arch/powerpc/include/uapi/asm/kvm.h
>>>>>>> b/arch/powerpc/include/uapi/asm/kvm.h
>>>>>>> index c2ff99c..15f9a00 100644
>>>>>>> --- a/arch/powerpc/include/uapi/asm/kvm.h
>>>>>>> +++ b/arch/powerpc/include/uapi/asm/kvm.h
>>>>>>> @@ -272,8 +272,31 @@ struct kvm_debug_exit_arch {
>>>>>>> 
>>>>>>> /* for KVM_SET_GUEST_DEBUG */
>>>>>>> struct kvm_guest_debug_arch {
>>>>>>> +   struct {
>>>>>>> +   /* H/W breakpoint/watchpoint address */
>>>>>>> +   __u64 addr;
>>>>>>> +   /*
>>>>>>> +* Type denotes h/w breakpoint, read watchpoint, write
>>>>>>> +* watchpoint or watchpoint (both read and write).
>>>>>>> +*/
>>>>>>> +#define KVMPPC_DEBUG_NOTYPE0x0
>>>>>>> +#define KVMPPC_DEBUG_BREAKPOINT(1UL << 1)
>>>>>>> +#define KVMPPC_DEBUG_WATCH_WRITE   (1UL << 2)
>>>>>>> +#define KVMPPC_DEBUG_WATCH_READ(1UL << 3)
>>>>>>> +   __u32 type;
>>>>>>> +   __u32 reserved;
>>>>>>> +   } bp[16];
>>>>>>> };
>>>>>>> 
>>>>>>> +/* Debug related defines */
>>>>>>> +/*
>>>>>>> + * kvm_guest_debug->control is a 32 bit field. The lower 16 bits are
>>>>>>> +generic
>>>>>>> + * and upper 16 bits are architecture specific. Architecture specific
>>>>>>> +defines
>>>>>>> + * that ioctl is for setting hardware breakpoint or software 
>>>>>>> breakpoint.
>>>>>>> + */
>>>>>>> +#define KVM_GUESTDBG_USE_SW_BP 0x0001
>>>>>>> +#define KVM_GUESTDBG_USE_HW_BP 0x0002
>>>>>> 
>>>>>> You only need
>>>>>> 
>>>>>> #define KVM_GUESTDBG_HW_BP 0x0001
>>>>>> 
>>>>>> In absence of the flag, it's a SW breakpoint.
>>>>> 
>>>>> We kept this for 2 reasons; 1) Same logic is applied for i386, so trying 
>>>>> to keep consistent 2) better clarity.
>>>> 
>>>> Jan, was there any special reason to have 2 flags for HW/SW breakpoint on 
>>>> x86 rather than one bit that indicates which one is used?
>>> 
>>> Different mechanics on x86: HW goes via debug registers and shows up as
>>> INT1, SW is INT3 (plus guest patching done by user land).
>> 
>> Well, the same thing goes for us. What I'm asking is whether there is a 
>> specific reason (extensibility, oversight, taste, ...) that you did
>> 
>>#define KVM_GUESTDBG_USE_SW_BP   0x0001
>>#define KVM_GUESTDBG_USE_HW_BP   0x0002
>> 
>> rather than
>> 
>>#define KVM_GUESTDBG_BP_TYPE  0x0001
>>#define KVM_GUESTDBG_BP_TYPE_SW   0x0001
>>#define KVM_GUESTDBG_BP_TYPE_HW   0x
>> 
>> :)
> 
> Those bits enable or disable the features separately. You may also leave
> both off if you like (and just use single stepping).

Ah, so these are global configuration bits, not per-breakpoint configuration?


Alex

--
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 3/7] KVM: PPC: debug stub interface parameter defined

2013-03-14 Thread Jan Kiszka
On 2013-03-14 13:09, Alexander Graf wrote:
> 
> On 14.03.2013, at 12:57, Jan Kiszka wrote:
> 
>> On 2013-03-14 12:54, Alexander Graf wrote:
>>>
>>> On 14.03.2013, at 05:42, Bhushan Bharat-R65777 wrote:
>>>
>>>>
>>>>
>>>>> -Original Message-
>>>>> From: Alexander Graf [mailto:ag...@suse.de]
>>>>> Sent: Thursday, March 07, 2013 6:51 PM
>>>>> To: Bhushan Bharat-R65777
>>>>> Cc: kvm-ppc@vger.kernel.org; k...@vger.kernel.org; Wood Scott-B07421; 
>>>>> Bhushan
>>>>> Bharat-R65777
>>>>> Subject: Re: [PATCH 3/7] KVM: PPC: debug stub interface parameter defined
>>>>>
>>>>>
>>>>> On 28.02.2013, at 05:13, Bharat Bhushan wrote:
>>>>>
>>>>>> This patch defines the interface parameter for KVM_SET_GUEST_DEBUG
>>>>>> ioctl support. Follow up patches will use this for setting up hardware
>>>>>> breakpoints, watchpoints and software breakpoints.
>>>>>>
>>>>>> Also kvm_arch_vcpu_ioctl_set_guest_debug() is brought one level below.
>>>>>> This is because I am not sure what is required for book3s. So this
>>>>>> ioctl behaviour will not change for book3s.
>>>>>>
>>>>>> Signed-off-by: Bharat Bhushan 
>>>>>> ---
>>>>>> arch/powerpc/include/uapi/asm/kvm.h |   23 +++
>>>>>> arch/powerpc/kvm/book3s.c   |6 ++
>>>>>> arch/powerpc/kvm/booke.c|6 ++
>>>>>> arch/powerpc/kvm/powerpc.c  |6 --
>>>>>> 4 files changed, 35 insertions(+), 6 deletions(-)
>>>>>>
>>>>>> diff --git a/arch/powerpc/include/uapi/asm/kvm.h
>>>>>> b/arch/powerpc/include/uapi/asm/kvm.h
>>>>>> index c2ff99c..15f9a00 100644
>>>>>> --- a/arch/powerpc/include/uapi/asm/kvm.h
>>>>>> +++ b/arch/powerpc/include/uapi/asm/kvm.h
>>>>>> @@ -272,8 +272,31 @@ struct kvm_debug_exit_arch {
>>>>>>
>>>>>> /* for KVM_SET_GUEST_DEBUG */
>>>>>> struct kvm_guest_debug_arch {
>>>>>> +struct {
>>>>>> +/* H/W breakpoint/watchpoint address */
>>>>>> +__u64 addr;
>>>>>> +/*
>>>>>> + * Type denotes h/w breakpoint, read watchpoint, write
>>>>>> + * watchpoint or watchpoint (both read and write).
>>>>>> + */
>>>>>> +#define KVMPPC_DEBUG_NOTYPE 0x0
>>>>>> +#define KVMPPC_DEBUG_BREAKPOINT (1UL << 1)
>>>>>> +#define KVMPPC_DEBUG_WATCH_WRITE(1UL << 2)
>>>>>> +#define KVMPPC_DEBUG_WATCH_READ (1UL << 3)
>>>>>> +__u32 type;
>>>>>> +__u32 reserved;
>>>>>> +} bp[16];
>>>>>> };
>>>>>>
>>>>>> +/* Debug related defines */
>>>>>> +/*
>>>>>> + * kvm_guest_debug->control is a 32 bit field. The lower 16 bits are
>>>>>> +generic
>>>>>> + * and upper 16 bits are architecture specific. Architecture specific
>>>>>> +defines
>>>>>> + * that ioctl is for setting hardware breakpoint or software breakpoint.
>>>>>> + */
>>>>>> +#define KVM_GUESTDBG_USE_SW_BP  0x0001
>>>>>> +#define KVM_GUESTDBG_USE_HW_BP  0x0002
>>>>>
>>>>> You only need
>>>>>
>>>>> #define KVM_GUESTDBG_HW_BP 0x0001
>>>>>
>>>>> In absence of the flag, it's a SW breakpoint.
>>>>
>>>> We kept this for 2 reasons; 1) Same logic is applied for i386, so trying 
>>>> to keep consistent 2) better clarity.
>>>
>>> Jan, was there any special reason to have 2 flags for HW/SW breakpoint on 
>>> x86 rather than one bit that indicates which one is used?
>>
>> Different mechanics on x86: HW goes via debug registers and shows up as
>> INT1, SW is INT3 (plus guest patching done by user land).
> 
> Well, the same thing goes for us. What I'm asking is whether there is a 
> specific reason (extensibility, oversight, taste, ...) that you did
> 
> #define KVM_GUESTDBG_USE_SW_BP   0x0001
> #define KVM_GUESTDBG_USE_HW_BP   0x0002
> 
> rather than
> 
> #define KVM_GUESTDBG_BP_TYPE  0x0001
> #define KVM_GUESTDBG_BP_TYPE_SW   0x0001
> #define KVM_GUESTDBG_BP_TYPE_HW   0x
> 
> :)

Those bits enable or disable the features separately. You may also leave
both off if you like (and just use single stepping).

Jan

-- 
Siemens AG, Corporate Technology, CT RTC ITP SDP-DE
Corporate Competence Center Embedded Linux
--
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 3/7] KVM: PPC: debug stub interface parameter defined

2013-03-14 Thread Alexander Graf

On 14.03.2013, at 12:57, Jan Kiszka wrote:

> On 2013-03-14 12:54, Alexander Graf wrote:
>> 
>> On 14.03.2013, at 05:42, Bhushan Bharat-R65777 wrote:
>> 
>>> 
>>> 
>>>> -Original Message-
>>>> From: Alexander Graf [mailto:ag...@suse.de]
>>>> Sent: Thursday, March 07, 2013 6:51 PM
>>>> To: Bhushan Bharat-R65777
>>>> Cc: kvm-ppc@vger.kernel.org; k...@vger.kernel.org; Wood Scott-B07421; 
>>>> Bhushan
>>>> Bharat-R65777
>>>> Subject: Re: [PATCH 3/7] KVM: PPC: debug stub interface parameter defined
>>>> 
>>>> 
>>>> On 28.02.2013, at 05:13, Bharat Bhushan wrote:
>>>> 
>>>>> This patch defines the interface parameter for KVM_SET_GUEST_DEBUG
>>>>> ioctl support. Follow up patches will use this for setting up hardware
>>>>> breakpoints, watchpoints and software breakpoints.
>>>>> 
>>>>> Also kvm_arch_vcpu_ioctl_set_guest_debug() is brought one level below.
>>>>> This is because I am not sure what is required for book3s. So this
>>>>> ioctl behaviour will not change for book3s.
>>>>> 
>>>>> Signed-off-by: Bharat Bhushan 
>>>>> ---
>>>>> arch/powerpc/include/uapi/asm/kvm.h |   23 +++
>>>>> arch/powerpc/kvm/book3s.c   |6 ++
>>>>> arch/powerpc/kvm/booke.c|6 ++
>>>>> arch/powerpc/kvm/powerpc.c  |6 --
>>>>> 4 files changed, 35 insertions(+), 6 deletions(-)
>>>>> 
>>>>> diff --git a/arch/powerpc/include/uapi/asm/kvm.h
>>>>> b/arch/powerpc/include/uapi/asm/kvm.h
>>>>> index c2ff99c..15f9a00 100644
>>>>> --- a/arch/powerpc/include/uapi/asm/kvm.h
>>>>> +++ b/arch/powerpc/include/uapi/asm/kvm.h
>>>>> @@ -272,8 +272,31 @@ struct kvm_debug_exit_arch {
>>>>> 
>>>>> /* for KVM_SET_GUEST_DEBUG */
>>>>> struct kvm_guest_debug_arch {
>>>>> + struct {
>>>>> + /* H/W breakpoint/watchpoint address */
>>>>> + __u64 addr;
>>>>> + /*
>>>>> +  * Type denotes h/w breakpoint, read watchpoint, write
>>>>> +  * watchpoint or watchpoint (both read and write).
>>>>> +  */
>>>>> +#define KVMPPC_DEBUG_NOTYPE  0x0
>>>>> +#define KVMPPC_DEBUG_BREAKPOINT  (1UL << 1)
>>>>> +#define KVMPPC_DEBUG_WATCH_WRITE (1UL << 2)
>>>>> +#define KVMPPC_DEBUG_WATCH_READ  (1UL << 3)
>>>>> + __u32 type;
>>>>> + __u32 reserved;
>>>>> + } bp[16];
>>>>> };
>>>>> 
>>>>> +/* Debug related defines */
>>>>> +/*
>>>>> + * kvm_guest_debug->control is a 32 bit field. The lower 16 bits are
>>>>> +generic
>>>>> + * and upper 16 bits are architecture specific. Architecture specific
>>>>> +defines
>>>>> + * that ioctl is for setting hardware breakpoint or software breakpoint.
>>>>> + */
>>>>> +#define KVM_GUESTDBG_USE_SW_BP   0x0001
>>>>> +#define KVM_GUESTDBG_USE_HW_BP   0x0002
>>>> 
>>>> You only need
>>>> 
>>>> #define KVM_GUESTDBG_HW_BP 0x0001
>>>> 
>>>> In absence of the flag, it's a SW breakpoint.
>>> 
>>> We kept this for 2 reasons; 1) Same logic is applied for i386, so trying to 
>>> keep consistent 2) better clarity.
>> 
>> Jan, was there any special reason to have 2 flags for HW/SW breakpoint on 
>> x86 rather than one bit that indicates which one is used?
> 
> Different mechanics on x86: HW goes via debug registers and shows up as
> INT1, SW is INT3 (plus guest patching done by user land).

Well, the same thing goes for us. What I'm asking is whether there is a 
specific reason (extensibility, oversight, taste, ...) that you did

#define KVM_GUESTDBG_USE_SW_BP   0x0001
#define KVM_GUESTDBG_USE_HW_BP   0x0002

rather than

#define KVM_GUESTDBG_BP_TYPE0x0001
#define KVM_GUESTDBG_BP_TYPE_SW 0x0001
#define KVM_GUESTDBG_BP_TYPE_HW 0x

:)


Alex

--
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 3/7] KVM: PPC: debug stub interface parameter defined

2013-03-14 Thread Alexander Graf

On 14.03.2013, at 05:42, Bhushan Bharat-R65777 wrote:

> 
> 
>> -Original Message-
>> From: Alexander Graf [mailto:ag...@suse.de]
>> Sent: Thursday, March 07, 2013 6:51 PM
>> To: Bhushan Bharat-R65777
>> Cc: kvm-ppc@vger.kernel.org; k...@vger.kernel.org; Wood Scott-B07421; Bhushan
>> Bharat-R65777
>> Subject: Re: [PATCH 3/7] KVM: PPC: debug stub interface parameter defined
>> 
>> 
>> On 28.02.2013, at 05:13, Bharat Bhushan wrote:
>> 
>>> This patch defines the interface parameter for KVM_SET_GUEST_DEBUG
>>> ioctl support. Follow up patches will use this for setting up hardware
>>> breakpoints, watchpoints and software breakpoints.
>>> 
>>> Also kvm_arch_vcpu_ioctl_set_guest_debug() is brought one level below.
>>> This is because I am not sure what is required for book3s. So this
>>> ioctl behaviour will not change for book3s.
>>> 
>>> Signed-off-by: Bharat Bhushan 
>>> ---
>>> arch/powerpc/include/uapi/asm/kvm.h |   23 +++
>>> arch/powerpc/kvm/book3s.c   |6 ++
>>> arch/powerpc/kvm/booke.c|6 ++
>>> arch/powerpc/kvm/powerpc.c  |6 --
>>> 4 files changed, 35 insertions(+), 6 deletions(-)
>>> 
>>> diff --git a/arch/powerpc/include/uapi/asm/kvm.h
>>> b/arch/powerpc/include/uapi/asm/kvm.h
>>> index c2ff99c..15f9a00 100644
>>> --- a/arch/powerpc/include/uapi/asm/kvm.h
>>> +++ b/arch/powerpc/include/uapi/asm/kvm.h
>>> @@ -272,8 +272,31 @@ struct kvm_debug_exit_arch {
>>> 
>>> /* for KVM_SET_GUEST_DEBUG */
>>> struct kvm_guest_debug_arch {
>>> +   struct {
>>> +   /* H/W breakpoint/watchpoint address */
>>> +   __u64 addr;
>>> +   /*
>>> +* Type denotes h/w breakpoint, read watchpoint, write
>>> +* watchpoint or watchpoint (both read and write).
>>> +*/
>>> +#define KVMPPC_DEBUG_NOTYPE0x0
>>> +#define KVMPPC_DEBUG_BREAKPOINT(1UL << 1)
>>> +#define KVMPPC_DEBUG_WATCH_WRITE   (1UL << 2)
>>> +#define KVMPPC_DEBUG_WATCH_READ(1UL << 3)
>>> +   __u32 type;
>>> +   __u32 reserved;
>>> +   } bp[16];
>>> };
>>> 
>>> +/* Debug related defines */
>>> +/*
>>> + * kvm_guest_debug->control is a 32 bit field. The lower 16 bits are
>>> +generic
>>> + * and upper 16 bits are architecture specific. Architecture specific
>>> +defines
>>> + * that ioctl is for setting hardware breakpoint or software breakpoint.
>>> + */
>>> +#define KVM_GUESTDBG_USE_SW_BP 0x0001
>>> +#define KVM_GUESTDBG_USE_HW_BP 0x0002
>> 
>> You only need
>> 
>> #define KVM_GUESTDBG_HW_BP 0x0001
>> 
>> In absence of the flag, it's a SW breakpoint.
> 
> We kept this for 2 reasons; 1) Same logic is applied for i386, so trying to 
> keep consistent 2) better clarity.

Jan, was there any special reason to have 2 flags for HW/SW breakpoint on x86 
rather than one bit that indicates which one is used?


Alex

> 
> If you want than I can code this as you described.
> 
> -Bharat
> 
>> 
>> 
>> Alex
>> 
>>> +
>>> /* definition of registers in kvm_run */ struct kvm_sync_regs { };
>>> diff --git a/arch/powerpc/kvm/book3s.c b/arch/powerpc/kvm/book3s.c
>>> index 975a401..cb85d73 100644
>>> --- a/arch/powerpc/kvm/book3s.c
>>> +++ b/arch/powerpc/kvm/book3s.c
>>> @@ -613,6 +613,12 @@ int kvm_arch_vcpu_ioctl_translate(struct kvm_vcpu 
>>> *vcpu,
>>> return 0;
>>> }
>>> 
>>> +int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu,
>>> +   struct kvm_guest_debug *dbg)
>>> +{
>>> +   return -EINVAL;
>>> +}
>>> +
>>> void kvmppc_decrementer_func(unsigned long data) {
>>> struct kvm_vcpu *vcpu = (struct kvm_vcpu *)data; diff --git
>>> a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c index
>>> a41cd6d..1de93a8 100644
>>> --- a/arch/powerpc/kvm/booke.c
>>> +++ b/arch/powerpc/kvm/booke.c
>>> @@ -1527,6 +1527,12 @@ int kvm_vcpu_ioctl_set_one_reg(struct kvm_vcpu *vcpu,
>> struct kvm_one_reg *reg)
>>> return r;
>>> }
>>> 
>>> +int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu,
>>> + 

RE: [PATCH 3/7] KVM: PPC: debug stub interface parameter defined

2013-03-13 Thread Bhushan Bharat-R65777


> -Original Message-
> From: Alexander Graf [mailto:ag...@suse.de]
> Sent: Thursday, March 07, 2013 6:51 PM
> To: Bhushan Bharat-R65777
> Cc: kvm-ppc@vger.kernel.org; k...@vger.kernel.org; Wood Scott-B07421; Bhushan
> Bharat-R65777
> Subject: Re: [PATCH 3/7] KVM: PPC: debug stub interface parameter defined
> 
> 
> On 28.02.2013, at 05:13, Bharat Bhushan wrote:
> 
> > This patch defines the interface parameter for KVM_SET_GUEST_DEBUG
> > ioctl support. Follow up patches will use this for setting up hardware
> > breakpoints, watchpoints and software breakpoints.
> >
> > Also kvm_arch_vcpu_ioctl_set_guest_debug() is brought one level below.
> > This is because I am not sure what is required for book3s. So this
> > ioctl behaviour will not change for book3s.
> >
> > Signed-off-by: Bharat Bhushan 
> > ---
> > arch/powerpc/include/uapi/asm/kvm.h |   23 +++
> > arch/powerpc/kvm/book3s.c   |6 ++
> > arch/powerpc/kvm/booke.c|6 ++
> > arch/powerpc/kvm/powerpc.c  |6 --
> > 4 files changed, 35 insertions(+), 6 deletions(-)
> >
> > diff --git a/arch/powerpc/include/uapi/asm/kvm.h
> > b/arch/powerpc/include/uapi/asm/kvm.h
> > index c2ff99c..15f9a00 100644
> > --- a/arch/powerpc/include/uapi/asm/kvm.h
> > +++ b/arch/powerpc/include/uapi/asm/kvm.h
> > @@ -272,8 +272,31 @@ struct kvm_debug_exit_arch {
> >
> > /* for KVM_SET_GUEST_DEBUG */
> > struct kvm_guest_debug_arch {
> > +   struct {
> > +   /* H/W breakpoint/watchpoint address */
> > +   __u64 addr;
> > +   /*
> > +* Type denotes h/w breakpoint, read watchpoint, write
> > +* watchpoint or watchpoint (both read and write).
> > +*/
> > +#define KVMPPC_DEBUG_NOTYPE0x0
> > +#define KVMPPC_DEBUG_BREAKPOINT(1UL << 1)
> > +#define KVMPPC_DEBUG_WATCH_WRITE   (1UL << 2)
> > +#define KVMPPC_DEBUG_WATCH_READ(1UL << 3)
> > +   __u32 type;
> > +   __u32 reserved;
> > +   } bp[16];
> > };
> >
> > +/* Debug related defines */
> > +/*
> > + * kvm_guest_debug->control is a 32 bit field. The lower 16 bits are
> > +generic
> > + * and upper 16 bits are architecture specific. Architecture specific
> > +defines
> > + * that ioctl is for setting hardware breakpoint or software breakpoint.
> > + */
> > +#define KVM_GUESTDBG_USE_SW_BP 0x0001
> > +#define KVM_GUESTDBG_USE_HW_BP 0x0002
> 
> You only need
> 
> #define KVM_GUESTDBG_HW_BP 0x0001
> 
> In absence of the flag, it's a SW breakpoint.

We kept this for 2 reasons; 1) Same logic is applied for i386, so trying to 
keep consistent 2) better clarity.

If you want than I can code this as you described.

-Bharat

> 
> 
> Alex
> 
> > +
> > /* definition of registers in kvm_run */ struct kvm_sync_regs { };
> > diff --git a/arch/powerpc/kvm/book3s.c b/arch/powerpc/kvm/book3s.c
> > index 975a401..cb85d73 100644
> > --- a/arch/powerpc/kvm/book3s.c
> > +++ b/arch/powerpc/kvm/book3s.c
> > @@ -613,6 +613,12 @@ int kvm_arch_vcpu_ioctl_translate(struct kvm_vcpu 
> > *vcpu,
> > return 0;
> > }
> >
> > +int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu,
> > +   struct kvm_guest_debug *dbg)
> > +{
> > +   return -EINVAL;
> > +}
> > +
> > void kvmppc_decrementer_func(unsigned long data) {
> > struct kvm_vcpu *vcpu = (struct kvm_vcpu *)data; diff --git
> > a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c index
> > a41cd6d..1de93a8 100644
> > --- a/arch/powerpc/kvm/booke.c
> > +++ b/arch/powerpc/kvm/booke.c
> > @@ -1527,6 +1527,12 @@ int kvm_vcpu_ioctl_set_one_reg(struct kvm_vcpu *vcpu,
> struct kvm_one_reg *reg)
> > return r;
> > }
> >
> > +int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu,
> > +struct kvm_guest_debug *dbg)
> > +{
> > +   return -EINVAL;
> > +}
> > +
> > int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu
> > *fpu) {
> > return -ENOTSUPP;
> > diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
> > index 934413c..4c94ca9 100644
> > --- a/arch/powerpc/kvm/powerpc.c
> > +++ b/arch/powerpc/kvm/powerpc.c
> > @@ -532,12 +532,6 @@ void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu)
> > #endif }
> >
> > -int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu,
> > -struct kvm_guest_debug *dbg)
> > -{
> > -   return -EINVAL;
> > -}
> > -
> > static void kvmppc_complete_dcr_load(struct kvm_vcpu *vcpu,
> >  struct kvm_run *run) {
> > --
> > 1.7.0.4
> >
> >
> 


--
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 3/7] KVM: PPC: debug stub interface parameter defined

2013-03-07 Thread Alexander Graf

On 28.02.2013, at 05:13, Bharat Bhushan wrote:

> This patch defines the interface parameter for KVM_SET_GUEST_DEBUG
> ioctl support. Follow up patches will use this for setting up
> hardware breakpoints, watchpoints and software breakpoints.
> 
> Also kvm_arch_vcpu_ioctl_set_guest_debug() is brought one level below.
> This is because I am not sure what is required for book3s. So this ioctl
> behaviour will not change for book3s.
> 
> Signed-off-by: Bharat Bhushan 
> ---
> arch/powerpc/include/uapi/asm/kvm.h |   23 +++
> arch/powerpc/kvm/book3s.c   |6 ++
> arch/powerpc/kvm/booke.c|6 ++
> arch/powerpc/kvm/powerpc.c  |6 --
> 4 files changed, 35 insertions(+), 6 deletions(-)
> 
> diff --git a/arch/powerpc/include/uapi/asm/kvm.h 
> b/arch/powerpc/include/uapi/asm/kvm.h
> index c2ff99c..15f9a00 100644
> --- a/arch/powerpc/include/uapi/asm/kvm.h
> +++ b/arch/powerpc/include/uapi/asm/kvm.h
> @@ -272,8 +272,31 @@ struct kvm_debug_exit_arch {
> 
> /* for KVM_SET_GUEST_DEBUG */
> struct kvm_guest_debug_arch {
> + struct {
> + /* H/W breakpoint/watchpoint address */
> + __u64 addr;
> + /*
> +  * Type denotes h/w breakpoint, read watchpoint, write
> +  * watchpoint or watchpoint (both read and write).
> +  */
> +#define KVMPPC_DEBUG_NOTYPE  0x0
> +#define KVMPPC_DEBUG_BREAKPOINT  (1UL << 1)
> +#define KVMPPC_DEBUG_WATCH_WRITE (1UL << 2)
> +#define KVMPPC_DEBUG_WATCH_READ  (1UL << 3)
> + __u32 type;
> + __u32 reserved;
> + } bp[16];
> };
> 
> +/* Debug related defines */
> +/*
> + * kvm_guest_debug->control is a 32 bit field. The lower 16 bits are generic
> + * and upper 16 bits are architecture specific. Architecture specific defines
> + * that ioctl is for setting hardware breakpoint or software breakpoint.
> + */
> +#define KVM_GUESTDBG_USE_SW_BP   0x0001
> +#define KVM_GUESTDBG_USE_HW_BP   0x0002

You only need

#define KVM_GUESTDBG_HW_BP 0x0001

In absence of the flag, it's a SW breakpoint.


Alex

> +
> /* definition of registers in kvm_run */
> struct kvm_sync_regs {
> };
> diff --git a/arch/powerpc/kvm/book3s.c b/arch/powerpc/kvm/book3s.c
> index 975a401..cb85d73 100644
> --- a/arch/powerpc/kvm/book3s.c
> +++ b/arch/powerpc/kvm/book3s.c
> @@ -613,6 +613,12 @@ int kvm_arch_vcpu_ioctl_translate(struct kvm_vcpu *vcpu,
>   return 0;
> }
> 
> +int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu,
> + struct kvm_guest_debug *dbg)
> +{
> + return -EINVAL;
> +}
> +
> void kvmppc_decrementer_func(unsigned long data)
> {
>   struct kvm_vcpu *vcpu = (struct kvm_vcpu *)data;
> diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
> index a41cd6d..1de93a8 100644
> --- a/arch/powerpc/kvm/booke.c
> +++ b/arch/powerpc/kvm/booke.c
> @@ -1527,6 +1527,12 @@ int kvm_vcpu_ioctl_set_one_reg(struct kvm_vcpu *vcpu, 
> struct kvm_one_reg *reg)
>   return r;
> }
> 
> +int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu,
> +  struct kvm_guest_debug *dbg)
> +{
> + return -EINVAL;
> +}
> +
> int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu)
> {
>   return -ENOTSUPP;
> diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
> index 934413c..4c94ca9 100644
> --- a/arch/powerpc/kvm/powerpc.c
> +++ b/arch/powerpc/kvm/powerpc.c
> @@ -532,12 +532,6 @@ void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu)
> #endif
> }
> 
> -int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu,
> -struct kvm_guest_debug *dbg)
> -{
> - return -EINVAL;
> -}
> -
> static void kvmppc_complete_dcr_load(struct kvm_vcpu *vcpu,
>  struct kvm_run *run)
> {
> -- 
> 1.7.0.4
> 
> 

--
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