diff options
| -rw-r--r-- | drivers/gpu/drm/i810/i810_dma.c | 17 | ||||
| -rw-r--r-- | drivers/gpu/drm/i810/i810_drv.c | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/i810/i810_drv.h | 6 |
3 files changed, 11 insertions, 13 deletions
diff --git a/drivers/gpu/drm/i810/i810_dma.c b/drivers/gpu/drm/i810/i810_dma.c index f7c17b239833..7f4b4e10246e 100644 --- a/drivers/gpu/drm/i810/i810_dma.c +++ b/drivers/gpu/drm/i810/i810_dma.c | |||
| @@ -886,7 +886,7 @@ static int i810_flush_queue(struct drm_device *dev) | |||
| 886 | } | 886 | } |
| 887 | 887 | ||
| 888 | /* Must be called with the lock held */ | 888 | /* Must be called with the lock held */ |
| 889 | void i810_driver_reclaim_buffers(struct drm_device *dev, | 889 | static void i810_reclaim_buffers(struct drm_device *dev, |
| 890 | struct drm_file *file_priv) | 890 | struct drm_file *file_priv) |
| 891 | { | 891 | { |
| 892 | struct drm_device_dma *dma = dev->dma; | 892 | struct drm_device_dma *dma = dev->dma; |
| @@ -1223,17 +1223,12 @@ void i810_driver_preclose(struct drm_device *dev, struct drm_file *file_priv) | |||
| 1223 | if (dev_priv->page_flipping) | 1223 | if (dev_priv->page_flipping) |
| 1224 | i810_do_cleanup_pageflip(dev); | 1224 | i810_do_cleanup_pageflip(dev); |
| 1225 | } | 1225 | } |
| 1226 | } | ||
| 1226 | 1227 | ||
| 1227 | if (file_priv->master && file_priv->master->lock.hw_lock) { | 1228 | void i810_driver_reclaim_buffers_locked(struct drm_device *dev, |
| 1228 | drm_idlelock_take(&file_priv->master->lock); | 1229 | struct drm_file *file_priv) |
| 1229 | i810_driver_reclaim_buffers(dev, file_priv); | 1230 | { |
| 1230 | drm_idlelock_release(&file_priv->master->lock); | 1231 | i810_reclaim_buffers(dev, file_priv); |
| 1231 | } else { | ||
| 1232 | /* master disappeared, clean up stuff anyway and hope nothing | ||
| 1233 | * goes wrong */ | ||
| 1234 | i810_driver_reclaim_buffers(dev, file_priv); | ||
| 1235 | } | ||
| 1236 | |||
| 1237 | } | 1232 | } |
| 1238 | 1233 | ||
| 1239 | int i810_driver_dma_quiescent(struct drm_device *dev) | 1234 | int i810_driver_dma_quiescent(struct drm_device *dev) |
diff --git a/drivers/gpu/drm/i810/i810_drv.c b/drivers/gpu/drm/i810/i810_drv.c index 053f1ee58393..ec12f7dc717a 100644 --- a/drivers/gpu/drm/i810/i810_drv.c +++ b/drivers/gpu/drm/i810/i810_drv.c | |||
| @@ -63,6 +63,7 @@ static struct drm_driver driver = { | |||
| 63 | .lastclose = i810_driver_lastclose, | 63 | .lastclose = i810_driver_lastclose, |
| 64 | .preclose = i810_driver_preclose, | 64 | .preclose = i810_driver_preclose, |
| 65 | .device_is_agp = i810_driver_device_is_agp, | 65 | .device_is_agp = i810_driver_device_is_agp, |
| 66 | .reclaim_buffers_locked = i810_driver_reclaim_buffers_locked, | ||
| 66 | .dma_quiescent = i810_driver_dma_quiescent, | 67 | .dma_quiescent = i810_driver_dma_quiescent, |
| 67 | .ioctls = i810_ioctls, | 68 | .ioctls = i810_ioctls, |
| 68 | .fops = &i810_driver_fops, | 69 | .fops = &i810_driver_fops, |
diff --git a/drivers/gpu/drm/i810/i810_drv.h b/drivers/gpu/drm/i810/i810_drv.h index 6e0acad9e0f5..c9339f481795 100644 --- a/drivers/gpu/drm/i810/i810_drv.h +++ b/drivers/gpu/drm/i810/i810_drv.h | |||
| @@ -116,12 +116,14 @@ typedef struct drm_i810_private { | |||
| 116 | 116 | ||
| 117 | /* i810_dma.c */ | 117 | /* i810_dma.c */ |
| 118 | extern int i810_driver_dma_quiescent(struct drm_device *dev); | 118 | extern int i810_driver_dma_quiescent(struct drm_device *dev); |
| 119 | void i810_driver_reclaim_buffers(struct drm_device *dev, | 119 | extern void i810_driver_reclaim_buffers_locked(struct drm_device *dev, |
| 120 | struct drm_file *file_priv); | 120 | struct drm_file *file_priv); |
| 121 | extern int i810_driver_load(struct drm_device *, unsigned long flags); | 121 | extern int i810_driver_load(struct drm_device *, unsigned long flags); |
| 122 | extern void i810_driver_lastclose(struct drm_device *dev); | 122 | extern void i810_driver_lastclose(struct drm_device *dev); |
| 123 | extern void i810_driver_preclose(struct drm_device *dev, | 123 | extern void i810_driver_preclose(struct drm_device *dev, |
| 124 | struct drm_file *file_priv); | 124 | struct drm_file *file_priv); |
| 125 | extern void i810_driver_reclaim_buffers_locked(struct drm_device *dev, | ||
| 126 | struct drm_file *file_priv); | ||
| 125 | extern int i810_driver_device_is_agp(struct drm_device *dev); | 127 | extern int i810_driver_device_is_agp(struct drm_device *dev); |
| 126 | 128 | ||
| 127 | extern long i810_ioctl(struct file *file, unsigned int cmd, unsigned long arg); | 129 | extern long i810_ioctl(struct file *file, unsigned int cmd, unsigned long arg); |
