{"id":185,"url":"http://patchwork.ozlabs.org/api/1.1/patches/185/?format=json","web_url":"http://patchwork.ozlabs.org/project/cbe-oss-dev/patch/200809050416.27831.adetsch@br.ibm.com/","project":{"id":1,"url":"http://patchwork.ozlabs.org/api/1.1/projects/1/?format=json","name":"Cell Broadband Engine development","link_name":"cbe-oss-dev","list_id":"cbe-oss-dev.ozlabs.org","list_email":"cbe-oss-dev@ozlabs.org","web_url":null,"scm_url":null,"webscm_url":null},"msgid":"<200809050416.27831.adetsch@br.ibm.com>","date":"2008-09-05T07:16:27","name":"powerpc/spufs: Fix possible scheduling of a context to multiple SPEs","commit_ref":"b2e601d14deb2083e2a537b47869ab3895d23a28","pull_url":null,"state":"accepted","archived":false,"hash":"bc1c0b80d7cff66c0d1e5f3f8f4d10eb36176f0d","submitter":{"id":93,"url":"http://patchwork.ozlabs.org/api/1.1/people/93/?format=json","name":"Andre Detsch","email":"adetsch@br.ibm.com"},"delegate":{"id":1,"url":"http://patchwork.ozlabs.org/api/1.1/users/1/?format=json","username":"jk","first_name":"Jeremy","last_name":"Kerr","email":"jk@ozlabs.org"},"mbox":"http://patchwork.ozlabs.org/project/cbe-oss-dev/patch/200809050416.27831.adetsch@br.ibm.com/mbox/","series":[],"comments":"http://patchwork.ozlabs.org/api/patches/185/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/185/checks/","tags":{},"headers":{"Return-Path":"<cbe-oss-dev-bounces+patchwork=ozlabs.org@ozlabs.org>","X-Original-To":["patchwork@ozlabs.org","cbe-oss-dev@ozlabs.org"],"Delivered-To":["patchwork@ozlabs.org","cbe-oss-dev@ozlabs.org"],"Received":["from ozlabs.org (localhost [127.0.0.1])\n\tby ozlabs.org (Postfix) with ESMTP id 7C472DDF7C\n\tfor <patchwork@ozlabs.org>; Fri,  5 Sep 2008 17:17:52 +1000 (EST)","from igw3.br.ibm.com (igw3.br.ibm.com [32.104.18.26])\n\t(using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))\n\t(Client CN \"igw3.br.ibm.com\", Issuer \"Equifax\" (verified OK))\n\tby ozlabs.org (Postfix) with ESMTPS id D97ABDDF60;\n\tFri,  5 Sep 2008 17:17:36 +1000 (EST)","from mailhub3.br.ibm.com (unknown [9.18.232.110])\n\tby igw3.br.ibm.com (Postfix) with ESMTP id BE19F390158;\n\tFri,  5 Sep 2008 03:56:34 -0300 (BRST)","from d24av02.br.ibm.com (d24av02.br.ibm.com [9.18.232.47])\n\tby mailhub3.br.ibm.com (8.13.8/8.13.8/NCO v8.7) with ESMTP id\n\tm857HZlh3936442; Fri, 5 Sep 2008 04:17:35 -0300","from d24av02.br.ibm.com (loopback [127.0.0.1])\n\tby d24av02.br.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id\n\tm857HSQO017221; Fri, 5 Sep 2008 04:17:28 -0300","from [9.18.200.217] ([9.18.200.217])\n\tby d24av02.br.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id\n\tm857HRI3016984; Fri, 5 Sep 2008 04:17:28 -0300"],"From":"Andre Detsch <adetsch@br.ibm.com>","To":"cbe-oss-dev@ozlabs.org, Jeremy Kerr <jk@ozlabs.org>","Date":"Fri, 5 Sep 2008 04:16:27 -0300","User-Agent":"KMail/1.9.6","MIME-Version":"1.0","Content-Disposition":"inline","Message-Id":"<200809050416.27831.adetsch@br.ibm.com>","Subject":"[Cbe-oss-dev] [PATCH] powerpc/spufs: Fix possible scheduling of a\n\tcontext to multiple SPEs","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\n\t<cbe-oss-dev.ozlabs.org>","List-Unsubscribe":"<https://ozlabs.org/mailman/options/cbe-oss-dev>,\n\t<mailto:cbe-oss-dev-request@ozlabs.org?subject=unsubscribe>","List-Archive":"<http://ozlabs.org/pipermail/cbe-oss-dev>","List-Post":"<mailto:cbe-oss-dev@ozlabs.org>","List-Help":"<mailto:cbe-oss-dev-request@ozlabs.org?subject=help>","List-Subscribe":"<https://ozlabs.org/mailman/listinfo/cbe-oss-dev>,\n\t<mailto:cbe-oss-dev-request@ozlabs.org?subject=subscribe>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"cbe-oss-dev-bounces+patchwork=ozlabs.org@ozlabs.org","Errors-To":"cbe-oss-dev-bounces+patchwork=ozlabs.org@ozlabs.org"},"content":"We currently have a race when scheduling a context to a SPE -\nafter we have found a runnable context in spusched_tick, the same\ncontext may have been scheduled by spu_activate().\n\nThis may result in a panic if we try to unschedule a context that has\nbeen freed in the meantime.\n\nThis change exits spu_schedule() if the context has already been\nscheduled, so we don't end up scheduling it twice.\n\nSigned-off-by: Andre Detsch <adetsch@br.ibm.com>","diff":"Index: spufs/arch/powerpc/platforms/cell/spufs/sched.c\n===================================================================\n--- spufs.orig/arch/powerpc/platforms/cell/spufs/sched.c\n+++ spufs/arch/powerpc/platforms/cell/spufs/sched.c\n@@ -727,7 +727,8 @@ static void spu_schedule(struct spu *spu\n \t/* not a candidate for interruptible because it's called either\n \t   from the scheduler thread or from spu_deactivate */\n \tmutex_lock(&ctx->state_mutex);\n-\t__spu_schedule(spu, ctx);\n+\tif (ctx->state == SPU_STATE_SAVED)\n+\t\t__spu_schedule(spu, ctx);\n \tspu_release(ctx);\n }\n\n","prefixes":[]}