From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754543AbXGIIy7 (ORCPT ); Mon, 9 Jul 2007 04:54:59 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751425AbXGIIyw (ORCPT ); Mon, 9 Jul 2007 04:54:52 -0400 Received: from mga01.intel.com ([192.55.52.88]:48591 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751315AbXGIIyv (ORCPT ); Mon, 9 Jul 2007 04:54:51 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.16,516,1175497200"; d="scan'208";a="265988864" Subject: Re: [PATCH][RFC] kvm-scheduler integration From: Shaohua Li To: Avi Kivity Cc: kvm-devel@lists.sourceforge.net, Ingo Molnar , linux-kernel@vger.kernel.org In-Reply-To: <11838994974161-git-send-email-avi@qumranet.com> References: <11838994974161-git-send-email-avi@qumranet.com> Content-Type: multipart/mixed; boundary="=-OB3sD6oCE0XIy2uSl6NI" Date: Mon, 09 Jul 2007 16:50:01 +0800 Message-Id: <1183971001.4254.3.camel@sli10-conroe.sh.intel.com> Mime-Version: 1.0 X-Mailer: Evolution 2.8.3 (2.8.3-2.fc6) Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org --=-OB3sD6oCE0XIy2uSl6NI Content-Type: text/plain Content-Transfer-Encoding: 7bit On Sun, 2007-07-08 at 20:58 +0800, Avi Kivity wrote: > The only fly in the ointment is that it crashes quite soon. Haven't > figured > out why yet, but comments on the general direction would be welcome. Attached patch seems help in my test. prepare_task_switch is called with irq disabled. > -static void vmx_vcpu_load(struct kvm_vcpu *vcpu) > +static void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu) > { > u64 phys_addr = __pa(vcpu->vmcs); > - int cpu; > u64 tsc_this, delta; > > - cpu = get_cpu(); > - > + WARN_ON(!preempt_count()); This and below change will break preempt disabled case. better remove them. > if (vcpu->cpu != cpu) > vcpu_clear(vcpu); > > @@ -426,9 +432,9 @@ static void vmx_vcpu_load(struct kvm_vcpu *vcpu) > > static void vmx_vcpu_put(struct kvm_vcpu *vcpu) > { > + WARN_ON(!preempt_count()); > vmx_load_host_state(vcpu); > kvm_put_guest_fpu(vcpu); > - put_cpu(); > } --=-OB3sD6oCE0XIy2uSl6NI Content-Disposition: attachment; filename=dbg.patch Content-Type: text/x-patch; name=dbg.patch; charset=utf-8 Content-Transfer-Encoding: 7bit Index: linux-2.6/drivers/kvm/vmx.c =================================================================== --- linux-2.6.orig/drivers/kvm/vmx.c +++ linux-2.6/drivers/kvm/vmx.c @@ -347,6 +347,7 @@ static void vmx_save_host_state(struct k static void vmx_load_host_state(struct kvm_vcpu *vcpu) { struct vmx_host_state *hs = &vcpu->vmx_host_state; + unsigned long flags; if (!hs->loaded) return; @@ -359,12 +360,12 @@ static void vmx_load_host_state(struct k * If we have to reload gs, we must take care to * preserve our gs base. */ - local_irq_disable(); + local_irq_save(flags); load_gs(hs->gs_sel); #ifdef CONFIG_X86_64 wrmsrl(MSR_GS_BASE, vmcs_readl(HOST_GS_BASE)); #endif - local_irq_enable(); + local_irq_restore(flags); reload_tss(); } --=-OB3sD6oCE0XIy2uSl6NI-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shaohua Li Subject: Re: [PATCH][RFC] kvm-scheduler integration Date: Mon, 09 Jul 2007 16:50:01 +0800 Message-ID: <1183971001.4254.3.camel@sli10-conroe.sh.intel.com> References: <11838994974161-git-send-email-avi@qumranet.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-OB3sD6oCE0XIy2uSl6NI" Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Avi Kivity Return-path: In-Reply-To: <11838994974161-git-send-email-avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org Errors-To: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org List-Id: kvm.vger.kernel.org --=-OB3sD6oCE0XIy2uSl6NI Content-Type: text/plain Content-Transfer-Encoding: 7bit On Sun, 2007-07-08 at 20:58 +0800, Avi Kivity wrote: > The only fly in the ointment is that it crashes quite soon. Haven't > figured > out why yet, but comments on the general direction would be welcome. Attached patch seems help in my test. prepare_task_switch is called with irq disabled. > -static void vmx_vcpu_load(struct kvm_vcpu *vcpu) > +static void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu) > { > u64 phys_addr = __pa(vcpu->vmcs); > - int cpu; > u64 tsc_this, delta; > > - cpu = get_cpu(); > - > + WARN_ON(!preempt_count()); This and below change will break preempt disabled case. better remove them. > if (vcpu->cpu != cpu) > vcpu_clear(vcpu); > > @@ -426,9 +432,9 @@ static void vmx_vcpu_load(struct kvm_vcpu *vcpu) > > static void vmx_vcpu_put(struct kvm_vcpu *vcpu) > { > + WARN_ON(!preempt_count()); > vmx_load_host_state(vcpu); > kvm_put_guest_fpu(vcpu); > - put_cpu(); > } --=-OB3sD6oCE0XIy2uSl6NI Content-Disposition: attachment; filename=dbg.patch Content-Type: text/x-patch; name=dbg.patch; charset=utf-8 Content-Transfer-Encoding: 7bit Index: linux-2.6/drivers/kvm/vmx.c =================================================================== --- linux-2.6.orig/drivers/kvm/vmx.c +++ linux-2.6/drivers/kvm/vmx.c @@ -347,6 +347,7 @@ static void vmx_save_host_state(struct k static void vmx_load_host_state(struct kvm_vcpu *vcpu) { struct vmx_host_state *hs = &vcpu->vmx_host_state; + unsigned long flags; if (!hs->loaded) return; @@ -359,12 +360,12 @@ static void vmx_load_host_state(struct k * If we have to reload gs, we must take care to * preserve our gs base. */ - local_irq_disable(); + local_irq_save(flags); load_gs(hs->gs_sel); #ifdef CONFIG_X86_64 wrmsrl(MSR_GS_BASE, vmcs_readl(HOST_GS_BASE)); #endif - local_irq_enable(); + local_irq_restore(flags); reload_tss(); } --=-OB3sD6oCE0XIy2uSl6NI Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ --=-OB3sD6oCE0XIy2uSl6NI Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ kvm-devel mailing list kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org https://lists.sourceforge.net/lists/listinfo/kvm-devel --=-OB3sD6oCE0XIy2uSl6NI--