[yocto] [PATCH 07/17][KERNEL] drm-psb: remove BKL remnants

tom.zanussi at intel.com tom.zanussi at intel.com
Tue Mar 13 20:57:33 PDT 2012


From: Tom Zanussi <tom.zanussi at intel.com>

replace lock/unlock_kernel with the drm_global_mutex from 3.0.

Signed-off-by: Tom Zanussi <tom.zanussi at intel.com>
---
 drivers/gpu/drm-psb/drmP.h       |    3 ++-
 drivers/gpu/drm-psb/drm_drv.c    |    4 ++--
 drivers/gpu/drm-psb/drm_fops.c   |   10 ++++++----
 drivers/gpu/drm-psb/drm_ioc32.c  |    4 ++--
 drivers/gpu/drm-psb/i915_ioc32.c |    4 ++--
 5 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm-psb/drmP.h b/drivers/gpu/drm-psb/drmP.h
index 2449fe0..3cca5fe 100644
--- a/drivers/gpu/drm-psb/drmP.h
+++ b/drivers/gpu/drm-psb/drmP.h
@@ -51,7 +51,6 @@
 #include <linux/pci.h>
 #include <linux/version.h>
 #include <linux/sched.h>
-#include <linux/smp_lock.h>	/* For (un)lock_kernel */
 #include <linux/mm.h>
 #include <linux/pagemap.h>
 #include <linux/i2c.h>
@@ -953,6 +952,8 @@ extern long drm_compat_ioctl(struct file *filp,
 
 extern int drm_lastclose(struct drm_device *dev);
 
+extern struct mutex drm_global_mutex;
+
 				/* Device support (drm_fops.h) */
 extern int drm_open(struct inode *inode, struct file *filp);
 extern int drm_stub_open(struct inode *inode, struct file *filp);
diff --git a/drivers/gpu/drm-psb/drm_drv.c b/drivers/gpu/drm-psb/drm_drv.c
index 573427b..472859b 100644
--- a/drivers/gpu/drm-psb/drm_drv.c
+++ b/drivers/gpu/drm-psb/drm_drv.c
@@ -663,9 +663,9 @@ long drm_unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
 		   ((ioctl->flags & DRM_MASTER) && !file_priv->master)) {
 		retcode = -EACCES;
 	} else {
-		lock_kernel();
+		mutex_lock(&drm_global_mutex);
 		retcode = func(dev, kdata, file_priv);
-		unlock_kernel();
+		mutex_unlock(&drm_global_mutex);
 	}
 
 	if ((retcode == 0) && (cmd & IOC_OUT)) {
diff --git a/drivers/gpu/drm-psb/drm_fops.c b/drivers/gpu/drm-psb/drm_fops.c
index 51a7905..8132c54 100644
--- a/drivers/gpu/drm-psb/drm_fops.c
+++ b/drivers/gpu/drm-psb/drm_fops.c
@@ -38,6 +38,8 @@
 #include "drm_sarea.h"
 #include <linux/poll.h>
 
+DEFINE_MUTEX(drm_global_mutex);
+
 static int drm_open_helper(struct inode *inode, struct file *filp,
 			   struct drm_device * dev);
 
@@ -379,7 +381,7 @@ int drm_release(struct inode *inode, struct file *filp)
 	struct drm_device *dev = file_priv->head->dev;
 	int retcode = 0;
 
-	lock_kernel();
+	mutex_lock(&drm_global_mutex);
 
 	DRM_DEBUG("open_count = %d\n", dev->open_count);
 
@@ -500,16 +502,16 @@ int drm_release(struct inode *inode, struct file *filp)
 			DRM_ERROR("Device busy: %d %d\n",
 				  atomic_read(&dev->ioctl_count), dev->blocked);
 			spin_unlock(&dev->count_lock);
-			unlock_kernel();
+			mutex_unlock(&drm_global_mutex);
 			return -EBUSY;
 		}
 		spin_unlock(&dev->count_lock);
-		unlock_kernel();
+		mutex_unlock(&drm_global_mutex);
 		return drm_lastclose(dev);
 	}
 	spin_unlock(&dev->count_lock);
 
-	unlock_kernel();
+	mutex_unlock(&drm_global_mutex);
 
 	return retcode;
 }
diff --git a/drivers/gpu/drm-psb/drm_ioc32.c b/drivers/gpu/drm-psb/drm_ioc32.c
index 0188154..0de3c82 100644
--- a/drivers/gpu/drm-psb/drm_ioc32.c
+++ b/drivers/gpu/drm-psb/drm_ioc32.c
@@ -1061,12 +1061,12 @@ long drm_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
 
 	fn = drm_compat_ioctls[nr];
 
-	lock_kernel();		/* XXX for now */
+	mutex_lock(&drm_global_lock);
 	if (fn != NULL)
 		ret = (*fn)(filp, cmd, arg);
 	else
 		ret = drm_ioctl(filp->f_dentry->d_inode, filp, cmd, arg);
-	unlock_kernel();
+	mutex_unlock(&drm_global_lock);
 
 	return ret;
 }
diff --git a/drivers/gpu/drm-psb/i915_ioc32.c b/drivers/gpu/drm-psb/i915_ioc32.c
index 11dee03..5fb6892 100644
--- a/drivers/gpu/drm-psb/i915_ioc32.c
+++ b/drivers/gpu/drm-psb/i915_ioc32.c
@@ -212,12 +212,12 @@ long i915_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
 	if (nr < DRM_COMMAND_BASE + DRM_ARRAY_SIZE(i915_compat_ioctls))
 		fn = i915_compat_ioctls[nr - DRM_COMMAND_BASE];
 
-	lock_kernel();		/* XXX for now */
+	mutex_lock(&drm_global_lock);
 	if (fn != NULL)
 		ret = (*fn)(filp, cmd, arg);
 	else
 		ret = drm_ioctl(filp->f_dentry->d_inode, filp, cmd, arg);
-	unlock_kernel();
+	mutex_unlock(&drm_global_lock);
 
 	return ret;
 }
-- 
1.7.0.4




More information about the yocto mailing list