From patchwork Thu Sep 11 23:38:14 2008 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andre Detsch X-Patchwork-Id: 255 X-Patchwork-Delegate: jk@ozlabs.org Return-Path: X-Original-To: patchwork@ozlabs.org Delivered-To: patchwork@ozlabs.org Received: from ozlabs.org (localhost [127.0.0.1]) by ozlabs.org (Postfix) with ESMTP id A2875DE1DD for ; Fri, 12 Sep 2008 09:40:18 +1000 (EST) X-Original-To: cbe-oss-dev@ozlabs.org Delivered-To: cbe-oss-dev@ozlabs.org Received: from igw2.br.ibm.com (igw2.br.ibm.com [32.104.18.25]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "mailgw2.br.ibm.com", Issuer "Equifax" (not verified)) by ozlabs.org (Postfix) with ESMTPS id 56031DE017; Fri, 12 Sep 2008 09:39:07 +1000 (EST) Received: from mailhub1.br.ibm.com (mailhub1 [9.18.232.109]) by igw2.br.ibm.com (Postfix) with ESMTP id F0AA417F485; Thu, 11 Sep 2008 20:23:44 -0300 (BRT) Received: from d24av02.br.ibm.com (d24av02.br.ibm.com [9.18.232.47]) by mailhub1.br.ibm.com (8.13.8/8.13.8/NCO v9.1) with ESMTP id m8BNd2es1855906; Thu, 11 Sep 2008 20:39:02 -0300 Received: from d24av02.br.ibm.com (loopback [127.0.0.1]) by d24av02.br.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id m8BNctBf030039; Thu, 11 Sep 2008 20:38:55 -0300 Received: from [9.8.10.86] ([9.8.10.86]) by d24av02.br.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id m8BNctIX030034; Thu, 11 Sep 2008 20:38:55 -0300 From: Andre Detsch To: cbe-oss-dev@ozlabs.org Date: Thu, 11 Sep 2008 20:38:14 -0300 User-Agent: KMail/1.9.6 References: <200809111955.28780.adetsch@br.ibm.com> In-Reply-To: <200809111955.28780.adetsch@br.ibm.com> MIME-Version: 1.0 Content-Disposition: inline Message-Id: <200809112038.14473.adetsch@br.ibm.com> Cc: LukeBrowning@us.ibm.com, Jeremy Kerr Subject: [Cbe-oss-dev] [PATCH 06/11] powerpc/spufs: Time slice lazily loaded contexts. X-BeenThere: cbe-oss-dev@ozlabs.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: Discussion about Open Source Software for the Cell Broadband Engine List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: cbe-oss-dev-bounces+patchwork=ozlabs.org@ozlabs.org Errors-To: cbe-oss-dev-bounces+patchwork=ozlabs.org@ozlabs.org All SPUs are stopped. All contexts are either executing library code or they have major faulted in spu_run. Signed-off-by: Luke Browning Signed-off-by: Andre Detsch diff --git a/arch/powerpc/platforms/cell/spufs/sched.c b/arch/powerpc/platforms/cell/spufs/sched.c index c0cc876..f3dee8d 100644 --- a/arch/powerpc/platforms/cell/spufs/sched.c +++ b/arch/powerpc/platforms/cell/spufs/sched.c @@ -1230,9 +1230,13 @@ static noinline int spusched_tick(struct spu_gang *gang, goto out; /* - * If nrunnable is zero, then all of the contexts are in user mode. + * If nrunnable is zero, then all of the contexts are in user mode + * and by definition nfaulting is equal to zero. Otherwise if they + * are equal, all of the contexts in spu_run have faulted. In both + * cases, all spus are stopped and we should yield assuming there + * is another gang on the runqueue. */ - yield = !atomic_read(&gang->nrunnable); + yield = atomic_read(&gang->nrunnable) == atomic_read(&gang->nfaulting); if (yield || ((ctx->policy != SCHED_FIFO) && (!--ctx->time_slice))) {