From patchwork Wed Dec 10 19:04:33 2008 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andre Detsch X-Patchwork-Id: 13297 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 39177474C9 for ; Thu, 11 Dec 2008 06:21:31 +1100 (EST) X-Original-To: cbe-oss-dev@ozlabs.org Delivered-To: cbe-oss-dev@ozlabs.org Received: from igw3.br.ibm.com (igw3.br.ibm.com [32.104.18.26]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "igw3.br.ibm.com", Issuer "Equifax" (verified OK)) by ozlabs.org (Postfix) with ESMTPS id DDE0B474FE for ; Thu, 11 Dec 2008 06:04:42 +1100 (EST) Received: from d24relay01.br.ibm.com (unknown [9.8.31.16]) by igw3.br.ibm.com (Postfix) with ESMTP id AC4993902D7 for ; Wed, 10 Dec 2008 17:01:07 -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 mBAK4AxZ3051680 for ; Wed, 10 Dec 2008 17:04:10 -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 mBAJ4ZKJ016980 for ; Wed, 10 Dec 2008 17:04:36 -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 mBAJ4Xr3016916 for ; Wed, 10 Dec 2008 17:04:34 -0200 Date: Wed, 10 Dec 2008 17:04:33 -0200 From: adetsch@br.ibm.com Message-Id: <200812101904.mBAJ4Xr3016916@d24av01.br.ibm.com> To: cbe-oss-dev@ozlabs.org Subject: [Cbe-oss-dev] (no subject) 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: , MIME-Version: 1.0 Sender: cbe-oss-dev-bounces+patchwork-incoming=ozlabs.org@ozlabs.org Errors-To: cbe-oss-dev-bounces+patchwork-incoming=ozlabs.org@ozlabs.org From ba8b198959d296347eb75691bfa90d7fdcec98dd Mon Sep 17 00:00:00 2001 In-Reply-To: <200812101654.05091.adetsch@br.ibm.com> References: <200812101654.05091.adetsch@br.ibm.com> From: Andre Detsch Date: Wed, 10 Dec 2008 17:04:34 -0200 Subject: [PATCH 17/18] powerpc/spufs: Reorder spu_gang_remove_ctx and spu_fini_csa operations MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200812101704.34533.adetsch@br.ibm.com> It is not safe to destroy csa data before the context is removed from the gang. In some rare situations, this could lead to the following problem during context restore: Unable to handle kernel paging request for data at address 0xd000000000000880 Faulting instruction address: 0xc00000000004935c cpu 0x3: Vector: 300 (Data Access) at [c00000003ed1b670] pc: c00000000004935c: .spu_restore+0x7c/0x10dc lr: c000000000049320: .spu_restore+0x40/0x10dc sp: c00000003ed1b8f0 msr: 9000000000009032 dar: d000000000000880 dsisr: 42000000 current = 0xc00000003e183a30 paca = 0xc000000000853a80 pid = 2182, comm = affinity enter ? for help [c00000003ed1b9e0] c0000000000451dc .__spu_schedule+0x374/0x428 [c00000003ed1baa0] c000000000045db8 .spu_activate+0x43c/0x5d8 [c00000003ed1bbc0] c000000000047a6c .spufs_run_spu+0x510/0xb0c [c00000003ed1bcc0] c000000000042f9c .do_spu_run+0xb0/0x17c [c00000003ed1bd80] c00000000003bfdc .sys_spu_run+0x80/0xc8 [c00000003ed1be30] c0000000000076b4 syscall_exit+0x0/0x40 --- arch/powerpc/platforms/cell/spufs/context.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/arch/powerpc/platforms/cell/spufs/context.c b/arch/powerpc/platforms/cell/spufs/context.c index ef81894..a83c3bd 100644 --- a/arch/powerpc/platforms/cell/spufs/context.c +++ b/arch/powerpc/platforms/cell/spufs/context.c @@ -130,8 +130,8 @@ void destroy_spu_context(struct kref *kref) spu_context_nospu_trace(destroy_spu_context__enter, ctx); - spu_fini_csa(&ctx->csa); spu_gang_remove_ctx(ctx->gang, ctx); + spu_fini_csa(&ctx->csa); if (ctx->prof_priv_kref) kref_put(ctx->prof_priv_kref, ctx->prof_priv_release); atomic_dec(&nr_spu_contexts);