From patchwork Wed Dec 10 19:40:53 2008 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andre Detsch X-Patchwork-Id: 13324 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from ozlabs.org (localhost [127.0.0.1]) by ozlabs.org (Postfix) with ESMTP id 7011BDDF81 for ; Thu, 11 Dec 2008 06:49:37 +1100 (EST) X-Original-To: cbe-oss-dev@ozlabs.org Delivered-To: cbe-oss-dev@ozlabs.org Received: from igw1.br.ibm.com (igw1.br.ibm.com [32.104.18.24]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 2C73DDDF86 for ; Thu, 11 Dec 2008 06:41:19 +1100 (EST) Received: from d24relay01.br.ibm.com (unknown [9.8.31.16]) by igw1.br.ibm.com (Postfix) with ESMTP id 34B2532C06C for ; Wed, 10 Dec 2008 17:37:12 -0200 (BRDT) Received: from d24av01.br.ibm.com (d24av01.br.ibm.com [9.18.232.46]) by d24relay01.br.ibm.com (8.13.8/8.13.8/NCO v9.1) with ESMTP id mBAKeeHp2863254 for ; Wed, 10 Dec 2008 17:40:40 -0300 Received: from d24av01.br.ibm.com (loopback [127.0.0.1]) by d24av01.br.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id mBAJf5Zl018398 for ; Wed, 10 Dec 2008 17:41:05 -0200 Received: from [9.8.13.23] ([9.8.13.23]) by d24av01.br.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id mBAJegsi017084 for ; Wed, 10 Dec 2008 17:41:03 -0200 From: Andre Detsch To: cbe-oss-dev@ozlabs.org Date: Wed, 10 Dec 2008 17:40:53 -0200 User-Agent: KMail/1.9.6 References: <200812101719.42964.adetsch@br.ibm.com> In-Reply-To: <200812101719.42964.adetsch@br.ibm.com> MIME-Version: 1.0 Content-Disposition: inline Message-Id: <200812101740.54125.adetsch@br.ibm.com> Subject: [Cbe-oss-dev] [PATCH 06/18] 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-incoming=ozlabs.org@ozlabs.org Errors-To: cbe-oss-dev-bounces+patchwork-incoming=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 --- arch/powerpc/platforms/cell/spufs/sched.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/arch/powerpc/platforms/cell/spufs/sched.c b/arch/powerpc/platforms/cell/spufs/sched.c index 3c83bd3..acd584e 100644 --- a/arch/powerpc/platforms/cell/spufs/sched.c +++ b/arch/powerpc/platforms/cell/spufs/sched.c @@ -1244,9 +1244,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))) { if (spu_prio->nr_waiting) {