Commit d8c00a81 authored by Rob Clark's avatar Rob Clark

drm/msm: Remove unnecessary struct_mutex

The struct_mutex locking is a remnant from the days before per-obj locks,
and no longer needed.
Signed-off-by: default avatarRob Clark <robdclark@chromium.org>
Link: https://lore.kernel.org/r/20211109181117.591148-2-robdclark@gmail.comSigned-off-by: default avatarRob Clark <robdclark@chromium.org>
parent 4cef29b6
...@@ -134,8 +134,10 @@ DEFINE_SIMPLE_ATTRIBUTE(shrink_fops, ...@@ -134,8 +134,10 @@ DEFINE_SIMPLE_ATTRIBUTE(shrink_fops,
"0x%08llx\n"); "0x%08llx\n");
static int msm_gem_show(struct drm_device *dev, struct seq_file *m) static int msm_gem_show(struct seq_file *m, void *arg)
{ {
struct drm_info_node *node = (struct drm_info_node *) m->private;
struct drm_device *dev = node->minor->dev;
struct msm_drm_private *priv = dev->dev_private; struct msm_drm_private *priv = dev->dev_private;
int ret; int ret;
...@@ -150,8 +152,10 @@ static int msm_gem_show(struct drm_device *dev, struct seq_file *m) ...@@ -150,8 +152,10 @@ static int msm_gem_show(struct drm_device *dev, struct seq_file *m)
return 0; return 0;
} }
static int msm_mm_show(struct drm_device *dev, struct seq_file *m) static int msm_mm_show(struct seq_file *m, void *arg)
{ {
struct drm_info_node *node = (struct drm_info_node *) m->private;
struct drm_device *dev = node->minor->dev;
struct drm_printer p = drm_seq_file_printer(m); struct drm_printer p = drm_seq_file_printer(m);
drm_mm_print(&dev->vma_offset_manager->vm_addr_space_mm, &p); drm_mm_print(&dev->vma_offset_manager->vm_addr_space_mm, &p);
...@@ -159,8 +163,10 @@ static int msm_mm_show(struct drm_device *dev, struct seq_file *m) ...@@ -159,8 +163,10 @@ static int msm_mm_show(struct drm_device *dev, struct seq_file *m)
return 0; return 0;
} }
static int msm_fb_show(struct drm_device *dev, struct seq_file *m) static int msm_fb_show(struct seq_file *m, void *arg)
{ {
struct drm_info_node *node = (struct drm_info_node *) m->private;
struct drm_device *dev = node->minor->dev;
struct msm_drm_private *priv = dev->dev_private; struct msm_drm_private *priv = dev->dev_private;
struct drm_framebuffer *fb, *fbdev_fb = NULL; struct drm_framebuffer *fb, *fbdev_fb = NULL;
...@@ -183,29 +189,10 @@ static int msm_fb_show(struct drm_device *dev, struct seq_file *m) ...@@ -183,29 +189,10 @@ static int msm_fb_show(struct drm_device *dev, struct seq_file *m)
return 0; return 0;
} }
static int show_locked(struct seq_file *m, void *arg)
{
struct drm_info_node *node = (struct drm_info_node *) m->private;
struct drm_device *dev = node->minor->dev;
int (*show)(struct drm_device *dev, struct seq_file *m) =
node->info_ent->data;
int ret;
ret = mutex_lock_interruptible(&dev->struct_mutex);
if (ret)
return ret;
ret = show(dev, m);
mutex_unlock(&dev->struct_mutex);
return ret;
}
static struct drm_info_list msm_debugfs_list[] = { static struct drm_info_list msm_debugfs_list[] = {
{"gem", show_locked, 0, msm_gem_show}, {"gem", msm_gem_show},
{ "mm", show_locked, 0, msm_mm_show }, { "mm", msm_mm_show },
{ "fb", show_locked, 0, msm_fb_show }, { "fb", msm_fb_show },
}; };
static int late_init_minor(struct drm_minor *minor) static int late_init_minor(struct drm_minor *minor)
......
...@@ -81,8 +81,6 @@ static int msm_fbdev_create(struct drm_fb_helper *helper, ...@@ -81,8 +81,6 @@ static int msm_fbdev_create(struct drm_fb_helper *helper,
bo = msm_framebuffer_bo(fb, 0); bo = msm_framebuffer_bo(fb, 0);
mutex_lock(&dev->struct_mutex);
/* /*
* NOTE: if we can be guaranteed to be able to map buffer * NOTE: if we can be guaranteed to be able to map buffer
* in panic (ie. lock-safe, etc) we could avoid pinning the * in panic (ie. lock-safe, etc) we could avoid pinning the
...@@ -91,14 +89,14 @@ static int msm_fbdev_create(struct drm_fb_helper *helper, ...@@ -91,14 +89,14 @@ static int msm_fbdev_create(struct drm_fb_helper *helper,
ret = msm_gem_get_and_pin_iova(bo, priv->kms->aspace, &paddr); ret = msm_gem_get_and_pin_iova(bo, priv->kms->aspace, &paddr);
if (ret) { if (ret) {
DRM_DEV_ERROR(dev->dev, "failed to get buffer obj iova: %d\n", ret); DRM_DEV_ERROR(dev->dev, "failed to get buffer obj iova: %d\n", ret);
goto fail_unlock; goto fail;
} }
fbi = drm_fb_helper_alloc_fbi(helper); fbi = drm_fb_helper_alloc_fbi(helper);
if (IS_ERR(fbi)) { if (IS_ERR(fbi)) {
DRM_DEV_ERROR(dev->dev, "failed to allocate fb info\n"); DRM_DEV_ERROR(dev->dev, "failed to allocate fb info\n");
ret = PTR_ERR(fbi); ret = PTR_ERR(fbi);
goto fail_unlock; goto fail;
} }
DBG("fbi=%p, dev=%p", fbi, dev); DBG("fbi=%p, dev=%p", fbi, dev);
...@@ -115,7 +113,7 @@ static int msm_fbdev_create(struct drm_fb_helper *helper, ...@@ -115,7 +113,7 @@ static int msm_fbdev_create(struct drm_fb_helper *helper,
fbi->screen_base = msm_gem_get_vaddr(bo); fbi->screen_base = msm_gem_get_vaddr(bo);
if (IS_ERR(fbi->screen_base)) { if (IS_ERR(fbi->screen_base)) {
ret = PTR_ERR(fbi->screen_base); ret = PTR_ERR(fbi->screen_base);
goto fail_unlock; goto fail;
} }
fbi->screen_size = bo->size; fbi->screen_size = bo->size;
fbi->fix.smem_start = paddr; fbi->fix.smem_start = paddr;
...@@ -124,12 +122,9 @@ static int msm_fbdev_create(struct drm_fb_helper *helper, ...@@ -124,12 +122,9 @@ static int msm_fbdev_create(struct drm_fb_helper *helper,
DBG("par=%p, %dx%d", fbi->par, fbi->var.xres, fbi->var.yres); DBG("par=%p, %dx%d", fbi->par, fbi->var.xres, fbi->var.yres);
DBG("allocated %dx%d fb", fbdev->fb->width, fbdev->fb->height); DBG("allocated %dx%d fb", fbdev->fb->width, fbdev->fb->height);
mutex_unlock(&dev->struct_mutex);
return 0; return 0;
fail_unlock: fail:
mutex_unlock(&dev->struct_mutex);
drm_framebuffer_remove(fb); drm_framebuffer_remove(fb);
return ret; return ret;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment