]> err.no Git - linux-2.6/commitdiff
[POWERPC] cell/PS3: Always set master run control bit in mfc_sr1_set
authorJeremy Kerr <jk@ozlabs.org>
Fri, 7 Sep 2007 08:28:27 +0000 (18:28 +1000)
committerPaul Mackerras <paulus@samba.org>
Mon, 10 Sep 2007 18:30:36 +0000 (04:30 +1000)
At present, running any SPE program on the ps3 will trigger a BUG_ON
when spufs_run_spu tries to clear the master run control bit, as lv1
does not make the master run control available to Linux.

This change makes SPE apps work again by disabling changes to the
master run control on PS3.  Although we don't have the facility to
disable a SPE with supervisor-level privileges, it's better than
hitting the BUG_ON unconditionally.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Acked-by: Masato Noguchi <Masato.Noguchi@jp.sony.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/platforms/ps3/spu.c

index ac2a4b8a4c1424270954c51b96b7e1d687140384..d1630a074acf6fb0e527bb4e900193914af662b6 100644 (file)
@@ -505,6 +505,8 @@ static void mfc_sr1_set(struct spu *spu, u64 sr1)
        static const u64 allowed = ~(MFC_STATE1_LOCAL_STORAGE_DECODE_MASK
                | MFC_STATE1_PROBLEM_STATE_MASK);
 
+       sr1 |= MFC_STATE1_MASTER_RUN_CONTROL_MASK;
+
        BUG_ON((sr1 & allowed) != (spu_pdata(spu)->cache.sr1 & allowed));
 
        spu_pdata(spu)->cache.sr1 = sr1;