From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rik van Riel Subject: Re: [RFC -v4 PATCH 3/3] kvm: use yield_to instead of sleep in kvm_vcpu_on_spin Date: Thu, 13 Jan 2011 10:06:56 -0500 Message-ID: <4D2F1510.3000809@redhat.com> References: <20110113002108.3abdf953@annuminas.surriel.com> <20110113002745.51190252@annuminas.surriel.com> <4D2EFB44.2060906@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Srivatsa Vaddagiri , Peter Zijlstra , Mike Galbraith , Chris Wright To: Avi Kivity Return-path: Received: from mx1.redhat.com ([209.132.183.28]:63238 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757019Ab1AMPHI (ORCPT ); Thu, 13 Jan 2011 10:07:08 -0500 In-Reply-To: <4D2EFB44.2060906@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: On 01/13/2011 08:16 AM, Avi Kivity wrote: >> + for (pass = 0; pass< 2&& !yielded; pass++) { >> + kvm_for_each_vcpu(i, vcpu, kvm) { >> + struct task_struct *task = vcpu->task; >> + if (!pass&& i< last_boosted_vcpu) { >> + i = last_boosted_vcpu; >> + continue; >> + } else if (pass&& i> last_boosted_vcpu) >> + break; >> + if (vcpu == me) >> + continue; >> + if (!task) >> + continue; >> + if (waitqueue_active(&vcpu->wq)) >> + continue; > > Suppose the vcpu exits at this point, and its task terminates. Arghh, good point. > I think the first patch needs some reference counting... I'd move it to > the outermost KVM_RUN loop to reduce the performance impact. I don't see how refcounting from that other thread could possibly help, and I now see that the task_struct_cachep does not have SLAB_DESTROY_BY_LRU, either :( What do you have in mind here that would both work and be acceptable to you as KVM maintainer? -- All rights reversed