Mads Ynddal <mads@xxxxxxxxx> writes: >> Isn't this '0' flag here accelerator-specific? ... > >> ... if so the prototype should be: >> >> int (*update_guest_debug)(CPUState *cpu); >> >> and the '0' value set within kvm-accel-ops.c handler implementation. >> > > You're right, we can avoid the additional variable. We'll then have to wrap > `kvm_update_guest_debug`. Would the following be ok? > > diff --git a/accel/kvm/kvm-accel-ops.c b/accel/kvm/kvm-accel-ops.c > index 6ebf9a644f..5e0fb42408 100644 > --- a/accel/kvm/kvm-accel-ops.c > +++ b/accel/kvm/kvm-accel-ops.c > @@ -86,6 +86,10 @@ static bool kvm_cpus_are_resettable(void) > return !kvm_enabled() || kvm_cpu_check_are_resettable(); > } > > +static int kvm_update_guest_debug_ops(CPUState *cpu) { > + return kvm_update_guest_debug(cpu, 0); > +} > + > static void kvm_accel_ops_class_init(ObjectClass *oc, void *data) > { > AccelOpsClass *ops = ACCEL_OPS_CLASS(oc); > @@ -99,7 +103,7 @@ static void kvm_accel_ops_class_init(ObjectClass *oc, void *data) > ops->synchronize_pre_loadvm = kvm_cpu_synchronize_pre_loadvm; > > #ifdef KVM_CAP_SET_GUEST_DEBUG > - ops->update_guest_debug = kvm_update_guest_debug; > + ops->update_guest_debug = kvm_update_guest_debug_ops; > ops->supports_guest_debug = kvm_supports_guest_debug; > ops->insert_breakpoint = kvm_insert_breakpoint; > ops->remove_breakpoint = kvm_remove_breakpoint; > diff --git a/cpu.c b/cpu.c > index ef433a79e3..b2ade96caa 100644 > --- a/cpu.c > +++ b/cpu.c > @@ -383,7 +383,7 @@ void cpu_single_step(CPUState *cpu, int enabled) > cpu->singlestep_enabled = enabled; > > if (ops->update_guest_debug) { > - ops->update_guest_debug(cpu, 0); > + ops->update_guest_debug(cpu); > } > > trace_breakpoint_singlestep(cpu->cpu_index, enabled); > diff --git a/include/sysemu/accel-ops.h b/include/sysemu/accel-ops.h > index 0a47a2f00c..cd6a4ef7a5 100644 > --- a/include/sysemu/accel-ops.h > +++ b/include/sysemu/accel-ops.h > @@ -48,7 +48,7 @@ struct AccelOpsClass { > > /* gdbstub hooks */ > bool (*supports_guest_debug)(void); > - int (*update_guest_debug)(CPUState *cpu, unsigned long flags); > + int (*update_guest_debug)(CPUState *cpu); > int (*insert_breakpoint)(CPUState *cpu, int type, hwaddr addr, hwaddr len); > int (*remove_breakpoint)(CPUState *cpu, int type, hwaddr addr, hwaddr len); > void (*remove_all_breakpoints)(CPUState *cpu); > > > If you have a better name for `kvm_update_guest_debug_ops`, I'm open for > suggestions. It will do. You could just call it update_guest_debug as it is an internal static function although I guess that makes grepping a bit of a pain. > On a side note. When compiling for an arch that isn't the same as the system > (i.e. aarch64 on x86_64), I'm getting a linker-error for cpu.c that > `cpus_get_accel` isn't defined. Do I need to move `cpus_get_accel` or somehow > #ifdef its use? Is something being accidentally linked with linux-user and softmmu? -- Alex Bennée Virtualisation Tech Lead @ Linaro