summaryrefslogtreecommitdiff
path: root/arch/powerpc/platforms/cell/spufs/fault.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-05-09 15:06:31 (GMT)
committerLinus Torvalds <torvalds@linux-foundation.org>2008-05-09 15:06:31 (GMT)
commitd9a9a23ff2b00463f25e880d13364938b321ab8a (patch)
treee5ddb542d535ea741227265545a885636f8967aa /arch/powerpc/platforms/cell/spufs/fault.c
parent9b013c2820c409ff84871e55e407ec2181782773 (diff)
parent53962ecf6ebbdb5b15a8b35fbefe34430eb25609 (diff)
downloadlinux-fsl-qoriq-d9a9a23ff2b00463f25e880d13364938b321ab8a.tar.xz
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (23 commits) [POWERPC] Remove leftover printk in isa-bridge.c [POWERPC] Remove duplicate #include [POWERPC] Initialize lockdep earlier [POWERPC] Document when printk is useable [POWERPC] Fix bogus paca->_current initialization [POWERPC] Fix of_i2c include for module compilation [POWERPC] Make default cputable entries reflect selected CPU family [POWERPC] spufs: lockdep annotations for spufs_dir_close [POWERPC] spufs: don't requeue victim contex in find_victim if it's not in spu_run [POWERPC] 4xx: Fix PCI mem in sequoia DTS [POWERPC] 4xx: Add endpoint support to 4xx PCIe driver [POWERPC] 4xx: Fix problem with new TLB storage attibute fields on 440x6 core [POWERPC] spufs: spu_create should send inotify IM_CREATE event [POWERPC] spufs: handle faults while the context switch pending flag is set [POWERPC] spufs: fix concurrent delivery of class 0 & 1 exceptions [POWERPC] spufs: try to route SPU interrupts to local node [POWERPC] spufs: set SPU_CONTEXT_SWITCH_PENDING before synchronising SPU irqs [POWERPC] spufs: don't acquire state_mutex interruptible while performing callback [POWERPC] spufs: update master runcntl with context lock held [POWERPC] spufs: fix post-stopped update of MFC_CNTL register ...
Diffstat (limited to 'arch/powerpc/platforms/cell/spufs/fault.c')
-rw-r--r--arch/powerpc/platforms/cell/spufs/fault.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/arch/powerpc/platforms/cell/spufs/fault.c b/arch/powerpc/platforms/cell/spufs/fault.c
index e46d300..f093a58 100644
--- a/arch/powerpc/platforms/cell/spufs/fault.c
+++ b/arch/powerpc/platforms/cell/spufs/fault.c
@@ -83,13 +83,18 @@ int spufs_handle_class0(struct spu_context *ctx)
return 0;
if (stat & CLASS0_DMA_ALIGNMENT_INTR)
- spufs_handle_event(ctx, ctx->csa.dar, SPE_EVENT_DMA_ALIGNMENT);
+ spufs_handle_event(ctx, ctx->csa.class_0_dar,
+ SPE_EVENT_DMA_ALIGNMENT);
if (stat & CLASS0_INVALID_DMA_COMMAND_INTR)
- spufs_handle_event(ctx, ctx->csa.dar, SPE_EVENT_INVALID_DMA);
+ spufs_handle_event(ctx, ctx->csa.class_0_dar,
+ SPE_EVENT_INVALID_DMA);
if (stat & CLASS0_SPU_ERROR_INTR)
- spufs_handle_event(ctx, ctx->csa.dar, SPE_EVENT_SPE_ERROR);
+ spufs_handle_event(ctx, ctx->csa.class_0_dar,
+ SPE_EVENT_SPE_ERROR);
+
+ ctx->csa.class_0_pending = 0;
return -EIO;
}
@@ -119,8 +124,8 @@ int spufs_handle_class1(struct spu_context *ctx)
* in time, we can still expect to get the same fault
* the immediately after the context restore.
*/
- ea = ctx->csa.dar;
- dsisr = ctx->csa.dsisr;
+ ea = ctx->csa.class_1_dar;
+ dsisr = ctx->csa.class_1_dsisr;
if (!(dsisr & (MFC_DSISR_PTE_NOT_FOUND | MFC_DSISR_ACCESS_DENIED)))
return 0;
@@ -158,7 +163,7 @@ int spufs_handle_class1(struct spu_context *ctx)
* time slicing will not preempt the context while the page fault
* handler is running. Context switch code removes mappings.
*/
- ctx->csa.dar = ctx->csa.dsisr = 0;
+ ctx->csa.class_1_dar = ctx->csa.class_1_dsisr = 0;
/*
* If we handled the fault successfully and are in runnable