From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ross Lagerwall Subject: Re: [PATCH v3 07/23] xsplice: Implement support for applying/reverting/replacing patches. (v5) Date: Wed, 17 Feb 2016 08:58:27 +0000 Message-ID: <56C43633.9090504@citrix.com> References: <1455300361-13092-1-git-send-email-konrad.wilk@oracle.com> <1455300361-13092-8-git-send-email-konrad.wilk@oracle.com> <56C3744E.8000702@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1aVxwN-0006m5-VQ for xen-devel@lists.xenproject.org; Wed, 17 Feb 2016 08:58:32 +0000 In-Reply-To: <56C3744E.8000702@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Andrew Cooper Cc: xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org On 02/16/2016 07:11 PM, Andrew Cooper wrote: snip >> + } >> + >> + barrier(); /* MUST do it after get_cpu_maps. */ >> + total_cpus = num_online_cpus() - 1; >> + >> + if ( total_cpus ) >> + { >> + printk(XENLOG_DEBUG "%s: CPU%u - IPIing the %u CPUs.\n", p->name, >> + cpu, total_cpus); >> + smp_call_function(reschedule_fn, NULL, 0); >> + } >> + (void)xsplice_do_single(total_cpus); >> + >> + ASSERT(local_irq_is_enabled()); >> + >> + put_cpu_maps(); >> + >> + printk(XENLOG_DEBUG "%s finished with rc=%d\n", p->name, p->rc); >> + } >> + else >> + { >> + /* Wait for all CPUs to rendezvous. */ >> + while ( xsplice_work.do_work && !xsplice_work.ready ) >> + { >> + cpu_relax(); >> + smp_rmb(); >> + } >> + > > What happens here if the rendezvous initiator times out? Looks like we > will spin forever waiting for do_work which will never drop back to 0. xsplice_do_wait() sets do_work to 0 on a timeout. -- Ross Lagerwall