From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marcelo Tosatti Subject: Re: [PATCH v3 04/10] qemu-kvm: Clean up mpstate synchronization Date: Wed, 24 Feb 2010 19:44:19 -0300 Message-ID: <20100224224419.GA15712@amt.cnet> References: <4f4d544e5c032561bca4efa483084451683b22fd.1267021065.git.jan.kiszka@siemens.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Avi Kivity , kvm@vger.kernel.org, qemu-devel@nongnu.org, Gleb Natapov To: Jan Kiszka Return-path: Received: from mx1.redhat.com ([209.132.183.28]:53216 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758415Ab0BXX2W (ORCPT ); Wed, 24 Feb 2010 18:28:22 -0500 Content-Disposition: inline In-Reply-To: <4f4d544e5c032561bca4efa483084451683b22fd.1267021065.git.jan.kiszka@siemens.com> Sender: kvm-owner@vger.kernel.org List-ID: On Wed, Feb 24, 2010 at 03:17:52PM +0100, Jan Kiszka wrote: > Push mpstate reading/writing into kvm_arch_load/save_regs and, on x86, > properly synchronize with halted in the accessor functions. > > Signed-off-by: Jan Kiszka > @@ -1290,6 +1318,7 @@ int kvm_arch_init_vcpu(CPUState *cenv) > #ifdef KVM_EXIT_TPR_ACCESS > kvm_tpr_vcpu_start(cenv); > #endif > + kvm_reset_mpstate(cenv); > return 0; > } > > @@ -1363,15 +1392,10 @@ void kvm_arch_cpu_reset(CPUState *env) > { > kvm_arch_reset_vcpu(env); > kvm_put_vcpu_events(env); > - if (!cpu_is_bsp(env)) { > - if (kvm_irqchip_in_kernel()) { > -#ifdef KVM_CAP_MP_STATE > - kvm_reset_mpstate(env); > -#endif > - } else { > - env->interrupt_request &= ~CPU_INTERRUPT_HARD; > - env->halted = 1; > - } > + kvm_reset_mpstate(env); > + if (!cpu_is_bsp(env) && !kvm_irqchip_in_kernel()) { > + env->interrupt_request &= ~CPU_INTERRUPT_HARD; > + env->halted = 1; > } > } Why are these two needed? Now that initialization of mp_state happens via synchronize_state(init/reset) -> arch_load_regs?