| From 136013f82bb95616de30f186d9ad35b09dd82144 Mon Sep 17 00:00:00 2001 |
| From: David Herrmann <dh.herrmann@gmail.com> |
| Date: Wed, 2 Oct 2013 11:23:36 +0200 |
| Subject: drm: move drm_lastclose() to drm_fops.c |
| |
| Try to keep all functions that handle DRM file_operations in drm_fops.c |
| so internal helpers can be marked static later. |
| |
| This makes the split between the 3 core files more obvious: |
| - drm_stub.c: DRM device allocation/destruction and management |
| - drm_fops.c: DRM file_operations (except for ioctl) |
| - drm_drv.c: Global DRM init + ioctl handling |
| Well, ioctl handling is still spread throughout hundreds of source files, |
| but at least the others are clearly defined this way. |
| |
| Signed-off-by: David Herrmann <dh.herrmann@gmail.com> |
| Signed-off-by: Dave Airlie <airlied@redhat.com> |
| (cherry picked from commit 1c8887dd01d97781471c9a876e3a4e804bb33f31) |
| Signed-off-by: Darren Hart <dvhart@linux.intel.com> |
| --- |
| drivers/gpu/drm/drm_drv.c | 70 ---------------------------------------------- |
| drivers/gpu/drm/drm_fops.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++ |
| 2 files changed, 70 insertions(+), 70 deletions(-) |
| |
| diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c |
| index 79c808ad4643..d08762962dc0 100644 |
| --- a/drivers/gpu/drm/drm_drv.c |
| +++ b/drivers/gpu/drm/drm_drv.c |
| @@ -170,76 +170,6 @@ static const struct drm_ioctl_desc drm_ioctls[] = { |
| |
| #define DRM_CORE_IOCTL_COUNT ARRAY_SIZE( drm_ioctls ) |
| |
| -/** |
| - * drm_legacy_dev_reinit |
| - * |
| - * Reinitializes a legacy/ums drm device in it's lastclose function. |
| - */ |
| -static void drm_legacy_dev_reinit(struct drm_device *dev) |
| -{ |
| - int i; |
| - |
| - if (drm_core_check_feature(dev, DRIVER_MODESET)) |
| - return; |
| - |
| - atomic_set(&dev->ioctl_count, 0); |
| - atomic_set(&dev->vma_count, 0); |
| - |
| - for (i = 0; i < ARRAY_SIZE(dev->counts); i++) |
| - atomic_set(&dev->counts[i], 0); |
| - |
| - dev->sigdata.lock = NULL; |
| - |
| - dev->context_flag = 0; |
| - dev->last_context = 0; |
| - dev->if_version = 0; |
| -} |
| - |
| -/** |
| - * Take down the DRM device. |
| - * |
| - * \param dev DRM device structure. |
| - * |
| - * Frees every resource in \p dev. |
| - * |
| - * \sa drm_device |
| - */ |
| -int drm_lastclose(struct drm_device * dev) |
| -{ |
| - struct drm_vma_entry *vma, *vma_temp; |
| - |
| - DRM_DEBUG("\n"); |
| - |
| - if (dev->driver->lastclose) |
| - dev->driver->lastclose(dev); |
| - DRM_DEBUG("driver lastclose completed\n"); |
| - |
| - if (dev->irq_enabled && !drm_core_check_feature(dev, DRIVER_MODESET)) |
| - drm_irq_uninstall(dev); |
| - |
| - mutex_lock(&dev->struct_mutex); |
| - |
| - drm_agp_clear(dev); |
| - |
| - drm_legacy_sg_cleanup(dev); |
| - |
| - /* Clear vma list (only built for debugging) */ |
| - list_for_each_entry_safe(vma, vma_temp, &dev->vmalist, head) { |
| - list_del(&vma->head); |
| - kfree(vma); |
| - } |
| - |
| - drm_legacy_dma_takedown(dev); |
| - |
| - dev->dev_mapping = NULL; |
| - mutex_unlock(&dev->struct_mutex); |
| - |
| - drm_legacy_dev_reinit(dev); |
| - |
| - DRM_DEBUG("lastclose completed\n"); |
| - return 0; |
| -} |
| - |
| /** File operations structure */ |
| static const struct file_operations drm_stub_fops = { |
| .owner = THIS_MODULE, |
| diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c |
| index 375dcfae0cf4..0bfbbe1506c8 100644 |
| --- a/drivers/gpu/drm/drm_fops.c |
| +++ b/drivers/gpu/drm/drm_fops.c |
| @@ -370,6 +370,76 @@ static void drm_events_release(struct drm_file *file_priv) |
| } |
| |
| /** |
| + * drm_legacy_dev_reinit |
| + * |
| + * Reinitializes a legacy/ums drm device in it's lastclose function. |
| + */ |
| +static void drm_legacy_dev_reinit(struct drm_device *dev) |
| +{ |
| + int i; |
| + |
| + if (drm_core_check_feature(dev, DRIVER_MODESET)) |
| + return; |
| + |
| + atomic_set(&dev->ioctl_count, 0); |
| + atomic_set(&dev->vma_count, 0); |
| + |
| + for (i = 0; i < ARRAY_SIZE(dev->counts); i++) |
| + atomic_set(&dev->counts[i], 0); |
| + |
| + dev->sigdata.lock = NULL; |
| + |
| + dev->context_flag = 0; |
| + dev->last_context = 0; |
| + dev->if_version = 0; |
| +} |
| + |
| +/** |
| + * Take down the DRM device. |
| + * |
| + * \param dev DRM device structure. |
| + * |
| + * Frees every resource in \p dev. |
| + * |
| + * \sa drm_device |
| + */ |
| +int drm_lastclose(struct drm_device * dev) |
| +{ |
| + struct drm_vma_entry *vma, *vma_temp; |
| + |
| + DRM_DEBUG("\n"); |
| + |
| + if (dev->driver->lastclose) |
| + dev->driver->lastclose(dev); |
| + DRM_DEBUG("driver lastclose completed\n"); |
| + |
| + if (dev->irq_enabled && !drm_core_check_feature(dev, DRIVER_MODESET)) |
| + drm_irq_uninstall(dev); |
| + |
| + mutex_lock(&dev->struct_mutex); |
| + |
| + drm_agp_clear(dev); |
| + |
| + drm_legacy_sg_cleanup(dev); |
| + |
| + /* Clear vma list (only built for debugging) */ |
| + list_for_each_entry_safe(vma, vma_temp, &dev->vmalist, head) { |
| + list_del(&vma->head); |
| + kfree(vma); |
| + } |
| + |
| + drm_legacy_dma_takedown(dev); |
| + |
| + dev->dev_mapping = NULL; |
| + mutex_unlock(&dev->struct_mutex); |
| + |
| + drm_legacy_dev_reinit(dev); |
| + |
| + DRM_DEBUG("lastclose completed\n"); |
| + return 0; |
| +} |
| + |
| +/** |
| * Release file. |
| * |
| * \param inode device inode |
| -- |
| 1.8.5.rc3 |
| |