Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Daniel Vetter and committed by
Dave Airlie
3d914e83 45886af2

+11 -7
+1 -5
drivers/gpu/drm/drm_drv.c
··· 197 197 198 198 drm_agp_clear(dev); 199 199 200 - if (drm_core_check_feature(dev, DRIVER_SG) && dev->sg && 201 - !drm_core_check_feature(dev, DRIVER_MODESET)) { 202 - drm_sg_cleanup(dev->sg); 203 - dev->sg = NULL; 204 - } 200 + drm_legacy_sg_cleanup(dev); 205 201 206 202 /* Clear vma list (only built for debugging) */ 207 203 list_for_each_entry_safe(vma, vma_temp, &dev->vmalist, head) {
+9 -1
drivers/gpu/drm/drm_scatter.c
··· 46 46 #endif 47 47 } 48 48 49 - void drm_sg_cleanup(struct drm_sg_mem * entry) 49 + static void drm_sg_cleanup(struct drm_sg_mem * entry) 50 50 { 51 51 struct page *page; 52 52 int i; ··· 64 64 kfree(entry); 65 65 } 66 66 67 + void drm_legacy_sg_cleanup(struct drm_device *dev) 68 + { 69 + if (drm_core_check_feature(dev, DRIVER_SG) && dev->sg && 70 + !drm_core_check_feature(dev, DRIVER_MODESET)) { 71 + drm_sg_cleanup(dev->sg); 72 + dev->sg = NULL; 73 + } 74 + } 67 75 #ifdef _LP64 68 76 # define ScatterHandle(x) (unsigned int)((x >> 32) + (x & ((1L << 32) - 1))) 69 77 #else
+1 -1
include/drm/drmP.h
··· 1522 1522 #endif 1523 1523 1524 1524 /* Scatter Gather Support (drm_scatter.h) */ 1525 - extern void drm_sg_cleanup(struct drm_sg_mem * entry); 1525 + extern void drm_legacy_sg_cleanup(struct drm_device *dev); 1526 1526 extern int drm_sg_alloc(struct drm_device *dev, void *data, 1527 1527 struct drm_file *file_priv); 1528 1528 extern int drm_sg_free(struct drm_device *dev, void *data,