[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