From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:45458) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SX1x0-0001FN-Hv for qemu-devel@nongnu.org; Tue, 22 May 2012 23:09:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SX1wt-0005pT-TZ for qemu-devel@nongnu.org; Tue, 22 May 2012 23:09:26 -0400 Received: from cantor2.suse.de ([195.135.220.15]:35638 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SX1wt-0005o8-JO for qemu-devel@nongnu.org; Tue, 22 May 2012 23:09:19 -0400 From: =?UTF-8?q?Andreas=20F=C3=A4rber?= Date: Wed, 23 May 2012 05:08:09 +0200 Message-Id: <1337742502-28565-47-git-send-email-afaerber@suse.de> In-Reply-To: <1337742502-28565-1-git-send-email-afaerber@suse.de> References: <1337742502-28565-1-git-send-email-afaerber@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH qom-next 46/59] cpus: Pass CPUState to run_on_cpu() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Marcelo Tosatti , =?UTF-8?q?Andreas=20F=C3=A4rber?= , "open list:Overall" , Avi Kivity CPUArchState is no longer needed. Move the declaration to include/qemu/cpu.h and add documentation. Signed-off-by: Andreas F=C3=A4rber --- cpu-all.h | 1 - cpus.c | 3 +-- hw/kvm/apic.c | 2 +- hw/kvmvapic.c | 6 ++++-- hw/ppce500_spin.c | 2 +- include/qemu/cpu.h | 10 ++++++++++ kvm-all.c | 7 +++++-- target-i386/helper.c | 4 ++-- 8 files changed, 24 insertions(+), 11 deletions(-) diff --git a/cpu-all.h b/cpu-all.h index 0adfcf5..82d3b90 100644 --- a/cpu-all.h +++ b/cpu-all.h @@ -441,7 +441,6 @@ void cpu_watchpoint_remove_all(CPUArchState *env, int= mask); #define SSTEP_NOTIMER 0x4 /* Do not Timers while single stepping */ =20 void cpu_single_step(CPUArchState *env, int enabled); -void run_on_cpu(CPUArchState *env, void (*func)(void *data), void *data)= ; =20 #define CPU_LOG_TB_OUT_ASM (1 << 0) #define CPU_LOG_TB_IN_ASM (1 << 1) diff --git a/cpus.c b/cpus.c index ba7fb1c..06743e4 100644 --- a/cpus.c +++ b/cpus.c @@ -642,9 +642,8 @@ void qemu_init_cpu_loop(void) qemu_thread_get_self(&io_thread); } =20 -void run_on_cpu(CPUArchState *env, void (*func)(void *data), void *data) +void run_on_cpu(CPUState *cpu, void (*func)(void *data), void *data) { - CPUState *cpu =3D ENV_GET_CPU(env); struct qemu_work_item wi; =20 if (qemu_cpu_is_self(cpu)) { diff --git a/hw/kvm/apic.c b/hw/kvm/apic.c index cf52bb2..2eba616 100644 --- a/hw/kvm/apic.c +++ b/hw/kvm/apic.c @@ -143,7 +143,7 @@ static void do_inject_external_nmi(void *data) =20 static void kvm_apic_external_nmi(APICCommonState *s) { - run_on_cpu(&s->cpu->env, do_inject_external_nmi, s); + run_on_cpu(CPU(s->cpu), do_inject_external_nmi, s); } =20 static void kvm_apic_init(APICCommonState *s) diff --git a/hw/kvmvapic.c b/hw/kvmvapic.c index 5d83625..399a742 100644 --- a/hw/kvmvapic.c +++ b/hw/kvmvapic.c @@ -475,11 +475,13 @@ static void vapic_enable_tpr_reporting(bool enable) VAPICEnableTPRReporting info =3D { .enable =3D enable, }; + X86CPU *cpu; CPUX86State *env; =20 for (env =3D first_cpu; env !=3D NULL; env =3D env->next_cpu) { + cpu =3D x86_env_get_cpu(env); info.apic =3D env->apic_state; - run_on_cpu(env, vapic_do_enable_tpr_reporting, &info); + run_on_cpu(CPU(cpu), vapic_do_enable_tpr_reporting, &info); } } =20 @@ -717,7 +719,7 @@ static int vapic_post_load(void *opaque, int version_= id) } if (s->state =3D=3D VAPIC_ACTIVE) { if (smp_cpus =3D=3D 1) { - run_on_cpu(first_cpu, do_vapic_enable, s); + run_on_cpu(ENV_GET_CPU(first_cpu), do_vapic_enable, s); } else { zero =3D g_malloc0(s->rom_state.vapic_size); cpu_physical_memory_rw(s->vapic_paddr, zero, diff --git a/hw/ppce500_spin.c b/hw/ppce500_spin.c index 1c0d8b6..a4b49e6 100644 --- a/hw/ppce500_spin.c +++ b/hw/ppce500_spin.c @@ -163,7 +163,7 @@ static void spin_write(void *opaque, target_phys_addr= _t addr, uint64_t value, .spin =3D curspin, }; =20 - run_on_cpu(env, spin_kick, &kick); + run_on_cpu(CPU(kick.cpu), spin_kick, &kick); } } =20 diff --git a/include/qemu/cpu.h b/include/qemu/cpu.h index f04da6e..33f01d9 100644 --- a/include/qemu/cpu.h +++ b/include/qemu/cpu.h @@ -125,5 +125,15 @@ void qemu_cpu_kick(CPUState *cpu); */ bool cpu_is_stopped(CPUState *cpu); =20 +/** + * run_on_cpu: + * @cpu: The vCPU to run on. + * @func: The function to be executed. + * @data: Data to pass to the function. + * + * Schedules the function @func for execution on the vCPU @cpu. + */ +void run_on_cpu(CPUState *cpu, void (*func)(void *data), void *data); + =20 #endif diff --git a/kvm-all.c b/kvm-all.c index 3b247a0..bbd2049 100644 --- a/kvm-all.c +++ b/kvm-all.c @@ -1209,8 +1209,10 @@ static void do_kvm_cpu_synchronize_state(void *_en= v) =20 void kvm_cpu_synchronize_state(CPUArchState *env) { + CPUState *cpu =3D ENV_GET_CPU(env); + if (!env->kvm_vcpu_dirty) { - run_on_cpu(env, do_kvm_cpu_synchronize_state, env); + run_on_cpu(cpu, do_kvm_cpu_synchronize_state, env); } } =20 @@ -1482,6 +1484,7 @@ static void kvm_invoke_set_guest_debug(void *data) =20 int kvm_update_guest_debug(CPUArchState *env, unsigned long reinject_tra= p) { + CPUState *cpu =3D ENV_GET_CPU(env); struct kvm_set_guest_debug_data data; =20 data.dbg.control =3D reinject_trap; @@ -1492,7 +1495,7 @@ int kvm_update_guest_debug(CPUArchState *env, unsig= ned long reinject_trap) kvm_arch_update_guest_debug(env, &data.dbg); data.env =3D env; =20 - run_on_cpu(env, kvm_invoke_set_guest_debug, &data); + run_on_cpu(cpu, kvm_invoke_set_guest_debug, &data); return data.err; } =20 diff --git a/target-i386/helper.c b/target-i386/helper.c index bfd314b..2d5ca8c 100644 --- a/target-i386/helper.c +++ b/target-i386/helper.c @@ -1089,7 +1089,7 @@ void cpu_x86_inject_mce(Monitor *mon, X86CPU *cpu, = int bank, return; } =20 - run_on_cpu(cenv, do_inject_x86_mce, ¶ms); + run_on_cpu(CPU(cpu), do_inject_x86_mce, ¶ms); if (flags & MCE_INJECT_BROADCAST) { params.bank =3D 1; params.status =3D MCI_STATUS_VAL | MCI_STATUS_UC; @@ -1101,7 +1101,7 @@ void cpu_x86_inject_mce(Monitor *mon, X86CPU *cpu, = int bank, continue; } params.env =3D env; - run_on_cpu(cenv, do_inject_x86_mce, ¶ms); + run_on_cpu(CPU(cpu), do_inject_x86_mce, ¶ms); } } } --=20 1.7.7