From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: Re: [PATCH 2/2] xen/arm: call vcpu_yield on WFE trap Date: Wed, 23 Jul 2014 14:29:06 +0100 Message-ID: <53CFB8A2.3050308@eu.citrix.com> References: <1406117103-10584-2-git-send-email-stefano.stabellini@eu.citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1X9wc7-0002Mc-3Z for xen-devel@lists.xenproject.org; Wed, 23 Jul 2014 13:29:47 +0000 In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Stefano Stabellini Cc: xen-devel , Julien Grall , Ian Campbell , Anup Patel , Pranavkumar Sawargaonkar List-Id: xen-devel@lists.xenproject.org On 07/23/2014 02:13 PM, Stefano Stabellini wrote: > On Wed, 23 Jul 2014, George Dunlap wrote: >> On Wed, Jul 23, 2014 at 1:05 PM, Stefano Stabellini >> wrote: >>> No need to call vcpu_force_reschedule, is too expensive. >>> >>> Signed-off-by: Stefano Stabellini >>> --- >>> xen/arch/arm/traps.c | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c >>> index 3dfabd0..8cd06cc 100644 >>> --- a/xen/arch/arm/traps.c >>> +++ b/xen/arch/arm/traps.c >>> @@ -1805,7 +1805,7 @@ asmlinkage void do_trap_hypervisor(struct cpu_user_regs *regs) >>> } >>> if ( hsr.wfi_wfe.ti ) { >>> /* Yield the VCPU for WFE */ >>> - vcpu_force_reschedule(current); >>> + vcpu_yield(current); >> Actually, sorry -- why are you wanting to yield here? >> >> At the moment "yield" is only initiated by the guest itself, and the >> individual schedulers are notified that the guest has called "yield". >> If what you want to do is yield for some other reason, it might be >> better to have a slightly separate path for that. > > It is a very similar situation: WFE means "wait for event" and it is > used in the implementation of spin_locks, for example. > I think that trapping the instruction and yielding is what we want. Right -- sounds good then. -George