From: Tom Zanussi <[email protected]>

replace lock/unlock_kernel with the drm_global_mutex from 3.0.

Signed-off-by: Tom Zanussi <[email protected]>
---
 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

_______________________________________________
yocto mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/yocto

Reply via email to