• Arnd Bergmann's avatar
    [POWERPC] spufs: make spu page faults not block scheduling · 57dace23
    Arnd Bergmann authored
    Until now, we have always entered the spu page fault handler
    with a mutex for the spu context held. This has multiple
    bad side-effects:
    - it becomes impossible to suspend the context during
      page faults
    - if an spu program attempts to access its own mmio
      areas through DMA, we get an immediate livelock when
      the nopage function tries to acquire the same mutex
    
    This patch makes the page fault logic operate on a
    struct spu_context instead of a struct spu, and moves it
    from spu_base.c to a new file fault.c inside of spufs.
    
    We now also need to copy the dar and dsisr contents
    of the last fault into the saved context to have it
    accessible in case we schedule out the context before
    activating the page fault handler.
    Signed-off-by: default avatarArnd Bergmann <arnd.bergmann@de.ibm.com>
    57dace23
switch.c 62.8 KB