···104 __set_current_state(TASK_RUNNING);105 remove_wait_queue(&dev->lock.lock_queue, &entry);1060000107 sigemptyset(&dev->sigmask);108 sigaddset(&dev->sigmask, SIGSTOP);109 sigaddset(&dev->sigmask, SIGTSTP);···120 if (dev->driver->dma_ready && (lock.flags & _DRM_LOCK_READY))121 dev->driver->dma_ready(dev);122123- if (dev->driver->dma_quiescent && (lock.flags & _DRM_LOCK_QUIESCENT))124- return dev->driver->dma_quiescent(dev);0000125126 /* dev->driver->kernel_context_switch isn't used by any of the x86127 * drivers but is used by the Sparc driver.···136 dev->driver->kernel_context_switch(dev, dev->last_context,137 lock.context);138 }139- DRM_DEBUG("%d %s\n", lock.context, ret ? "interrupted" : "has lock");140-141- return ret;142}143144/**
···104 __set_current_state(TASK_RUNNING);105 remove_wait_queue(&dev->lock.lock_queue, &entry);106107+ DRM_DEBUG("%d %s\n", lock.context, ret ? "interrupted" : "has lock");108+ if (ret)109+ return ret;110+111 sigemptyset(&dev->sigmask);112 sigaddset(&dev->sigmask, SIGSTOP);113 sigaddset(&dev->sigmask, SIGTSTP);···116 if (dev->driver->dma_ready && (lock.flags & _DRM_LOCK_READY))117 dev->driver->dma_ready(dev);118119+ if (dev->driver->dma_quiescent && (lock.flags & _DRM_LOCK_QUIESCENT)) {120+ if (dev->driver->dma_quiescent(dev)) {121+ DRM_DEBUG("%d waiting for DMA quiescent\n", lock.context);122+ return DRM_ERR(EBUSY);123+ }124+ }125126 /* dev->driver->kernel_context_switch isn't used by any of the x86127 * drivers but is used by the Sparc driver.···128 dev->driver->kernel_context_switch(dev, dev->last_context,129 lock.context);130 }131+ return 0;00132}133134/**