[PATCH] drm: Fix undefined reference to drm_agp_clear() on non-AGP platforms

Laurent Pinchart laurent.pinchart+renesas at ideasonboard.com
Wed Aug 7 05:17:40 PDT 2013


The drm_agp_clear() function is only defined on platforms with AGP
support. Move the drm_core_has_AGP() check from drm_agp_clear() to the
caller to let the compiler optimize the drm_agp_clear() call away.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas at ideasonboard.com>
---
 drivers/gpu/drm/drm_agpsupport.c | 2 +-
 drivers/gpu/drm/drm_drv.c        | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

This fixes a link-time build error in drm-next. An alternative approach would
be to guard the drm_agp_clear() call in drm_drv.c with an #if __OS_HAS_AGP. I
can resubmit the patch to do so if preferred.

diff --git a/drivers/gpu/drm/drm_agpsupport.c b/drivers/gpu/drm/drm_agpsupport.c
index e301d65..084a674 100644
--- a/drivers/gpu/drm/drm_agpsupport.c
+++ b/drivers/gpu/drm/drm_agpsupport.c
@@ -439,7 +439,7 @@ void drm_agp_clear(struct drm_device *dev)
 {
 	struct drm_agp_mem *entry, *tempe;
 
-	if (!drm_core_has_AGP(dev) || !dev->agp)
+	if (!dev->agp)
 		return;
 	if (drm_core_check_feature(dev, DRIVER_MODESET))
 		return;
diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
index dddd799..1e2ad35 100644
--- a/drivers/gpu/drm/drm_drv.c
+++ b/drivers/gpu/drm/drm_drv.c
@@ -195,7 +195,8 @@ int drm_lastclose(struct drm_device * dev)
 
 	mutex_lock(&dev->struct_mutex);
 
-	drm_agp_clear(dev);
+	if (drm_core_has_AGP(dev))
+		drm_agp_clear(dev);
 
 	if (drm_core_check_feature(dev, DRIVER_SG) && dev->sg &&
 	    !drm_core_check_feature(dev, DRIVER_MODESET)) {
-- 
Regards,

Laurent Pinchart



More information about the dri-devel mailing list