* [PATCH 00/13] Gem cleanup&fixes resend, once more
@ 2016-03-30 9:40 Daniel Vetter
2016-03-30 9:40 ` [PATCH 01/13] drm/nouveau: Use unlocked gem unreferencing Daniel Vetter
` (12 more replies)
0 siblings, 13 replies; 21+ messages in thread
From: Daniel Vetter @ 2016-03-30 9:40 UTC (permalink / raw)
To: DRI Development; +Cc: Daniel Vetter
It's less than last time around, but still some stragglers. And some fix bugs
reported in RH bugzilla even. Either way I'll throw them all into drm-misc if
there's no nacks within a week, assuming that this means an implicit ack.
Cheers, Daniel
Daniel Vetter (13):
drm/nouveau: Use unlocked gem unreferencing
drm/omapdrm: Use unlocked gem unreferencing
drm/qxl: Use unlocked gem unreferencing
drm/udl: Use unlocked gem unreferencing
drm/nouveau: Drop dev->struct_mutex from fbdev init
drm/exynos: Drop dev->struct_mutex from mmap offset function
drm/exynos: drop struct_mutex from exynos_gem_map_sgt_with_dma
drm/exynos: drop struct_mutex from exynos_drm_gem_get_ioctl
drm/exynos: drop struct_mutex from fbdev setup
drm/vgem: Simplify dum_map
drm/vgem: Move get_pages to gem_create
drm/vgem: Drop dev->struct_mutex
drm/vma_manage: Drop has_offset
drivers/gpu/drm/drm_gem.c | 17 ++++++++++++++
drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 22 +++++++-----------
drivers/gpu/drm/exynos/exynos_drm_gem.c | 19 +++-------------
drivers/gpu/drm/i915/i915_gem.c | 3 ---
drivers/gpu/drm/nouveau/nouveau_display.c | 2 +-
drivers/gpu/drm/nouveau/nouveau_fbcon.c | 5 -----
drivers/gpu/drm/omapdrm/omap_fbdev.c | 2 +-
drivers/gpu/drm/qxl/qxl_fb.c | 4 ++--
drivers/gpu/drm/udl/udl_fb.c | 2 +-
drivers/gpu/drm/udl/udl_gem.c | 2 +-
drivers/gpu/drm/vgem/vgem_drv.c | 37 +++++++++----------------------
include/drm/drm_vma_manager.h | 15 +------------
12 files changed, 46 insertions(+), 84 deletions(-)
--
2.8.0.rc3
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH 01/13] drm/nouveau: Use unlocked gem unreferencing
2016-03-30 9:40 [PATCH 00/13] Gem cleanup&fixes resend, once more Daniel Vetter
@ 2016-03-30 9:40 ` Daniel Vetter
2016-03-30 9:40 ` [PATCH 02/13] drm/omapdrm: " Daniel Vetter
` (11 subsequent siblings)
12 siblings, 0 replies; 21+ messages in thread
From: Daniel Vetter @ 2016-03-30 9:40 UTC (permalink / raw)
To: DRI Development; +Cc: Daniel Vetter, Ben Skeggs, Daniel Vetter
For drm_gem_object_unreference callers are required to hold
dev->struct_mutex, which these paths don't. Enforcing this requirement
has become a bit more strict with
commit ef4c6270bf2867e2f8032e9614d1a8cfc6c71663
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date: Thu Oct 15 09:36:25 2015 +0200
drm/gem: Check locking in drm_gem_object_unreference
Cc: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
drivers/gpu/drm/nouveau/nouveau_display.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c
index 7ce7fa5cb5e6..816342645f42 100644
--- a/drivers/gpu/drm/nouveau/nouveau_display.c
+++ b/drivers/gpu/drm/nouveau/nouveau_display.c
@@ -296,7 +296,7 @@ nouveau_user_framebuffer_create(struct drm_device *dev,
err:
kfree(nouveau_fb);
err_unref:
- drm_gem_object_unreference(gem);
+ drm_gem_object_unreference_unlocked(gem);
return ERR_PTR(ret);
}
--
2.8.0.rc3
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 02/13] drm/omapdrm: Use unlocked gem unreferencing
2016-03-30 9:40 [PATCH 00/13] Gem cleanup&fixes resend, once more Daniel Vetter
2016-03-30 9:40 ` [PATCH 01/13] drm/nouveau: Use unlocked gem unreferencing Daniel Vetter
@ 2016-03-30 9:40 ` Daniel Vetter
2016-04-18 16:15 ` Tomi Valkeinen
2016-04-20 13:52 ` Laurent Pinchart
2016-03-30 9:40 ` [PATCH 03/13] drm/qxl: " Daniel Vetter
` (10 subsequent siblings)
12 siblings, 2 replies; 21+ messages in thread
From: Daniel Vetter @ 2016-03-30 9:40 UTC (permalink / raw)
To: DRI Development
Cc: Daniel Vetter, Tomi Valkeinen, Laurent Pinchart, Daniel Vetter
For drm_gem_object_unreference callers are required to hold
dev->struct_mutex, which these paths don't. Enforcing this requirement
has become a bit more strict with
commit ef4c6270bf2867e2f8032e9614d1a8cfc6c71663
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date: Thu Oct 15 09:36:25 2015 +0200
drm/gem: Check locking in drm_gem_object_unreference
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
drivers/gpu/drm/omapdrm/omap_fbdev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/omapdrm/omap_fbdev.c b/drivers/gpu/drm/omapdrm/omap_fbdev.c
index 3cb16f0cf381..89da41ac64d2 100644
--- a/drivers/gpu/drm/omapdrm/omap_fbdev.c
+++ b/drivers/gpu/drm/omapdrm/omap_fbdev.c
@@ -153,7 +153,7 @@ static int omap_fbdev_create(struct drm_fb_helper *helper,
/* note: if fb creation failed, we can't rely on fb destroy
* to unref the bo:
*/
- drm_gem_object_unreference(fbdev->bo);
+ drm_gem_object_unreference_unlocked(fbdev->bo);
ret = PTR_ERR(fb);
goto fail;
}
--
2.8.0.rc3
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 03/13] drm/qxl: Use unlocked gem unreferencing
2016-03-30 9:40 [PATCH 00/13] Gem cleanup&fixes resend, once more Daniel Vetter
2016-03-30 9:40 ` [PATCH 01/13] drm/nouveau: Use unlocked gem unreferencing Daniel Vetter
2016-03-30 9:40 ` [PATCH 02/13] drm/omapdrm: " Daniel Vetter
@ 2016-03-30 9:40 ` Daniel Vetter
2016-03-30 9:40 ` [PATCH 04/13] drm/udl: " Daniel Vetter
` (9 subsequent siblings)
12 siblings, 0 replies; 21+ messages in thread
From: Daniel Vetter @ 2016-03-30 9:40 UTC (permalink / raw)
To: DRI Development; +Cc: Daniel Vetter, Daniel Vetter, Dave Airlie
For drm_gem_object_unreference callers are required to hold
dev->struct_mutex, which these paths don't. Enforcing this requirement
has become a bit more strict with
commit ef4c6270bf2867e2f8032e9614d1a8cfc6c71663
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date: Thu Oct 15 09:36:25 2015 +0200
drm/gem: Check locking in drm_gem_object_unreference
Cc: Dave Airlie <airlied@redhat.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
drivers/gpu/drm/qxl/qxl_fb.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/qxl/qxl_fb.c b/drivers/gpu/drm/qxl/qxl_fb.c
index 7136e521e6db..bb7ce07b788b 100644
--- a/drivers/gpu/drm/qxl/qxl_fb.c
+++ b/drivers/gpu/drm/qxl/qxl_fb.c
@@ -443,11 +443,11 @@ out_unref:
}
}
if (fb && ret) {
- drm_gem_object_unreference(gobj);
+ drm_gem_object_unreference_unlocked(gobj);
drm_framebuffer_cleanup(fb);
kfree(fb);
}
- drm_gem_object_unreference(gobj);
+ drm_gem_object_unreference_unlocked(gobj);
return ret;
}
--
2.8.0.rc3
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 04/13] drm/udl: Use unlocked gem unreferencing
2016-03-30 9:40 [PATCH 00/13] Gem cleanup&fixes resend, once more Daniel Vetter
` (2 preceding siblings ...)
2016-03-30 9:40 ` [PATCH 03/13] drm/qxl: " Daniel Vetter
@ 2016-03-30 9:40 ` Daniel Vetter
2016-03-30 10:55 ` poma
2016-03-30 9:40 ` [PATCH 05/13] drm/nouveau: Drop dev->struct_mutex from fbdev init Daniel Vetter
` (8 subsequent siblings)
12 siblings, 1 reply; 21+ messages in thread
From: Daniel Vetter @ 2016-03-30 9:40 UTC (permalink / raw)
To: DRI Development; +Cc: Daniel Vetter, Daniel Vetter, Dave Airlie
For drm_gem_object_unreference callers are required to hold
dev->struct_mutex, which these paths don't. Enforcing this requirement
has become a bit more strict with
commit ef4c6270bf2867e2f8032e9614d1a8cfc6c71663
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date: Thu Oct 15 09:36:25 2015 +0200
drm/gem: Check locking in drm_gem_object_unreference
Cc: Dave Airlie <airlied@redhat.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
drivers/gpu/drm/udl/udl_fb.c | 2 +-
drivers/gpu/drm/udl/udl_gem.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c
index 33239a2b264a..fd1eb9d03f0b 100644
--- a/drivers/gpu/drm/udl/udl_fb.c
+++ b/drivers/gpu/drm/udl/udl_fb.c
@@ -536,7 +536,7 @@ static int udlfb_create(struct drm_fb_helper *helper,
out_destroy_fbi:
drm_fb_helper_release_fbi(helper);
out_gfree:
- drm_gem_object_unreference(&ufbdev->ufb.obj->base);
+ drm_gem_object_unreference_unlocked(&ufbdev->ufb.obj->base);
out:
return ret;
}
diff --git a/drivers/gpu/drm/udl/udl_gem.c b/drivers/gpu/drm/udl/udl_gem.c
index 2a0a784ab6ee..d7528e0d8442 100644
--- a/drivers/gpu/drm/udl/udl_gem.c
+++ b/drivers/gpu/drm/udl/udl_gem.c
@@ -52,7 +52,7 @@ udl_gem_create(struct drm_file *file,
return ret;
}
- drm_gem_object_unreference(&obj->base);
+ drm_gem_object_unreference_unlocked(&obj->base);
*handle_p = handle;
return 0;
}
--
2.8.0.rc3
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 05/13] drm/nouveau: Drop dev->struct_mutex from fbdev init
2016-03-30 9:40 [PATCH 00/13] Gem cleanup&fixes resend, once more Daniel Vetter
` (3 preceding siblings ...)
2016-03-30 9:40 ` [PATCH 04/13] drm/udl: " Daniel Vetter
@ 2016-03-30 9:40 ` Daniel Vetter
2016-03-30 9:40 ` [PATCH 06/13] drm/exynos: Drop dev->struct_mutex from mmap offset function Daniel Vetter
` (7 subsequent siblings)
12 siblings, 0 replies; 21+ messages in thread
From: Daniel Vetter @ 2016-03-30 9:40 UTC (permalink / raw)
To: DRI Development; +Cc: Daniel Vetter, Ben Skeggs, Daniel Vetter
Doesn't protect anything at all.
With this patch nouveau is completely dev->struct_mutex free!
Cc: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
drivers/gpu/drm/nouveau/nouveau_fbcon.c | 5 -----
1 file changed, 5 deletions(-)
diff --git a/drivers/gpu/drm/nouveau/nouveau_fbcon.c b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
index 59f27e774acb..3bae706126bd 100644
--- a/drivers/gpu/drm/nouveau/nouveau_fbcon.c
+++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
@@ -386,8 +386,6 @@ nouveau_fbcon_create(struct drm_fb_helper *helper,
}
}
- mutex_lock(&dev->struct_mutex);
-
info = drm_fb_helper_alloc_fbi(helper);
if (IS_ERR(info)) {
ret = PTR_ERR(info);
@@ -426,8 +424,6 @@ nouveau_fbcon_create(struct drm_fb_helper *helper,
/* Use default scratch pixmap (info->pixmap.flags = FB_PIXMAP_SYSTEM) */
- mutex_unlock(&dev->struct_mutex);
-
if (chan)
nouveau_fbcon_accel_init(dev);
nouveau_fbcon_zfill(dev, fbcon);
@@ -441,7 +437,6 @@ nouveau_fbcon_create(struct drm_fb_helper *helper,
return 0;
out_unlock:
- mutex_unlock(&dev->struct_mutex);
if (chan)
nouveau_bo_vma_del(nvbo, &fbcon->nouveau_fb.vma);
nouveau_bo_unmap(nvbo);
--
2.8.0.rc3
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 06/13] drm/exynos: Drop dev->struct_mutex from mmap offset function
2016-03-30 9:40 [PATCH 00/13] Gem cleanup&fixes resend, once more Daniel Vetter
` (4 preceding siblings ...)
2016-03-30 9:40 ` [PATCH 05/13] drm/nouveau: Drop dev->struct_mutex from fbdev init Daniel Vetter
@ 2016-03-30 9:40 ` Daniel Vetter
2016-03-30 9:40 ` [PATCH 07/13] drm/exynos: drop struct_mutex from exynos_gem_map_sgt_with_dma Daniel Vetter
` (6 subsequent siblings)
12 siblings, 0 replies; 21+ messages in thread
From: Daniel Vetter @ 2016-03-30 9:40 UTC (permalink / raw)
To: DRI Development; +Cc: Daniel Vetter, Daniel Vetter
Simply forgotten about this when I was doing my general cleansing of
simple gem mmap offset functions. There's nothing but core functions
called here, and they all have their own protection already.
Aside: DRM_ERROR for userspace controlled input isn't great, but
that's for another patch.
v2: Use _unlocked unreference (Daniel Stone).
Cc: Daniel Stone <daniel@fooishbar.org>
Cc: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
drivers/gpu/drm/exynos/exynos_drm_gem.c | 9 ++-------
1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c
index 2914d62d0d80..3b7209335df0 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_gem.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c
@@ -458,8 +458,6 @@ int exynos_drm_gem_dumb_map_offset(struct drm_file *file_priv,
struct drm_gem_object *obj;
int ret = 0;
- mutex_lock(&dev->struct_mutex);
-
/*
* get offset of memory allocated for drm framebuffer.
* - this callback would be called by user application
@@ -469,16 +467,13 @@ int exynos_drm_gem_dumb_map_offset(struct drm_file *file_priv,
obj = drm_gem_object_lookup(dev, file_priv, handle);
if (!obj) {
DRM_ERROR("failed to lookup gem object.\n");
- ret = -EINVAL;
- goto unlock;
+ return -EINVAL;
}
*offset = drm_vma_node_offset_addr(&obj->vma_node);
DRM_DEBUG_KMS("offset = 0x%lx\n", (unsigned long)*offset);
- drm_gem_object_unreference(obj);
-unlock:
- mutex_unlock(&dev->struct_mutex);
+ drm_gem_object_unreference_unlocked(obj);
return ret;
}
--
2.8.0.rc3
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 07/13] drm/exynos: drop struct_mutex from exynos_gem_map_sgt_with_dma
2016-03-30 9:40 [PATCH 00/13] Gem cleanup&fixes resend, once more Daniel Vetter
` (5 preceding siblings ...)
2016-03-30 9:40 ` [PATCH 06/13] drm/exynos: Drop dev->struct_mutex from mmap offset function Daniel Vetter
@ 2016-03-30 9:40 ` Daniel Vetter
2016-03-30 10:23 ` Emil Velikov
2016-03-30 9:40 ` [PATCH 08/13] drm/exynos: drop struct_mutex from exynos_drm_gem_get_ioctl Daniel Vetter
` (5 subsequent siblings)
12 siblings, 1 reply; 21+ messages in thread
From: Daniel Vetter @ 2016-03-30 9:40 UTC (permalink / raw)
To: DRI Development; +Cc: Daniel Vetter, Daniel Vetter
The sg table isn't refcounted, there's no corresponding locking for
unmapping and drm_map_sg is ok with being called concurrently.
So drop the locking since it doesn't protect anything.
Cc: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
drivers/gpu/drm/exynos/exynos_drm_gem.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c
index 3b7209335df0..60b9975bb0b1 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_gem.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c
@@ -388,16 +388,12 @@ int exynos_gem_map_sgt_with_dma(struct drm_device *drm_dev,
{
int nents;
- mutex_lock(&drm_dev->struct_mutex);
-
nents = dma_map_sg(to_dma_dev(drm_dev), sgt->sgl, sgt->nents, dir);
if (!nents) {
DRM_ERROR("failed to map sgl with dma.\n");
- mutex_unlock(&drm_dev->struct_mutex);
return nents;
}
- mutex_unlock(&drm_dev->struct_mutex);
return 0;
}
--
2.8.0.rc3
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 08/13] drm/exynos: drop struct_mutex from exynos_drm_gem_get_ioctl
2016-03-30 9:40 [PATCH 00/13] Gem cleanup&fixes resend, once more Daniel Vetter
` (6 preceding siblings ...)
2016-03-30 9:40 ` [PATCH 07/13] drm/exynos: drop struct_mutex from exynos_gem_map_sgt_with_dma Daniel Vetter
@ 2016-03-30 9:40 ` Daniel Vetter
2016-03-30 9:40 ` [PATCH 09/13] drm/exynos: drop struct_mutex from fbdev setup Daniel Vetter
` (4 subsequent siblings)
12 siblings, 0 replies; 21+ messages in thread
From: Daniel Vetter @ 2016-03-30 9:40 UTC (permalink / raw)
To: DRI Development; +Cc: Daniel Vetter, Daniel Vetter
The only things this protects is reading ->flags and ->size, both of
which are invariant over the lifetime of an exynos gem bo. So no
locking needed at all (besides that, nothing protects the writers
anyway).
Aside: exynos_gem_obj->size is redundant with
exynos_gem_obj->base.size and probably should be removed.
v2: Use _unlocked unreference (Daniel Stone).
Cc: Daniel Stone <daniel@fooishbar.org>
Cc: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
drivers/gpu/drm/exynos/exynos_drm_gem.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c
index 60b9975bb0b1..6fb98f4c3544 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_gem.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c
@@ -362,12 +362,9 @@ int exynos_drm_gem_get_ioctl(struct drm_device *dev, void *data,
struct drm_exynos_gem_info *args = data;
struct drm_gem_object *obj;
- mutex_lock(&dev->struct_mutex);
-
obj = drm_gem_object_lookup(dev, file_priv, args->handle);
if (!obj) {
DRM_ERROR("failed to lookup gem object.\n");
- mutex_unlock(&dev->struct_mutex);
return -EINVAL;
}
@@ -376,8 +373,7 @@ int exynos_drm_gem_get_ioctl(struct drm_device *dev, void *data,
args->flags = exynos_gem->flags;
args->size = exynos_gem->size;
- drm_gem_object_unreference(obj);
- mutex_unlock(&dev->struct_mutex);
+ drm_gem_object_unreference_unlocked(obj);
return 0;
}
--
2.8.0.rc3
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 09/13] drm/exynos: drop struct_mutex from fbdev setup
2016-03-30 9:40 [PATCH 00/13] Gem cleanup&fixes resend, once more Daniel Vetter
` (7 preceding siblings ...)
2016-03-30 9:40 ` [PATCH 08/13] drm/exynos: drop struct_mutex from exynos_drm_gem_get_ioctl Daniel Vetter
@ 2016-03-30 9:40 ` Daniel Vetter
2016-03-30 9:40 ` [PATCH 10/13] drm/vgem: Simplify dum_map Daniel Vetter
` (3 subsequent siblings)
12 siblings, 0 replies; 21+ messages in thread
From: Daniel Vetter @ 2016-03-30 9:40 UTC (permalink / raw)
To: DRI Development; +Cc: Daniel Vetter, Daniel Vetter
Doesn't protect anything at all, and probably just here because a long
time ago dev->struct_mutex was required to allocate gem objects.
With this patch exynos is completely struct_mutex free!
Cc: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 22 ++++++++--------------
1 file changed, 8 insertions(+), 14 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
index 4ae860c44f1d..4656cd6e7083 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
@@ -138,8 +138,6 @@ static int exynos_drm_fbdev_create(struct drm_fb_helper *helper,
mode_cmd.pixel_format = drm_mode_legacy_fb_format(sizes->surface_bpp,
sizes->surface_depth);
- mutex_lock(&dev->struct_mutex);
-
size = mode_cmd.pitches[0] * mode_cmd.height;
exynos_gem = exynos_drm_gem_create(dev, EXYNOS_BO_CONTIG, size);
@@ -154,10 +152,8 @@ static int exynos_drm_fbdev_create(struct drm_fb_helper *helper,
size);
}
- if (IS_ERR(exynos_gem)) {
- ret = PTR_ERR(exynos_gem);
- goto out;
- }
+ if (IS_ERR(exynos_gem))
+ return PTR_ERR(exynos_gem);
exynos_fbdev->exynos_gem = exynos_gem;
@@ -173,7 +169,6 @@ static int exynos_drm_fbdev_create(struct drm_fb_helper *helper,
if (ret < 0)
goto err_destroy_framebuffer;
- mutex_unlock(&dev->struct_mutex);
return ret;
err_destroy_framebuffer:
@@ -181,13 +176,12 @@ err_destroy_framebuffer:
err_destroy_gem:
exynos_drm_gem_destroy(exynos_gem);
-/*
- * if failed, all resources allocated above would be released by
- * drm_mode_config_cleanup() when drm_load() had been called prior
- * to any specific driver such as fimd or hdmi driver.
- */
-out:
- mutex_unlock(&dev->struct_mutex);
+ /*
+ * if failed, all resources allocated above would be released by
+ * drm_mode_config_cleanup() when drm_load() had been called prior
+ * to any specific driver such as fimd or hdmi driver.
+ */
+
return ret;
}
--
2.8.0.rc3
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 10/13] drm/vgem: Simplify dum_map
2016-03-30 9:40 [PATCH 00/13] Gem cleanup&fixes resend, once more Daniel Vetter
` (8 preceding siblings ...)
2016-03-30 9:40 ` [PATCH 09/13] drm/exynos: drop struct_mutex from fbdev setup Daniel Vetter
@ 2016-03-30 9:40 ` Daniel Vetter
2016-03-30 10:29 ` Emil Velikov
2016-03-30 9:40 ` [PATCH 11/13] drm/vgem: Move get_pages to gem_create Daniel Vetter
` (2 subsequent siblings)
12 siblings, 1 reply; 21+ messages in thread
From: Daniel Vetter @ 2016-03-30 9:40 UTC (permalink / raw)
To: DRI Development; +Cc: Daniel Vetter, Daniel Vetter
The offset manager already checks for existing offsets internally,
while holding suitable locks. We can drop this check.
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
drivers/gpu/drm/vgem/vgem_drv.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
index c503a840fd88..f3ee1c41da1e 100644
--- a/drivers/gpu/drm/vgem/vgem_drv.c
+++ b/drivers/gpu/drm/vgem/vgem_drv.c
@@ -208,11 +208,9 @@ int vgem_gem_dumb_map(struct drm_file *file, struct drm_device *dev,
goto unlock;
}
- if (!drm_vma_node_has_offset(&obj->vma_node)) {
- ret = drm_gem_create_mmap_offset(obj);
- if (ret)
- goto unref;
- }
+ ret = drm_gem_create_mmap_offset(obj);
+ if (ret)
+ goto unref;
BUG_ON(!obj->filp);
--
2.8.0.rc3
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 11/13] drm/vgem: Move get_pages to gem_create
2016-03-30 9:40 [PATCH 00/13] Gem cleanup&fixes resend, once more Daniel Vetter
` (9 preceding siblings ...)
2016-03-30 9:40 ` [PATCH 10/13] drm/vgem: Simplify dum_map Daniel Vetter
@ 2016-03-30 9:40 ` Daniel Vetter
2016-03-30 9:40 ` [PATCH 12/13] drm/vgem: Drop dev->struct_mutex Daniel Vetter
2016-03-30 9:40 ` [PATCH 13/13] drm/vma_manage: Drop has_offset Daniel Vetter
12 siblings, 0 replies; 21+ messages in thread
From: Daniel Vetter @ 2016-03-30 9:40 UTC (permalink / raw)
To: DRI Development; +Cc: Daniel Vetter, Daniel Vetter
vgem doesn't have a shrinker or anything like that and drops backing
storage only at object_free time. There's no use in trying to be
clever and allocating backing storage delayed, it only causes trouble
by requiring locking.
Instead grab pages when we allocate the object right away.
v2: Fix compiling.
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
drivers/gpu/drm/vgem/vgem_drv.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
index f3ee1c41da1e..75f18987411a 100644
--- a/drivers/gpu/drm/vgem/vgem_drv.c
+++ b/drivers/gpu/drm/vgem/vgem_drv.c
@@ -154,6 +154,10 @@ static struct drm_gem_object *vgem_gem_create(struct drm_device *dev,
if (err)
goto out;
+ err = vgem_gem_get_pages(obj);
+ if (err)
+ goto out;
+
err = drm_gem_handle_create(file, gem_object, handle);
if (err)
goto handle_out;
@@ -216,16 +220,8 @@ int vgem_gem_dumb_map(struct drm_file *file, struct drm_device *dev,
obj->filp->private_data = obj;
- ret = vgem_gem_get_pages(to_vgem_bo(obj));
- if (ret)
- goto fail_get_pages;
-
*offset = drm_vma_node_offset_addr(&obj->vma_node);
- goto unref;
-
-fail_get_pages:
- drm_gem_free_mmap_offset(obj);
unref:
drm_gem_object_unreference(obj);
unlock:
--
2.8.0.rc3
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 12/13] drm/vgem: Drop dev->struct_mutex
2016-03-30 9:40 [PATCH 00/13] Gem cleanup&fixes resend, once more Daniel Vetter
` (10 preceding siblings ...)
2016-03-30 9:40 ` [PATCH 11/13] drm/vgem: Move get_pages to gem_create Daniel Vetter
@ 2016-03-30 9:40 ` Daniel Vetter
2016-03-30 9:40 ` [PATCH 13/13] drm/vma_manage: Drop has_offset Daniel Vetter
12 siblings, 0 replies; 21+ messages in thread
From: Daniel Vetter @ 2016-03-30 9:40 UTC (permalink / raw)
To: DRI Development; +Cc: Daniel Vetter, Daniel Vetter
With the previous two changes it doesn't protect anything any more.
v2: Use _unlocked unreference variant.
v3: Appease gcc noise.
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
drivers/gpu/drm/vgem/vgem_drv.c | 17 ++++-------------
1 file changed, 4 insertions(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
index 75f18987411a..ae4de36d1d83 100644
--- a/drivers/gpu/drm/vgem/vgem_drv.c
+++ b/drivers/gpu/drm/vgem/vgem_drv.c
@@ -89,7 +89,6 @@ int vgem_gem_get_pages(struct drm_vgem_gem_object *obj)
static int vgem_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
{
struct drm_vgem_gem_object *obj = vma->vm_private_data;
- struct drm_device *dev = obj->base.dev;
loff_t num_pages;
pgoff_t page_offset;
int ret;
@@ -103,12 +102,8 @@ static int vgem_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
if (page_offset > num_pages)
return VM_FAULT_SIGBUS;
- mutex_lock(&dev->struct_mutex);
-
ret = vm_insert_page(vma, (unsigned long)vmf->virtual_address,
obj->pages[page_offset]);
-
- mutex_unlock(&dev->struct_mutex);
switch (ret) {
case 0:
return VM_FAULT_NOPAGE;
@@ -205,12 +200,9 @@ int vgem_gem_dumb_map(struct drm_file *file, struct drm_device *dev,
int ret = 0;
struct drm_gem_object *obj;
- mutex_lock(&dev->struct_mutex);
obj = drm_gem_object_lookup(dev, file, handle);
- if (!obj) {
- ret = -ENOENT;
- goto unlock;
- }
+ if (!obj)
+ return -ENOENT;
ret = drm_gem_create_mmap_offset(obj);
if (ret)
@@ -223,9 +215,8 @@ int vgem_gem_dumb_map(struct drm_file *file, struct drm_device *dev,
*offset = drm_vma_node_offset_addr(&obj->vma_node);
unref:
- drm_gem_object_unreference(obj);
-unlock:
- mutex_unlock(&dev->struct_mutex);
+ drm_gem_object_unreference_unlocked(obj);
+
return ret;
}
--
2.8.0.rc3
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH 13/13] drm/vma_manage: Drop has_offset
2016-03-30 9:40 [PATCH 00/13] Gem cleanup&fixes resend, once more Daniel Vetter
` (11 preceding siblings ...)
2016-03-30 9:40 ` [PATCH 12/13] drm/vgem: Drop dev->struct_mutex Daniel Vetter
@ 2016-03-30 9:40 ` Daniel Vetter
12 siblings, 0 replies; 21+ messages in thread
From: Daniel Vetter @ 2016-03-30 9:40 UTC (permalink / raw)
To: DRI Development; +Cc: Daniel Vetter, Daniel Vetter
It's racy, creating mmap offsets is a slowpath, so better to remove it
to avoid drivers doing broken things.
The only user is i915, and it's ok there because everything (well
almost) is protected by dev->struct_mutex in i915-gem.
While at it add a note in the create_mmap_offset kerneldoc that
drivers must release it again. And then I also noticed that
drm_gem_object_release entirely lacks kerneldoc.
Cc: David Herrmann <dh.herrmann@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
drivers/gpu/drm/drm_gem.c | 17 +++++++++++++++++
drivers/gpu/drm/i915/i915_gem.c | 3 ---
include/drm/drm_vma_manager.h | 15 +--------------
3 files changed, 18 insertions(+), 17 deletions(-)
diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c
index 2e8c77e71e1f..74867edb8739 100644
--- a/drivers/gpu/drm/drm_gem.c
+++ b/drivers/gpu/drm/drm_gem.c
@@ -422,6 +422,10 @@ EXPORT_SYMBOL(drm_gem_handle_create);
* @obj: obj in question
*
* This routine frees fake offsets allocated by drm_gem_create_mmap_offset().
+ *
+ * Note that drm_gem_object_release() already calls this function, so drivers
+ * don't have to take care of releasing the mmap offset themselves when freeing
+ * the GEM object.
*/
void
drm_gem_free_mmap_offset(struct drm_gem_object *obj)
@@ -445,6 +449,9 @@ EXPORT_SYMBOL(drm_gem_free_mmap_offset);
* This routine allocates and attaches a fake offset for @obj, in cases where
* the virtual size differs from the physical size (ie. obj->size). Otherwise
* just use drm_gem_create_mmap_offset().
+ *
+ * This function is idempotent and handles an already allocated mmap offset
+ * transparently. Drivers do not need to check for this case.
*/
int
drm_gem_create_mmap_offset_size(struct drm_gem_object *obj, size_t size)
@@ -466,6 +473,9 @@ EXPORT_SYMBOL(drm_gem_create_mmap_offset_size);
* structures.
*
* This routine allocates and attaches a fake offset for @obj.
+ *
+ * Drivers can call drm_gem_free_mmap_offset() before freeing @obj to release
+ * the fake offset again.
*/
int drm_gem_create_mmap_offset(struct drm_gem_object *obj)
{
@@ -759,6 +769,13 @@ drm_gem_release(struct drm_device *dev, struct drm_file *file_private)
idr_destroy(&file_private->object_idr);
}
+/**
+ * drm_gem_object_release - release GEM buffer object resources
+ * @obj: GEM buffer object
+ *
+ * This releases any structures and resources used by @obj and is the invers of
+ * drm_gem_object_init().
+ */
void
drm_gem_object_release(struct drm_gem_object *obj)
{
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index c7a997aeb33f..3bc56166dd0d 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -2031,9 +2031,6 @@ static int i915_gem_object_create_mmap_offset(struct drm_i915_gem_object *obj)
struct drm_i915_private *dev_priv = obj->base.dev->dev_private;
int ret;
- if (drm_vma_node_has_offset(&obj->base.vma_node))
- return 0;
-
dev_priv->mm.shrinker_no_lock_stealing = true;
ret = drm_gem_create_mmap_offset(&obj->base);
diff --git a/include/drm/drm_vma_manager.h b/include/drm/drm_vma_manager.h
index 2f63dd5e05eb..06ea8e077ec2 100644
--- a/include/drm/drm_vma_manager.h
+++ b/include/drm/drm_vma_manager.h
@@ -176,19 +176,6 @@ static inline unsigned long drm_vma_node_size(struct drm_vma_offset_node *node)
}
/**
- * drm_vma_node_has_offset() - Check whether node is added to offset manager
- * @node: Node to be checked
- *
- * RETURNS:
- * true iff the node was previously allocated an offset and added to
- * an vma offset manager.
- */
-static inline bool drm_vma_node_has_offset(struct drm_vma_offset_node *node)
-{
- return drm_mm_node_allocated(&node->vm_node);
-}
-
-/**
* drm_vma_node_offset_addr() - Return sanitized offset for user-space mmaps
* @node: Linked offset node
*
@@ -220,7 +207,7 @@ static inline __u64 drm_vma_node_offset_addr(struct drm_vma_offset_node *node)
static inline void drm_vma_node_unmap(struct drm_vma_offset_node *node,
struct address_space *file_mapping)
{
- if (drm_vma_node_has_offset(node))
+ if (drm_mm_node_allocated(&node->vm_node))
unmap_mapping_range(file_mapping,
drm_vma_node_offset_addr(node),
drm_vma_node_size(node) << PAGE_SHIFT, 1);
--
2.8.0.rc3
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH 07/13] drm/exynos: drop struct_mutex from exynos_gem_map_sgt_with_dma
2016-03-30 9:40 ` [PATCH 07/13] drm/exynos: drop struct_mutex from exynos_gem_map_sgt_with_dma Daniel Vetter
@ 2016-03-30 10:23 ` Emil Velikov
0 siblings, 0 replies; 21+ messages in thread
From: Emil Velikov @ 2016-03-30 10:23 UTC (permalink / raw)
To: Daniel Vetter, Inki Dae; +Cc: Daniel Vetter, DRI Development
On 30 March 2016 at 10:40, Daniel Vetter <daniel.vetter@ffwll.ch> wrote:
> The sg table isn't refcounted, there's no corresponding locking for
> unmapping and drm_map_sg is ok with being called concurrently.
>
> So drop the locking since it doesn't protect anything.
>
> Cc: Inki Dae <inki.dae@samsung.com>
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> ---
> drivers/gpu/drm/exynos/exynos_drm_gem.c | 4 ----
> 1 file changed, 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c
> index 3b7209335df0..60b9975bb0b1 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_gem.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c
> @@ -388,16 +388,12 @@ int exynos_gem_map_sgt_with_dma(struct drm_device *drm_dev,
> {
> int nents;
>
> - mutex_lock(&drm_dev->struct_mutex);
> -
> nents = dma_map_sg(to_dma_dev(drm_dev), sgt->sgl, sgt->nents, dir);
> if (!nents) {
> DRM_ERROR("failed to map sgl with dma.\n");
> - mutex_unlock(&drm_dev->struct_mutex);
> return nents;
> }
>
> - mutex_unlock(&drm_dev->struct_mutex);
> return 0;
Either my coffee hasn't kicked in or we have a preexisting bug. Namely
- we are returning 0, regardless if we hit the above error ? If that's
intentional shouldn't there be a comment explaining why ?
-Emil
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH 10/13] drm/vgem: Simplify dum_map
2016-03-30 9:40 ` [PATCH 10/13] drm/vgem: Simplify dum_map Daniel Vetter
@ 2016-03-30 10:29 ` Emil Velikov
2016-03-30 10:31 ` Daniel Stone
0 siblings, 1 reply; 21+ messages in thread
From: Emil Velikov @ 2016-03-30 10:29 UTC (permalink / raw)
To: Daniel Vetter; +Cc: Daniel Vetter, DRI Development
On 30 March 2016 at 10:40, Daniel Vetter <daniel.vetter@ffwll.ch> wrote:
> The offset manager already checks for existing offsets internally,
> while holding suitable locks. We can drop this check.
>
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
With s/dum_map/dump_map/ in the title this is
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
-Emil
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH 10/13] drm/vgem: Simplify dum_map
2016-03-30 10:29 ` Emil Velikov
@ 2016-03-30 10:31 ` Daniel Stone
0 siblings, 0 replies; 21+ messages in thread
From: Daniel Stone @ 2016-03-30 10:31 UTC (permalink / raw)
To: Emil Velikov; +Cc: Daniel Vetter, DRI Development, Daniel Vetter
On 30 March 2016 at 11:29, Emil Velikov <emil.l.velikov@gmail.com> wrote:
> On 30 March 2016 at 10:40, Daniel Vetter <daniel.vetter@ffwll.ch> wrote:
>> The offset manager already checks for existing offsets internally,
>> while holding suitable locks. We can drop this check.
>>
>> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> With s/dum_map/dump_map/ in the title this is
Or dumb_map. :)
Cheers,
Daniel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH 04/13] drm/udl: Use unlocked gem unreferencing
2016-03-30 9:40 ` [PATCH 04/13] drm/udl: " Daniel Vetter
@ 2016-03-30 10:55 ` poma
0 siblings, 0 replies; 21+ messages in thread
From: poma @ 2016-03-30 10:55 UTC (permalink / raw)
To: Daniel Vetter, DRI Development; +Cc: Daniel Vetter, Dave Airlie
On 30.03.2016 11:40, Daniel Vetter wrote:
> For drm_gem_object_unreference callers are required to hold
> dev->struct_mutex, which these paths don't. Enforcing this requirement
> has become a bit more strict with
>
> commit ef4c6270bf2867e2f8032e9614d1a8cfc6c71663
> Author: Daniel Vetter <daniel.vetter@ffwll.ch>
> Date: Thu Oct 15 09:36:25 2015 +0200
>
> drm/gem: Check locking in drm_gem_object_unreference
>
> Cc: Dave Airlie <airlied@redhat.com>
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> ---
> drivers/gpu/drm/udl/udl_fb.c | 2 +-
> drivers/gpu/drm/udl/udl_gem.c | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c
> index 33239a2b264a..fd1eb9d03f0b 100644
> --- a/drivers/gpu/drm/udl/udl_fb.c
> +++ b/drivers/gpu/drm/udl/udl_fb.c
> @@ -536,7 +536,7 @@ static int udlfb_create(struct drm_fb_helper *helper,
> out_destroy_fbi:
> drm_fb_helper_release_fbi(helper);
> out_gfree:
> - drm_gem_object_unreference(&ufbdev->ufb.obj->base);
> + drm_gem_object_unreference_unlocked(&ufbdev->ufb.obj->base);
> out:
> return ret;
> }
> diff --git a/drivers/gpu/drm/udl/udl_gem.c b/drivers/gpu/drm/udl/udl_gem.c
> index 2a0a784ab6ee..d7528e0d8442 100644
> --- a/drivers/gpu/drm/udl/udl_gem.c
> +++ b/drivers/gpu/drm/udl/udl_gem.c
> @@ -52,7 +52,7 @@ udl_gem_create(struct drm_file *file,
> return ret;
> }
>
> - drm_gem_object_unreference(&obj->base);
> + drm_gem_object_unreference_unlocked(&obj->base);
> *handle_p = handle;
> return 0;
> }
>
Reviewed-by: poma <pomidorabelisima@gmail.com>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH 02/13] drm/omapdrm: Use unlocked gem unreferencing
2016-03-30 9:40 ` [PATCH 02/13] drm/omapdrm: " Daniel Vetter
@ 2016-04-18 16:15 ` Tomi Valkeinen
2016-04-20 10:55 ` Daniel Vetter
2016-04-20 13:52 ` Laurent Pinchart
1 sibling, 1 reply; 21+ messages in thread
From: Tomi Valkeinen @ 2016-04-18 16:15 UTC (permalink / raw)
To: Daniel Vetter, DRI Development; +Cc: Daniel Vetter, Laurent Pinchart
[-- Attachment #1.1.1: Type: text/plain, Size: 1400 bytes --]
On 30/03/16 12:40, Daniel Vetter wrote:
> For drm_gem_object_unreference callers are required to hold
> dev->struct_mutex, which these paths don't. Enforcing this requirement
> has become a bit more strict with
>
> commit ef4c6270bf2867e2f8032e9614d1a8cfc6c71663
> Author: Daniel Vetter <daniel.vetter@ffwll.ch>
> Date: Thu Oct 15 09:36:25 2015 +0200
>
> drm/gem: Check locking in drm_gem_object_unreference
>
> Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> ---
> drivers/gpu/drm/omapdrm/omap_fbdev.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/omapdrm/omap_fbdev.c b/drivers/gpu/drm/omapdrm/omap_fbdev.c
> index 3cb16f0cf381..89da41ac64d2 100644
> --- a/drivers/gpu/drm/omapdrm/omap_fbdev.c
> +++ b/drivers/gpu/drm/omapdrm/omap_fbdev.c
> @@ -153,7 +153,7 @@ static int omap_fbdev_create(struct drm_fb_helper *helper,
> /* note: if fb creation failed, we can't rely on fb destroy
> * to unref the bo:
> */
> - drm_gem_object_unreference(fbdev->bo);
> + drm_gem_object_unreference_unlocked(fbdev->bo);
> ret = PTR_ERR(fb);
> goto fail;
> }
>
If this is already queued somewhere:
Acked-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
If not, I can pick this up.
Tomi
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
[-- Attachment #2: Type: text/plain, Size: 160 bytes --]
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH 02/13] drm/omapdrm: Use unlocked gem unreferencing
2016-04-18 16:15 ` Tomi Valkeinen
@ 2016-04-20 10:55 ` Daniel Vetter
0 siblings, 0 replies; 21+ messages in thread
From: Daniel Vetter @ 2016-04-20 10:55 UTC (permalink / raw)
To: Tomi Valkeinen
Cc: Daniel Vetter, Laurent Pinchart, DRI Development, Daniel Vetter
On Mon, Apr 18, 2016 at 07:15:04PM +0300, Tomi Valkeinen wrote:
> On 30/03/16 12:40, Daniel Vetter wrote:
> > For drm_gem_object_unreference callers are required to hold
> > dev->struct_mutex, which these paths don't. Enforcing this requirement
> > has become a bit more strict with
> >
> > commit ef4c6270bf2867e2f8032e9614d1a8cfc6c71663
> > Author: Daniel Vetter <daniel.vetter@ffwll.ch>
> > Date: Thu Oct 15 09:36:25 2015 +0200
> >
> > drm/gem: Check locking in drm_gem_object_unreference
> >
> > Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
> > Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> > ---
> > drivers/gpu/drm/omapdrm/omap_fbdev.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/omapdrm/omap_fbdev.c b/drivers/gpu/drm/omapdrm/omap_fbdev.c
> > index 3cb16f0cf381..89da41ac64d2 100644
> > --- a/drivers/gpu/drm/omapdrm/omap_fbdev.c
> > +++ b/drivers/gpu/drm/omapdrm/omap_fbdev.c
> > @@ -153,7 +153,7 @@ static int omap_fbdev_create(struct drm_fb_helper *helper,
> > /* note: if fb creation failed, we can't rely on fb destroy
> > * to unref the bo:
> > */
> > - drm_gem_object_unreference(fbdev->bo);
> > + drm_gem_object_unreference_unlocked(fbdev->bo);
> > ret = PTR_ERR(fb);
> > goto fail;
> > }
> >
>
> If this is already queued somewhere:
>
> Acked-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
>
> If not, I can pick this up.
I've piled all the remaining ones into a branch and will send a pull
request to Dave later this week, with this one included.
Thanks, Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH 02/13] drm/omapdrm: Use unlocked gem unreferencing
2016-03-30 9:40 ` [PATCH 02/13] drm/omapdrm: " Daniel Vetter
2016-04-18 16:15 ` Tomi Valkeinen
@ 2016-04-20 13:52 ` Laurent Pinchart
1 sibling, 0 replies; 21+ messages in thread
From: Laurent Pinchart @ 2016-04-20 13:52 UTC (permalink / raw)
To: Daniel Vetter; +Cc: Daniel Vetter, Tomi Valkeinen, DRI Development
Hi Daniel,
Thank you for the patch.
On Wednesday 30 Mar 2016 11:40:41 Daniel Vetter wrote:
> For drm_gem_object_unreference callers are required to hold
> dev->struct_mutex, which these paths don't. Enforcing this requirement
> has become a bit more strict with
>
> commit ef4c6270bf2867e2f8032e9614d1a8cfc6c71663
> Author: Daniel Vetter <daniel.vetter@ffwll.ch>
> Date: Thu Oct 15 09:36:25 2015 +0200
>
> drm/gem: Check locking in drm_gem_object_unreference
>
> Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---
> drivers/gpu/drm/omapdrm/omap_fbdev.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/omapdrm/omap_fbdev.c
> b/drivers/gpu/drm/omapdrm/omap_fbdev.c index 3cb16f0cf381..89da41ac64d2
> 100644
> --- a/drivers/gpu/drm/omapdrm/omap_fbdev.c
> +++ b/drivers/gpu/drm/omapdrm/omap_fbdev.c
> @@ -153,7 +153,7 @@ static int omap_fbdev_create(struct drm_fb_helper
> *helper, /* note: if fb creation failed, we can't rely on fb destroy
> * to unref the bo:
> */
> - drm_gem_object_unreference(fbdev->bo);
> + drm_gem_object_unreference_unlocked(fbdev->bo);
> ret = PTR_ERR(fb);
> goto fail;
> }
--
Regards,
Laurent Pinchart
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 21+ messages in thread
end of thread, other threads:[~2016-04-20 13:51 UTC | newest]
Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-03-30 9:40 [PATCH 00/13] Gem cleanup&fixes resend, once more Daniel Vetter
2016-03-30 9:40 ` [PATCH 01/13] drm/nouveau: Use unlocked gem unreferencing Daniel Vetter
2016-03-30 9:40 ` [PATCH 02/13] drm/omapdrm: " Daniel Vetter
2016-04-18 16:15 ` Tomi Valkeinen
2016-04-20 10:55 ` Daniel Vetter
2016-04-20 13:52 ` Laurent Pinchart
2016-03-30 9:40 ` [PATCH 03/13] drm/qxl: " Daniel Vetter
2016-03-30 9:40 ` [PATCH 04/13] drm/udl: " Daniel Vetter
2016-03-30 10:55 ` poma
2016-03-30 9:40 ` [PATCH 05/13] drm/nouveau: Drop dev->struct_mutex from fbdev init Daniel Vetter
2016-03-30 9:40 ` [PATCH 06/13] drm/exynos: Drop dev->struct_mutex from mmap offset function Daniel Vetter
2016-03-30 9:40 ` [PATCH 07/13] drm/exynos: drop struct_mutex from exynos_gem_map_sgt_with_dma Daniel Vetter
2016-03-30 10:23 ` Emil Velikov
2016-03-30 9:40 ` [PATCH 08/13] drm/exynos: drop struct_mutex from exynos_drm_gem_get_ioctl Daniel Vetter
2016-03-30 9:40 ` [PATCH 09/13] drm/exynos: drop struct_mutex from fbdev setup Daniel Vetter
2016-03-30 9:40 ` [PATCH 10/13] drm/vgem: Simplify dum_map Daniel Vetter
2016-03-30 10:29 ` Emil Velikov
2016-03-30 10:31 ` Daniel Stone
2016-03-30 9:40 ` [PATCH 11/13] drm/vgem: Move get_pages to gem_create Daniel Vetter
2016-03-30 9:40 ` [PATCH 12/13] drm/vgem: Drop dev->struct_mutex Daniel Vetter
2016-03-30 9:40 ` [PATCH 13/13] drm/vma_manage: Drop has_offset Daniel Vetter
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.