From patchwork Thu Sep 11 23:38:16 2008 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andre Detsch X-Patchwork-Id: 254 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 EBB59DE764 for ; Fri, 12 Sep 2008 09:40:10 +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 5C5F7DE023; Fri, 12 Sep 2008 09:39:09 +1000 (EST) Received: from mailhub1.br.ibm.com (mailhub1 [9.18.232.109]) by igw2.br.ibm.com (Postfix) with ESMTP id AE61B17F4F6; Thu, 11 Sep 2008 20:23:47 -0300 (BRT) Received: from d24av01.br.ibm.com (d24av01.br.ibm.com [9.18.232.46]) by mailhub1.br.ibm.com (8.13.8/8.13.8/NCO v9.1) with ESMTP id m8BNd4HT1855914; Thu, 11 Sep 2008 20:39:04 -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 m8BNcwau024323; Thu, 11 Sep 2008 20:38:58 -0300 Received: from [9.8.10.86] ([9.8.10.86]) by d24av01.br.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id m8BNcwEx024320; Thu, 11 Sep 2008 20:38:58 -0300 From: Andre Detsch To: cbe-oss-dev@ozlabs.org Date: Thu, 11 Sep 2008 20:38:16 -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.17055.adetsch@br.ibm.com> Cc: LukeBrowning@us.ibm.com, Jeremy Kerr Subject: [Cbe-oss-dev] [PATCH 07/11] powerpc/spufs: Allow gang to grow in size after it has been started 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 Just deactivate it, add the new context, and let the calling thread drives its reactivation. It needs to be unscheduled, since it may no longer fit or it may need to be migrated to a different node. Signed-off-by: Luke Browning Signed-off-by: Andre Detsch diff --git a/arch/powerpc/platforms/cell/spufs/context.c b/arch/powerpc/platforms/cell/spufs/context.c index 21ba409..c472519 100644 --- a/arch/powerpc/platforms/cell/spufs/context.c +++ b/arch/powerpc/platforms/cell/spufs/context.c @@ -57,6 +57,17 @@ struct spu_context *alloc_spu_context(struct spu_gang *gang) if (spu_init_csa(&ctx->csa)) goto out_free_gang; + /* If the gang is running, it needs to be stopped, since we have a + * new context that needs to be gang scheduled. Gangs are allowed + * to grow and shrink over time, but they are unscheduled when it + * happens as the gang may need to migrated to a different node. + */ + if (atomic_read(&gang->nstarted)) { + mutex_lock(&gang->mutex); + spu_deactivate(gang); + mutex_unlock(&gang->mutex); + } + spin_lock_init(&ctx->mmio_lock); mutex_init(&ctx->mapping_lock);