diff mbox

[v1,1/2] gdbstub: Fix single-step

Message ID 1476100224-19760-2-git-send-email-imbrenda@linux.vnet.ibm.com (mailing list archive)
State New, archived
Headers show

Commit Message

Claudio Imbrenda Oct. 10, 2016, 11:50 a.m. UTC
Commit e0eeb4a21a3ca4b296220ce4449d8acef9de9049 introduced a bug that
causes single-step in the gdbstub to not work, at least in kvm. CPUs
that are supposed to single-step will instead run normally.

This small patch fixes the problem. (tested on s390x)

Signed-off-by: Claudio Imbrenda <imbrenda@linux.vnet.ibm.com>
---
 kvm-all.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Christian Borntraeger Oct. 10, 2016, 12:51 p.m. UTC | #1
On 10/10/2016 01:50 PM, Claudio Imbrenda wrote:
> Commit e0eeb4a21a3ca4b296220ce4449d8acef9de9049 introduced a bug that
> causes single-step in the gdbstub to not work, at least in kvm. CPUs
> that are supposed to single-step will instead run normally.
> 
> This small patch fixes the problem. (tested on s390x)
> 
> Signed-off-by: Claudio Imbrenda <imbrenda@linux.vnet.ibm.com>
> ---
>  kvm-all.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/kvm-all.c b/kvm-all.c
> index efb5fe3..46b8dcd 100644
> --- a/kvm-all.c
> +++ b/kvm-all.c
> @@ -2237,6 +2237,7 @@ int kvm_update_guest_debug(CPUState *cpu, unsigned long reinject_trap)
>          data.dbg.control |= KVM_GUESTDBG_ENABLE | KVM_GUESTDBG_SINGLESTEP;
>      }
>      kvm_arch_update_guest_debug(cpu, &data.dbg);
> +    data.cpu = cpu;
> 
>      run_on_cpu(cpu, kvm_invoke_set_guest_debug, &data);
>      return data.err;
> 

Adding Alex and Paolo to cc.
Paolo Bonzini Oct. 10, 2016, 2:36 p.m. UTC | #2
On 10/10/2016 14:51, Christian Borntraeger wrote:
> On 10/10/2016 01:50 PM, Claudio Imbrenda wrote:
>> Commit e0eeb4a21a3ca4b296220ce4449d8acef9de9049 introduced a bug that
>> causes single-step in the gdbstub to not work, at least in kvm. CPUs
>> that are supposed to single-step will instead run normally.
>>
>> This small patch fixes the problem. (tested on s390x)
>>
>> Signed-off-by: Claudio Imbrenda <imbrenda@linux.vnet.ibm.com>
>> ---
>>  kvm-all.c | 1 +
>>  1 file changed, 1 insertion(+)
>>
>> diff --git a/kvm-all.c b/kvm-all.c
>> index efb5fe3..46b8dcd 100644
>> --- a/kvm-all.c
>> +++ b/kvm-all.c
>> @@ -2237,6 +2237,7 @@ int kvm_update_guest_debug(CPUState *cpu, unsigned long reinject_trap)
>>          data.dbg.control |= KVM_GUESTDBG_ENABLE | KVM_GUESTDBG_SINGLESTEP;
>>      }
>>      kvm_arch_update_guest_debug(cpu, &data.dbg);
>> +    data.cpu = cpu;
>>
>>      run_on_cpu(cpu, kvm_invoke_set_guest_debug, &data);
>>      return data.err;
>>
> 
> Adding Alex and Paolo to cc.

The patch works but it also makes sense to use the new CPUState*
argument of kvm_invoke_set_guest_debug.  This way the
kvm_set_guest_debug_data struct doesn't need the "cpu" field anymore.

Paolo
diff mbox

Patch

diff --git a/kvm-all.c b/kvm-all.c
index efb5fe3..46b8dcd 100644
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -2237,6 +2237,7 @@  int kvm_update_guest_debug(CPUState *cpu, unsigned long reinject_trap)
         data.dbg.control |= KVM_GUESTDBG_ENABLE | KVM_GUESTDBG_SINGLESTEP;
     }
     kvm_arch_update_guest_debug(cpu, &data.dbg);
+    data.cpu = cpu;
 
     run_on_cpu(cpu, kvm_invoke_set_guest_debug, &data);
     return data.err;