Loading drivers/char/drm/drm_lock.c +11 −5 Original line number Original line Diff line number Diff line Loading @@ -104,6 +104,10 @@ int drm_lock(struct inode *inode, struct file *filp, __set_current_state(TASK_RUNNING); __set_current_state(TASK_RUNNING); remove_wait_queue(&dev->lock.lock_queue, &entry); remove_wait_queue(&dev->lock.lock_queue, &entry); DRM_DEBUG("%d %s\n", lock.context, ret ? "interrupted" : "has lock"); if (ret) return ret; sigemptyset(&dev->sigmask); sigemptyset(&dev->sigmask); sigaddset(&dev->sigmask, SIGSTOP); sigaddset(&dev->sigmask, SIGSTOP); sigaddset(&dev->sigmask, SIGTSTP); sigaddset(&dev->sigmask, SIGTSTP); Loading @@ -116,8 +120,12 @@ int drm_lock(struct inode *inode, struct file *filp, if (dev->driver->dma_ready && (lock.flags & _DRM_LOCK_READY)) if (dev->driver->dma_ready && (lock.flags & _DRM_LOCK_READY)) dev->driver->dma_ready(dev); dev->driver->dma_ready(dev); if (dev->driver->dma_quiescent && (lock.flags & _DRM_LOCK_QUIESCENT)) if (dev->driver->dma_quiescent && (lock.flags & _DRM_LOCK_QUIESCENT)) { return dev->driver->dma_quiescent(dev); if (dev->driver->dma_quiescent(dev)) { DRM_DEBUG("%d waiting for DMA quiescent\n", lock.context); return DRM_ERR(EBUSY); } } /* dev->driver->kernel_context_switch isn't used by any of the x86 /* dev->driver->kernel_context_switch isn't used by any of the x86 * drivers but is used by the Sparc driver. * drivers but is used by the Sparc driver. Loading @@ -128,9 +136,7 @@ int drm_lock(struct inode *inode, struct file *filp, dev->driver->kernel_context_switch(dev, dev->last_context, dev->driver->kernel_context_switch(dev, dev->last_context, lock.context); lock.context); } } DRM_DEBUG("%d %s\n", lock.context, ret ? "interrupted" : "has lock"); return 0; return ret; } } /** /** Loading Loading
drivers/char/drm/drm_lock.c +11 −5 Original line number Original line Diff line number Diff line Loading @@ -104,6 +104,10 @@ int drm_lock(struct inode *inode, struct file *filp, __set_current_state(TASK_RUNNING); __set_current_state(TASK_RUNNING); remove_wait_queue(&dev->lock.lock_queue, &entry); remove_wait_queue(&dev->lock.lock_queue, &entry); DRM_DEBUG("%d %s\n", lock.context, ret ? "interrupted" : "has lock"); if (ret) return ret; sigemptyset(&dev->sigmask); sigemptyset(&dev->sigmask); sigaddset(&dev->sigmask, SIGSTOP); sigaddset(&dev->sigmask, SIGSTOP); sigaddset(&dev->sigmask, SIGTSTP); sigaddset(&dev->sigmask, SIGTSTP); Loading @@ -116,8 +120,12 @@ int drm_lock(struct inode *inode, struct file *filp, if (dev->driver->dma_ready && (lock.flags & _DRM_LOCK_READY)) if (dev->driver->dma_ready && (lock.flags & _DRM_LOCK_READY)) dev->driver->dma_ready(dev); dev->driver->dma_ready(dev); if (dev->driver->dma_quiescent && (lock.flags & _DRM_LOCK_QUIESCENT)) if (dev->driver->dma_quiescent && (lock.flags & _DRM_LOCK_QUIESCENT)) { return dev->driver->dma_quiescent(dev); if (dev->driver->dma_quiescent(dev)) { DRM_DEBUG("%d waiting for DMA quiescent\n", lock.context); return DRM_ERR(EBUSY); } } /* dev->driver->kernel_context_switch isn't used by any of the x86 /* dev->driver->kernel_context_switch isn't used by any of the x86 * drivers but is used by the Sparc driver. * drivers but is used by the Sparc driver. Loading @@ -128,9 +136,7 @@ int drm_lock(struct inode *inode, struct file *filp, dev->driver->kernel_context_switch(dev, dev->last_context, dev->driver->kernel_context_switch(dev, dev->last_context, lock.context); lock.context); } } DRM_DEBUG("%d %s\n", lock.context, ret ? "interrupted" : "has lock"); return 0; return ret; } } /** /** Loading