From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rik van Riel Subject: Re: [RFC PATCH 3/3] kvm: use yield_to instead of sleep in kvm_vcpu_on_spin Date: Thu, 09 Dec 2010 12:07:32 -0500 Message-ID: <4D010CD4.4020400@redhat.com> References: <20101202144129.4357fe00@annuminas.surriel.com> <20101202144516.45a0385d@annuminas.surriel.com> <4CFB8BFA.4040100@redhat.com> <4D0008D5.1040102@redhat.com> <4D00AF3C.40603@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 , Ingo Molnar , Anthony Liguori To: Avi Kivity Return-path: In-Reply-To: <4D00AF3C.40603@redhat.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org On 12/09/2010 05:28 AM, Avi Kivity wrote: > On 12/09/2010 12:38 AM, Rik van Riel wrote: >> >>>> - /* Sleep for 100 us, and hope lock-holder got scheduled */ >>>> - expires = ktime_add_ns(ktime_get(), 100000UL); >>>> - schedule_hrtimeout(&expires, HRTIMER_MODE_ABS); >>>> + if (first_round&& last_boosted_vcpu == kvm->last_boosted_vcpu) { >>>> + /* We have not found anyone yet. */ >>>> + first_round = 0; >>>> + goto again; >>> >>> Need to guarantee termination. >> >> We do that by setting first_round to 0 :) >> >> We at most walk N+1 VCPUs in a VM with N VCPUs, with >> this patch. >> > > Right. May be clearer by using a for () loop instead of the goto. And open coding kvm_for_each_vcpu ? Somehow I suspect that won't add to clarity... -- All rights reversed