fix "info cpus" halted state display
PATCH 1/1 fix "info cpus" halted state display
When in-kernel irqchip is used env->halted is never used for anything except "info cpus" command. Halted state is synced in kvm_arch_save_mpstate() and showed by do_info_cpus() but otherwise never looked at. Zeroing it here breaks "info cpus" since before do_info_cpus() outputs env->halted in io thread it is zeroed here when vcpu thread reenters kernel.
qemu-kvm-x86.c +0 -4
@@ -922,10 +922,6 @@ void kvm_arch_load_regs(CPUState *env, int level)if (env->kvm_vcpu_update_vapic)kvm_tpr_enable_vapic (env); } -if (kvm_irqchip_in_kernel ()) { -/* Avoid deadlock: no user space IRQ will ever clear it. */ - env->halted =0 ; - }kvm_put_vcpu_events (env, level);kvm_put_debugregs (env);
--
Gleb.
Quoted 2 lines · Gleb Natapov
When in-kernel irqchip is used
env->haltedis never used for anything except "info cpus" command.
In fact, it's used in a few more places, namely cpu_dump_state and the gdbstub.
Quoted 5 lines
Halted state is synced in
kvm_arch_save_mpstate()and showed bydo_info_cpus()but otherwise never looked at. Zeroing it here breaks "info cpus" since beforedo_info_cpus()outputsenv->haltedin io thread it is zeroed here when vcpu thread reenters kernel.
Looks good for current qemu-kvm.
Execution of kvm_cpu_exec once depended on env->halted, even for in-kernel irqchip, right? Anyway, there are not such traces left here. We will just need to look at it again when pushing in-kernel irqchips upstream as its kvm loop looks different.
Jan
Quoted 19 lines
Signed-off-by Gleb Natapov <[email protected]>qemu-kvm-x86.c +0
-5@@ -922,10 +922,6 @@ void kvm_arch_load_regs(CPUState *env, int level)if (env->kvm_vcpu_update_vapic)kvm_tpr_enable_vapic (env); } -if (kvm_irqchip_in_kernel ()) { -/* Avoid deadlock: no user space IRQ will ever clear it. */ - env->halted =0 ; - }kvm_put_vcpu_events (env, level);kvm_put_debugregs (env); --Gleb.
Quoted 7 lines · Jan Kiszka
Quoted 2 lines · Gleb Natapov
When in-kernel irqchip is used
env->haltedis never used for anything except "info cpus" command.In fact, it's used in a few more places, namely
cpu_dump_stateand the gdbstub.
Both of those places use env->halted the same way "info cpus" does:
print out cpu state. And the both call for cpu_synchronize_state() before using env->halted.
Quoted 10 lines
Quoted 5 lines
Halted state is synced in
kvm_arch_save_mpstate()and showed bydo_info_cpus()but otherwise never looked at. Zeroing it here breaks "info cpus" since beforedo_info_cpus()outputsenv->haltedin io thread it is zeroed here when vcpu thread reenters kernel.Looks good for current qemu-kvm.
Execution of
kvm_cpu_execonce depended onenv->halted, even for in-kernel irqchip, right?
Never in qemu-kvm AFAIR. May be at some point during merge between upstream qemu and qemu-kvm such bug was introduced,
Quoted 21 lines
Anyway, there are not such traces left here.
We will just need to look at it again when pushing in-kernel irqchips upstream as its kvm loop looks different.Jan
Quoted 15 lines
Signed-off-by Gleb Natapov <[email protected]>qemu-kvm-x86.c +0
-4@@ -922,10 +922,6 @@ void kvm_arch_load_regs(CPUState *env, int level)if (env->kvm_vcpu_update_vapic)kvm_tpr_enable_vapic (env); } -if (kvm_irqchip_in_kernel ()) { -/* Avoid deadlock: no user space IRQ will ever clear it. */ - env->halted =0 ; - }
Quoted 6 lines
Quoted 4 lines
qemu-kvm-x86.c +0
-1kvm_put_vcpu_events (env, level);kvm_put_debugregs (env); --Gleb.
--
Gleb.
Quoted 7 lines · Gleb Natapov
When in-kernel irqchip is used
env->haltedis never used for anything except "info cpus" command. Halted state is synced inkvm_arch_save_mpstate()and showed bydo_info_cpus()but otherwise never looked at. Zeroing it here breaks "info cpus" since beforedo_info_cpus()outputsenv->haltedin io thread it is zeroed here when vcpu thread reenters kernel.
Avi, what about this patch?
Quoted 17 lines
Signed-off-by Gleb Natapov <[email protected]>qemu-kvm-x86.c +0
-5@@ -922,10 +922,6 @@ void kvm_arch_load_regs(CPUState *env, int level)if (env->kvm_vcpu_update_vapic)kvm_tpr_enable_vapic (env); } -if (kvm_irqchip_in_kernel ()) { -/* Avoid deadlock: no user space IRQ will ever clear it. */ - env->halted =0 ; - }kvm_put_vcpu_events (env, level);kvm_put_debugregs (env); --
Quoted 5 lines
Gleb.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
--
Gleb.
Quoted 10 lines · Gleb Natapov
Quoted 8 lines · Gleb Natapov
When in-kernel irqchip is used
env->haltedis never used for anything except "info cpus" command. Halted state is synced inkvm_arch_save_mpstate()and showed bydo_info_cpus()but otherwise never looked at. Zeroing it here breaks "info cpus" since beforedo_info_cpus()outputsenv->haltedin io thread it is zeroed here when vcpu thread reenters kernel.
Quoted 3 lines
Avi, what about this patch?
Sorry, missed. Applied now.
Signature · 1 line
error compiling committee.c: too many arguments to function