| From c1de56f94579ce9aa93c273b1438ff20735c1a7d Mon Sep 17 00:00:00 2001 |
| From: Daniel Vetter <daniel.vetter@ffwll.ch> |
| Date: Thu, 8 Aug 2013 15:41:17 +0200 |
| Subject: drm: hide legacy sg cleanup better from common code |
| |
| I've decided that some clear markers for what's legacy dri1/non-gem |
| code is useful. I've opted to use the drm_legacy prefix and then hide |
| all the checks in that function for better readability in the common |
| code. |
| |
| Reviewed-by: Eric Anholt <eric@anholt.net> |
| Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> |
| Signed-off-by: Dave Airlie <airlied@redhat.com> |
| (cherry picked from commit 3d914e8357256e7e92d1b7dd2dda9cf94e39c4e8) |
| Signed-off-by: Darren Hart <dvhart@linux.intel.com> |
| --- |
| drivers/gpu/drm/drm_drv.c | 6 +----- |
| drivers/gpu/drm/drm_scatter.c | 10 +++++++++- |
| include/drm/drmP.h | 2 +- |
| 3 files changed, 11 insertions(+), 7 deletions(-) |
| |
| diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c |
| index 9f571b8ade38..45a2ea10b1c9 100644 |
| --- a/drivers/gpu/drm/drm_drv.c |
| +++ b/drivers/gpu/drm/drm_drv.c |
| @@ -196,11 +196,7 @@ int drm_lastclose(struct drm_device * dev) |
| |
| drm_agp_clear(dev); |
| |
| - if (drm_core_check_feature(dev, DRIVER_SG) && dev->sg && |
| - !drm_core_check_feature(dev, DRIVER_MODESET)) { |
| - drm_sg_cleanup(dev->sg); |
| - dev->sg = NULL; |
| - } |
| + drm_legacy_sg_cleanup(dev); |
| |
| /* Clear vma list (only built for debugging) */ |
| list_for_each_entry_safe(vma, vma_temp, &dev->vmalist, head) { |
| diff --git a/drivers/gpu/drm/drm_scatter.c b/drivers/gpu/drm/drm_scatter.c |
| index a4a076ff1757..dd8a6480065c 100644 |
| --- a/drivers/gpu/drm/drm_scatter.c |
| +++ b/drivers/gpu/drm/drm_scatter.c |
| @@ -46,7 +46,7 @@ static inline void *drm_vmalloc_dma(unsigned long size) |
| #endif |
| } |
| |
| -void drm_sg_cleanup(struct drm_sg_mem * entry) |
| +static void drm_sg_cleanup(struct drm_sg_mem * entry) |
| { |
| struct page *page; |
| int i; |
| @@ -64,6 +64,14 @@ void drm_sg_cleanup(struct drm_sg_mem * entry) |
| kfree(entry); |
| } |
| |
| +void drm_legacy_sg_cleanup(struct drm_device *dev) |
| +{ |
| + if (drm_core_check_feature(dev, DRIVER_SG) && dev->sg && |
| + !drm_core_check_feature(dev, DRIVER_MODESET)) { |
| + drm_sg_cleanup(dev->sg); |
| + dev->sg = NULL; |
| + } |
| +} |
| #ifdef _LP64 |
| # define ScatterHandle(x) (unsigned int)((x >> 32) + (x & ((1L << 32) - 1))) |
| #else |
| diff --git a/include/drm/drmP.h b/include/drm/drmP.h |
| index afa0b34c90ad..4b76bd8dfc32 100644 |
| --- a/include/drm/drmP.h |
| +++ b/include/drm/drmP.h |
| @@ -1540,7 +1540,7 @@ extern int drm_vma_info(struct seq_file *m, void *data); |
| #endif |
| |
| /* Scatter Gather Support (drm_scatter.h) */ |
| -extern void drm_sg_cleanup(struct drm_sg_mem * entry); |
| +extern void drm_legacy_sg_cleanup(struct drm_device *dev); |
| extern int drm_sg_alloc(struct drm_device *dev, void *data, |
| struct drm_file *file_priv); |
| extern int drm_sg_free(struct drm_device *dev, void *data, |
| -- |
| 1.8.5.rc3 |
| |