From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NkQeV-00021v-DX for qemu-devel@nongnu.org; Wed, 24 Feb 2010 18:28:23 -0500 Received: from [199.232.76.173] (port=46157 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NkQeV-00021W-0k for qemu-devel@nongnu.org; Wed, 24 Feb 2010 18:28:23 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NkQeT-0001RK-0h for qemu-devel@nongnu.org; Wed, 24 Feb 2010 18:28:22 -0500 Received: from mx1.redhat.com ([209.132.183.28]:1189) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NkQeS-0001Qs-1h for qemu-devel@nongnu.org; Wed, 24 Feb 2010 18:28:20 -0500 Date: Wed, 24 Feb 2010 19:44:19 -0300 From: Marcelo Tosatti 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 Content-Disposition: inline In-Reply-To: <4f4d544e5c032561bca4efa483084451683b22fd.1267021065.git.jan.kiszka@siemens.com> Subject: [Qemu-devel] Re: [PATCH v3 04/10] qemu-kvm: Clean up mpstate synchronization List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jan Kiszka Cc: Gleb Natapov , Avi Kivity , kvm@vger.kernel.org, qemu-devel@nongnu.org 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?