All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chris Wilson <chris@chris-wilson.co.uk>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>,
	Intel Graphics Development <intel-gfx@lists.freedesktop.org>,
	DRI Development <dri-devel@lists.freedesktop.org>,
	Daniel Vetter <daniel.vetter@intel.com>
Subject: Re: [PATCH] drm/gem: support BO freeing without dev->struct_mutex
Date: Wed, 27 Apr 2016 13:19:31 +0100	[thread overview]
Message-ID: <20160427121931.GB27856@nuc-i3427.alporthouse.com> (raw)
In-Reply-To: <20160427121246.GD2558@phenom.ffwll.local>

On Wed, Apr 27, 2016 at 02:12:46PM +0200, Daniel Vetter wrote:
> On Wed, Apr 27, 2016 at 12:58:51PM +0100, Chris Wilson wrote:
> > On Wed, Apr 27, 2016 at 01:50:00PM +0200, Daniel Vetter wrote:
> > > Finally all the core gem and a lot of drivers are entirely free of
> > > dev->struct_mutex depencies, and we can start to have an entirely
> > > lockless unref path.
> > > 
> > > To make sure that no one who touches the core code accidentally breaks
> > > existing drivers which still require dev->struct_mutex I've made the
> > > might_lock check unconditional.
> > > 
> > > While at it de-inline the ref/unref functions, they've become a bit
> > > too big.
> > > 
> > > v2: Make it not leak like a sieve.
> > > 
> > > v3: Review from Lucas:
> > > - drop != NULL in pointer checks.
> > > - fixup copypasted kerneldoc to actually match the functions.
> > > 
> > > Cc: Chris Wilson <chris@chris-wilson.co.uk>
> > > Cc: Alex Deucher <alexdeucher@gmail.com>
> > > Cc: Lucas Stach <l.stach@pengutronix.de>
> > > Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
> > > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> > > ---
> > >  drivers/gpu/drm/drm_gem.c | 64 ++++++++++++++++++++++++++++++++++++++---------
> > >  include/drm/drmP.h        | 15 ++++++++---
> > >  include/drm/drm_gem.h     | 45 ++-------------------------------
> > >  3 files changed, 66 insertions(+), 58 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c
> > > index 25dac31eef37..a4684a306c48 100644
> > > --- a/drivers/gpu/drm/drm_gem.c
> > > +++ b/drivers/gpu/drm/drm_gem.c
> > > @@ -788,16 +788,7 @@ drm_gem_object_release(struct drm_gem_object *obj)
> > >  }
> > >  EXPORT_SYMBOL(drm_gem_object_release);
> > >  
> > > -/**
> > > - * drm_gem_object_free - free a GEM object
> > > - * @kref: kref of the object to free
> > > - *
> > > - * Called after the last reference to the object has been lost.
> > > - * Must be called holding struct_ mutex
> > > - *
> > > - * Frees the object
> > > - */
> > > -void
> > > +static void
> > >  drm_gem_object_free(struct kref *kref)
> > >  {
> > >  	struct drm_gem_object *obj =
> > > @@ -806,10 +797,59 @@ drm_gem_object_free(struct kref *kref)
> > >  
> > >  	WARN_ON(!mutex_is_locked(&dev->struct_mutex));
> > >  
> > > -	if (dev->driver->gem_free_object != NULL)
> > > +	if (dev->driver->gem_free_object_unlocked)
> > > +		dev->driver->gem_free_object_unlocked(obj);
> > > +	else if (dev->driver->gem_free_object)
> > >  		dev->driver->gem_free_object(obj);
> > >  }
> > > -EXPORT_SYMBOL(drm_gem_object_free);
> > 
> > With my plan, I want to keep drm_gem_object_free exported.
> > The plan being a __drm_gem_object_free_lockless fastpath.
> 
> Yeah, but I think we can reexport again in the patch that adds
> __drm_gem_object_free_lockless. Just not much personally a friend of
> sprawling EXPORT_SYMBOL when not needed. But I can drop that part too if
> you feel strongly.

The alternative is to add the function now and then I can just drop the
support into my tree and start testing :)
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2016-04-27 12:19 UTC|newest]

Thread overview: 100+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-26 17:29 [PATCH 00/35] Moar struct_mutex nuking Daniel Vetter
2016-04-26 17:29 ` [PATCH 01/35] drm: Give drm_agp_clear drm_legacy_ prefix Daniel Vetter
2016-04-26 21:09   ` Chris Wilson
2016-04-27  6:41     ` Daniel Vetter
2016-04-26 17:29 ` [PATCH 02/35] drm: Put legacy lastclose work into drm_legacy_dev_reinit Daniel Vetter
2016-04-26 21:31   ` Alex Deucher
2016-04-26 17:29 ` [PATCH 03/35] drm: Move drm_getmap into drm_bufs.c and give it a legacy prefix Daniel Vetter
2016-04-26 21:19   ` Chris Wilson
2016-04-26 21:32   ` Alex Deucher
2016-04-26 17:29 ` [PATCH 04/35] drm: Forbid legacy MAP functions for DRIVER_MODESET Daniel Vetter
2016-04-26 21:23   ` Chris Wilson
2016-04-26 21:35   ` Alex Deucher
2016-04-27  6:46     ` Daniel Vetter
2016-04-27  6:56       ` Daniel Vetter
2016-04-27  7:12         ` Dave Airlie
2016-04-27  7:55           ` Daniel Vetter
2016-04-27  7:21   ` [PATCH] drm: sti: remove useless call to dev->struct_mutex Daniel Vetter
2016-04-27  7:58     ` Daniel Vetter
2016-04-26 17:29 ` [PATCH 05/35] drm: Push struct_mutex into ->master_destroy Daniel Vetter
2016-04-26 20:54   ` Chris Wilson
2016-04-26 21:36   ` Alex Deucher
2016-04-26 17:29 ` [PATCH 06/35] drm: Hide master MAP cleanup in drm_bufs.c Daniel Vetter
2016-04-26 21:17   ` Chris Wilson
2016-04-26 21:41   ` Alex Deucher
2016-04-27  7:20   ` [PATCH] " Daniel Vetter
2016-04-27  8:15     ` Daniel Vetter
2016-04-26 17:29 ` [PATCH 07/35] drm: Make drm_vm_open/close_locked private to drm_vm.c Daniel Vetter
2016-04-26 21:42   ` Alex Deucher
2016-04-26 17:29 ` [PATCH 08/35] drm: Protect dev->filelist with its own mutex Daniel Vetter
2016-04-26 20:52   ` Chris Wilson
2016-04-26 21:45     ` [Intel-gfx] " Alex Deucher
2016-04-27  7:06       ` Daniel Vetter
2016-04-27  7:08         ` Daniel Vetter
2016-04-27  7:14           ` Deucher, Alexander
2016-04-27  7:17         ` [Intel-gfx] " Chris Wilson
2016-04-27  8:01           ` Daniel Vetter
2016-04-27  8:04             ` [Intel-gfx] " Chris Wilson
2016-04-27  8:17   ` Daniel Vetter
2016-04-26 17:29 ` [PATCH 09/35] drm/gem: support BO freeing without dev->struct_mutex Daniel Vetter
2016-04-26 19:47   ` Chris Wilson
2016-04-26 20:10     ` Daniel Vetter
2016-04-26 20:34       ` Chris Wilson
2016-04-26 21:52   ` Alex Deucher
2016-04-27  8:18     ` Daniel Vetter
2016-04-27  9:31   ` Lucas Stach
2016-04-27 11:21     ` Daniel Vetter
2016-04-27 11:50   ` [PATCH] " Daniel Vetter
2016-04-27 11:58     ` Chris Wilson
2016-04-27 12:12       ` Daniel Vetter
2016-04-27 12:19         ` Chris Wilson [this message]
2016-04-29  9:31     ` Daniel Vetter
2016-05-02  8:40       ` Daniel Vetter
2016-05-03 15:59         ` Alex Deucher
2016-05-04 10:26           ` Daniel Vetter
2016-04-29 11:18     ` ✗ Fi.CI.BAT: failure for " Patchwork
2016-04-29 11:39       ` Chris Wilson
2016-05-02  8:44     ` Patchwork
2016-05-02  8:48     ` Patchwork
2016-04-26 17:29 ` [PATCH 10/35] drm/amdgpu: Use lockless gem BO free callback Daniel Vetter
2016-04-26 17:29 ` [PATCH 11/35] drm/armada: " Daniel Vetter
2016-04-28 13:27   ` Russell King - ARM Linux
2016-04-26 17:29 ` [PATCH 12/35] drm/ast: " Daniel Vetter
2016-04-26 17:29 ` [PATCH 13/35] drm/atmel: " Daniel Vetter
2016-04-26 17:29 ` [PATCH 14/35] drm/bochs: " Daniel Vetter
2016-04-26 17:29 ` [PATCH 15/35] drm/cirrus: " Daniel Vetter
2016-04-26 17:29 ` [PATCH 16/35] drm/etnaviv: " Daniel Vetter
2016-04-27  9:32   ` Lucas Stach
2016-04-28 13:28   ` Russell King - ARM Linux
2016-04-26 17:29 ` [PATCH 17/35] drm/exynos: " Daniel Vetter
2016-05-10  6:52   ` Inki Dae
2016-04-26 17:29 ` [PATCH 18/35] drm/fls-dcu: " Daniel Vetter
2016-04-26 17:29 ` [PATCH 19/35] drm/imx: " Daniel Vetter
2016-04-27 10:29   ` Philipp Zabel
2016-04-27 11:21     ` Daniel Vetter
2016-04-27 12:01       ` Philipp Zabel
2016-05-04 10:28         ` Daniel Vetter
2016-05-04 10:53           ` Philipp Zabel
2016-04-26 17:29 ` [PATCH 20/35] drm/mga200g: " Daniel Vetter
2016-04-26 17:29 ` [PATCH 21/35] drm/nouveau: " Daniel Vetter
2016-04-26 17:29 ` [PATCH 22/35] drm/qxl: " Daniel Vetter
2016-04-26 17:29 ` [PATCH 23/35] drm/radeon: " Daniel Vetter
2016-04-26 17:29 ` [PATCH 24/35] drm/rcar-du: " Daniel Vetter
2016-04-26 17:29 ` [PATCH 25/35] drm/rockchip: " Daniel Vetter
2016-04-26 17:29 ` [PATCH 26/35] drm/shmob: " Daniel Vetter
     [not found] ` <1461691808-12414-1-git-send-email-daniel.vetter-/w4YWyX8dFk@public.gmane.org>
2016-04-26 17:30   ` [PATCH 27/35] drm/tegra: " Daniel Vetter
2016-05-10 13:33     ` Thierry Reding
     [not found]       ` <20160510133300.GA30323-EkSeR96xj6Pcmrwk2tT4+A@public.gmane.org>
2016-05-11  7:35         ` Daniel Vetter
2016-04-26 17:30 ` [PATCH 28/35] drm/tilcdc: " Daniel Vetter
2016-04-26 17:30 ` [PATCH 29/35] drm/vc4: Use drm_gem_object_unreference_unlocked Daniel Vetter
2016-04-26 17:30 ` [PATCH 30/35] drm/vc4: Use lockless gem BO free callback Daniel Vetter
2016-04-26 17:30 ` [PATCH 31/35] drm/vgem: " Daniel Vetter
2016-04-26 17:30 ` [PATCH 32/35] drm/virtio: " Daniel Vetter
2016-04-26 17:30 ` [PATCH 33/35] drm: sti: remove useless call to dev->struct_mutex Daniel Vetter
2016-04-26 17:30 ` [PATCH 34/35] drm/virtio: Use lockless gem BO free callback Daniel Vetter
2016-04-26 17:30 ` [PATCH 35/35] drm/rockchip: Use cma gem vm ops Daniel Vetter
2016-04-27 11:38   ` [PATCH 1/3] " Daniel Vetter
2016-04-27 11:38     ` [PATCH 2/3] drm/exynos: Nuke dummy fb->dirty callback Daniel Vetter
2016-05-10  6:48       ` Inki Dae
2016-04-27 11:38     ` [PATCH 3/3] drm/msm: " Daniel Vetter
2016-04-27  6:50 ` ✗ Fi.CI.BAT: failure for Moar struct_mutex nuking Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160427121931.GB27856@nuc-i3427.alporthouse.com \
    --to=chris@chris-wilson.co.uk \
    --cc=daniel.vetter@ffwll.ch \
    --cc=daniel.vetter@intel.com \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.