diff options
-rw-r--r-- | arch/powerpc/platforms/cell/spufs/switch.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/arch/powerpc/platforms/cell/spufs/switch.c b/arch/powerpc/platforms/cell/spufs/switch.c index 65b423b6da48..4131784216bb 100644 --- a/arch/powerpc/platforms/cell/spufs/switch.c +++ b/arch/powerpc/platforms/cell/spufs/switch.c | |||
@@ -186,20 +186,21 @@ static inline void save_mfc_cntl(struct spu_state *csa, struct spu *spu) | |||
186 | MFC_CNTL_SUSPEND_COMPLETE); | 186 | MFC_CNTL_SUSPEND_COMPLETE); |
187 | /* fall through */ | 187 | /* fall through */ |
188 | case MFC_CNTL_SUSPEND_COMPLETE: | 188 | case MFC_CNTL_SUSPEND_COMPLETE: |
189 | if (csa) { | 189 | if (csa) |
190 | csa->priv2.mfc_control_RW = | 190 | csa->priv2.mfc_control_RW = |
191 | MFC_CNTL_SUSPEND_MASK | | 191 | in_be64(&priv2->mfc_control_RW) | |
192 | MFC_CNTL_SUSPEND_DMA_QUEUE; | 192 | MFC_CNTL_SUSPEND_DMA_QUEUE; |
193 | } | ||
194 | break; | 193 | break; |
195 | case MFC_CNTL_NORMAL_DMA_QUEUE_OPERATION: | 194 | case MFC_CNTL_NORMAL_DMA_QUEUE_OPERATION: |
196 | out_be64(&priv2->mfc_control_RW, MFC_CNTL_SUSPEND_DMA_QUEUE); | 195 | out_be64(&priv2->mfc_control_RW, MFC_CNTL_SUSPEND_DMA_QUEUE); |
197 | POLL_WHILE_FALSE((in_be64(&priv2->mfc_control_RW) & | 196 | POLL_WHILE_FALSE((in_be64(&priv2->mfc_control_RW) & |
198 | MFC_CNTL_SUSPEND_DMA_STATUS_MASK) == | 197 | MFC_CNTL_SUSPEND_DMA_STATUS_MASK) == |
199 | MFC_CNTL_SUSPEND_COMPLETE); | 198 | MFC_CNTL_SUSPEND_COMPLETE); |
200 | if (csa) { | 199 | if (csa) |
201 | csa->priv2.mfc_control_RW = 0; | 200 | csa->priv2.mfc_control_RW = |
202 | } | 201 | in_be64(&priv2->mfc_control_RW) & |
202 | ~MFC_CNTL_SUSPEND_DMA_QUEUE & | ||
203 | ~MFC_CNTL_SUSPEND_MASK; | ||
203 | break; | 204 | break; |
204 | } | 205 | } |
205 | } | 206 | } |