All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chris Wilson <chris@chris-wilson.co.uk>
To: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Daniel Vetter <daniel.vetter@intel.com>,
	Intel Graphics Development <intel-gfx@lists.freedesktop.org>,
	DRI Development <dri-devel@lists.freedesktop.org>
Subject: Re: [PATCH 06/35] drm: Hide master MAP cleanup in drm_bufs.c
Date: Tue, 26 Apr 2016 22:17:25 +0100	[thread overview]
Message-ID: <20160426211725.GE13966@nuc-i3427.alporthouse.com> (raw)
In-Reply-To: <1461691808-12414-7-git-send-email-daniel.vetter@ffwll.ch>

On Tue, Apr 26, 2016 at 07:29:39PM +0200, Daniel Vetter wrote:
> And again make sure it's a no-op for modern drivers, again with the
> exception of nouveau. Another case of dev->struct_mutex gone for
> modern drivers!
> 
> v2: Also add a DRIVER_* check like for all other maps functions to
> really short-circuit the code. And give drm_legacy_rmmap used by the
> dev unregister code the same treatment.
> 
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> ---
>  drivers/gpu/drm/drm_bufs.c | 28 ++++++++++++++++++++++++----
>  drivers/gpu/drm/drm_drv.c  | 10 +---------
>  include/drm/drm_legacy.h   |  4 +++-
>  3 files changed, 28 insertions(+), 14 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_bufs.c b/drivers/gpu/drm/drm_bufs.c
> index e8a12a4fd400..5a51633da033 100644
> --- a/drivers/gpu/drm/drm_bufs.c
> +++ b/drivers/gpu/drm/drm_bufs.c
> @@ -542,18 +542,38 @@ int drm_legacy_rmmap_locked(struct drm_device *dev, struct drm_local_map *map)
>  }
>  EXPORT_SYMBOL(drm_legacy_rmmap_locked);
>  
> -int drm_legacy_rmmap(struct drm_device *dev, struct drm_local_map *map)
> +void drm_legacy_rmmap(struct drm_device *dev, struct drm_local_map *map)
>  {
> -	int ret;
> +	if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT) &&
> +	    drm_core_check_feature(dev, DRIVER_MODESET))
> +		return;
>  
>  	mutex_lock(&dev->struct_mutex);
> -	ret = drm_legacy_rmmap_locked(dev, map);
> +	drm_legacy_rmmap_locked(dev, map);
>  	mutex_unlock(&dev->struct_mutex);
>  
> -	return ret;
> +	return;

2 dead lines.

>  }
>  EXPORT_SYMBOL(drm_legacy_rmmap);
>  
> +void drm_legacy_master_rmmaps(struct drm_device *dev, struct drm_master *master)
> +{
> +	struct drm_map_list *r_list, *list_temp;
> +
> +	if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT) &&
> +	    drm_core_check_feature(dev, DRIVER_MODESET))
> +		return;
> +
> +	mutex_lock(&dev->struct_mutex);
> +	list_for_each_entry_safe(r_list, list_temp, &dev->maplist, head) {
> +		if (r_list->master == master) {
> +			drm_legacy_rmmap_locked(dev, r_list->map);
> +			r_list = NULL;
> +		}
> +	}
> +	mutex_unlock(&dev->struct_mutex);
> +}

Hmm, the entirety of the addmap interface is not guarded by legacy.
Would be good to say the two users mga and savage are !MODESET.

> +
>  /* The rmmap ioctl appears to be unnecessary.  All mappings are torn down on
>   * the last close of the device, and this is necessary for cleanup when things
>   * exit uncleanly.  Therefore, having userland manually remove mappings seems
> diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
> index 55273f8f3acb..e1fb52d4f72c 100644
> --- a/drivers/gpu/drm/drm_drv.c
> +++ b/drivers/gpu/drm/drm_drv.c
> @@ -121,19 +121,11 @@ static void drm_master_destroy(struct kref *kref)
>  {
>  	struct drm_master *master = container_of(kref, struct drm_master, refcount);
>  	struct drm_device *dev = master->minor->dev;
> -	struct drm_map_list *r_list, *list_temp;
>  
>  	if (dev->driver->master_destroy)
>  		dev->driver->master_destroy(dev, master);
>  
> -	mutex_lock(&dev->struct_mutex);
> -	list_for_each_entry_safe(r_list, list_temp, &dev->maplist, head) {
> -		if (r_list->master == master) {
> -			drm_legacy_rmmap_locked(dev, r_list->map);
> -			r_list = NULL;
> -		}
> -	}
> -	mutex_unlock(&dev->struct_mutex);
> +	drm_legacy_master_rmmaps(dev, master);

WARN_ON(!list_empty(&dev->maplist));

might be useful?

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris

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

  reply	other threads:[~2016-04-26 21:17 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 [this message]
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
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=20160426211725.GE13966@nuc-i3427.alporthouse.com \
    --to=chris@chris-wilson.co.uk \
    --cc=daniel.vetter@ffwll.ch \
    --cc=daniel.vetter@intel.com \
    --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.