All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ben Skeggs <skeggsb@gmail.com>
To: Dave Airlie <airlied@gmail.com>
Cc: sroland@vmware.com,
	"ML dri-devel" <dri-devel@lists.freedesktop.org>,
	linux-graphics-maintainer@vmware.com,
	"Gerd Hoffmann" <kraxel@redhat.com>,
	"Christian König" <christian.koenig@amd.com>,
	"Ben Skeggs" <bskeggs@redhat.com>
Subject: Re: [PATCH 35/59] drm/ttm: make TTM responsible for cleaning system only.
Date: Wed, 5 Aug 2020 15:46:04 +1000	[thread overview]
Message-ID: <CACAvsv5n1Ck53SUw40EeFFYu5fQ0y5mDFOPxVq9uZnvEFs0cxw@mail.gmail.com> (raw)
In-Reply-To: <20200804025632.3868079-36-airlied@gmail.com>

On Tue, 4 Aug 2020 at 12:58, Dave Airlie <airlied@gmail.com> wrote:
>
> From: Dave Airlie <airlied@redhat.com>
>
> Drivers should all be cleaning up their memory managers
> themselves now, so let the core just clean the system one up.
>
> Remove the legacy cleaning interface.
>
> Reviewed-by: Christian König <christian.koenig@amd.com>
> Signed-off-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Ben Skeggs <bskeggs@redhat.com>

> ---
>  drivers/gpu/drm/ttm/ttm_bo.c    | 54 +++------------------------------
>  include/drm/ttm/ttm_bo_api.h    | 28 -----------------
>  include/drm/ttm/ttm_bo_driver.h | 10 ------
>  3 files changed, 4 insertions(+), 88 deletions(-)
>
> diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
> index a45038c74de6..ebecb796dd49 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo.c
> @@ -1452,42 +1452,6 @@ int ttm_mem_type_manager_force_list_clean(struct ttm_bo_device *bdev,
>  }
>  EXPORT_SYMBOL(ttm_mem_type_manager_force_list_clean);
>
> -int ttm_bo_clean_mm(struct ttm_bo_device *bdev, unsigned mem_type)
> -{
> -       struct ttm_mem_type_manager *man;
> -       int ret = -EINVAL;
> -
> -       if (mem_type >= TTM_NUM_MEM_TYPES) {
> -               pr_err("Illegal memory type %d\n", mem_type);
> -               return ret;
> -       }
> -       man = &bdev->man[mem_type];
> -
> -       if (!man->has_type) {
> -               pr_err("Trying to take down uninitialized memory manager type %u\n",
> -                      mem_type);
> -               return ret;
> -       }
> -
> -       ttm_mem_type_manager_disable(man);
> -
> -       ret = 0;
> -       if (mem_type > 0) {
> -               ret = ttm_mem_type_manager_force_list_clean(bdev, man);
> -               if (ret) {
> -                       pr_err("Cleanup eviction failed\n");
> -                       return ret;
> -               }
> -
> -               if (man->func->takedown)
> -                       ret = (*man->func->takedown)(man);
> -       }
> -
> -       ttm_mem_type_manager_cleanup(man);
> -
> -       return ret;
> -}
> -EXPORT_SYMBOL(ttm_bo_clean_mm);
>
>  int ttm_bo_evict_mm(struct ttm_bo_device *bdev, unsigned mem_type)
>  {
> @@ -1591,21 +1555,11 @@ int ttm_bo_device_release(struct ttm_bo_device *bdev)
>  {
>         struct ttm_bo_global *glob = &ttm_bo_glob;
>         int ret = 0;
> -       unsigned i = TTM_NUM_MEM_TYPES;
> +       unsigned i;
>         struct ttm_mem_type_manager *man;
>
> -       while (i--) {
> -               man = &bdev->man[i];
> -               if (man->has_type) {
> -                       man->use_type = false;
> -                       if ((i != TTM_PL_SYSTEM) && ttm_bo_clean_mm(bdev, i)) {
> -                               ret = -EBUSY;
> -                               pr_err("DRM memory manager type %d is not clean\n",
> -                                      i);
> -                       }
> -                       man->has_type = false;
> -               }
> -       }
> +       man = &bdev->man[TTM_PL_SYSTEM];
> +       ttm_mem_type_manager_disable(man);
>
>         mutex_lock(&ttm_global_mutex);
>         list_del(&bdev->device_list);
> @@ -1618,7 +1572,7 @@ int ttm_bo_device_release(struct ttm_bo_device *bdev)
>
>         spin_lock(&glob->lru_lock);
>         for (i = 0; i < TTM_MAX_BO_PRIORITY; ++i)
> -               if (list_empty(&bdev->man[0].lru[0]))
> +               if (list_empty(&man->lru[0]))
>                         pr_debug("Swap list %d was clean\n", i);
>         spin_unlock(&glob->lru_lock);
>
> diff --git a/include/drm/ttm/ttm_bo_api.h b/include/drm/ttm/ttm_bo_api.h
> index 2c84622faa44..9c55eafd0e7d 100644
> --- a/include/drm/ttm/ttm_bo_api.h
> +++ b/include/drm/ttm/ttm_bo_api.h
> @@ -546,34 +546,6 @@ void ttm_mem_type_manager_init(struct ttm_bo_device *bdev,
>                                struct ttm_mem_type_manager *man,
>                                unsigned long p_size);
>
> -/**
> - * ttm_bo_clean_mm
> - *
> - * @bdev: Pointer to a ttm_bo_device struct.
> - * @mem_type: The memory type.
> - *
> - * Take down a manager for a given memory type after first walking
> - * the LRU list to evict any buffers left alive.
> - *
> - * Normally, this function is part of lastclose() or unload(), and at that
> - * point there shouldn't be any buffers left created by user-space, since
> - * there should've been removed by the file descriptor release() method.
> - * However, before this function is run, make sure to signal all sync objects,
> - * and verify that the delayed delete queue is empty. The driver must also
> - * make sure that there are no NO_EVICT buffers present in this memory type
> - * when the call is made.
> - *
> - * If this function is part of a VT switch, the caller must make sure that
> - * there are no appications currently validating buffers before this
> - * function is called. The caller can do that by first taking the
> - * struct ttm_bo_device::ttm_lock in write mode.
> - *
> - * Returns:
> - * -EINVAL: invalid or uninitialized memory type.
> - * -EBUSY: There are still buffers left in this memory type.
> - */
> -int ttm_bo_clean_mm(struct ttm_bo_device *bdev, unsigned mem_type);
> -
>  /**
>   * ttm_bo_evict_mm
>   *
> diff --git a/include/drm/ttm/ttm_bo_driver.h b/include/drm/ttm/ttm_bo_driver.h
> index 9b4c22abc22c..8cc39cd55a14 100644
> --- a/include/drm/ttm/ttm_bo_driver.h
> +++ b/include/drm/ttm/ttm_bo_driver.h
> @@ -48,16 +48,6 @@
>  struct ttm_mem_type_manager;
>
>  struct ttm_mem_type_manager_func {
> -       /**
> -        * struct ttm_mem_type_manager member takedown
> -        *
> -        * @man: Pointer to a memory type manager.
> -        *
> -        * Called to undo the setup done in init. All allocated resources
> -        * should be freed.
> -        */
> -       int  (*takedown)(struct ttm_mem_type_manager *man);
> -
>         /**
>          * struct ttm_mem_type_manager member get_node
>          *
> --
> 2.26.2
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2020-08-05  5:46 UTC|newest]

Thread overview: 136+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-04  2:55 [00/59] ttm misc cleanups, mem refactoring, rename objects. (v2) Dave Airlie
2020-08-04  2:55 ` [PATCH 01/59] drm/vmwgfx: consolidate ttm object creation and populate Dave Airlie
2020-08-05  7:56   ` daniel
2020-08-04  2:55 ` [PATCH 02/59] drm/vmwgfx: drop bo map/unmap dma functions Dave Airlie
2020-08-05  7:59   ` daniel
2020-08-04  2:55 ` [PATCH 03/59] nouveau: use ttm populate mapping functions. (v2) Dave Airlie
2020-08-05  5:32   ` Ben Skeggs
2020-08-04  2:55 ` [PATCH 04/59] qxl/ttm: drop the unusued no wait flag to reserve function Dave Airlie
2020-08-04 10:46   ` Gerd Hoffmann
2020-08-04  2:55 ` [PATCH 05/59] drm/ttm/amdgpu: consolidate ttm reserve paths Dave Airlie
2020-08-04 10:33   ` Christian König
2020-08-04  2:55 ` [PATCH 06/59] drm/ttm: use a helper for unlocked moves to the lru tail Dave Airlie
2020-08-04 10:34   ` Christian König
2020-08-05  5:32     ` Ben Skeggs
2020-08-04  2:55 ` [PATCH 07/59] drm/vram-helper: remove populate/unpopulate Dave Airlie
2020-08-04  6:54   ` Thomas Zimmermann
2020-08-04  2:55 ` [PATCH 08/59] drm/ttm: export memory type debug entrypoint Dave Airlie
2020-08-04 10:35   ` Christian König
2020-08-05  5:34     ` Ben Skeggs
2020-08-04  2:55 ` [PATCH 09/59] drm/nouveau/ttm: don't fill in blank ttm debug callback Dave Airlie
2020-08-05  5:34   ` Ben Skeggs
2020-08-04  2:55 ` [PATCH 10/59] drm/vmwgfx/gmrid: don't provide pointless " Dave Airlie
2020-08-04  2:55 ` [PATCH 11/59] drm/qxl/ttm: call ttm manager debug (v2) Dave Airlie
2020-08-04 10:48   ` Gerd Hoffmann
2020-08-04  2:55 ` [PATCH 12/59] drm/vram-helper: call the ttm manager debug function Dave Airlie
2020-08-04  6:55   ` Thomas Zimmermann
2020-08-04 10:48   ` Gerd Hoffmann
2020-08-04  2:55 ` [PATCH 13/59] drm/ttm: split the mm manager init code (v2) Dave Airlie
2020-08-04 11:07   ` Christian König
2020-08-04 13:08     ` Christian König
2020-08-04 11:10   ` Christian König
2020-08-04  2:55 ` [PATCH 14/59] drm/ttm: provide a driver-led init path for range mm manager. (v2) Dave Airlie
2020-08-04  2:55 ` [PATCH 15/59] drm/amdgpu/ttm: init managers from the driver side Dave Airlie
2020-08-04 11:15   ` Christian König
2020-08-04  2:55 ` [PATCH 16/59] drm/radeon: use new ttm man init path Dave Airlie
2020-08-04 11:15   ` Christian König
2020-08-04  2:55 ` [PATCH 17/59] drm/qxl/ttm: use new init path for manager Dave Airlie
2020-08-04 10:49   ` Gerd Hoffmann
2020-08-04  2:55 ` [PATCH 18/59] drm/vram_helper: use new ttm manager init function Dave Airlie
2020-08-04  6:58   ` Thomas Zimmermann
2020-08-04 10:49   ` Gerd Hoffmann
2020-08-04  2:55 ` [PATCH 19/59] drm/nouveau: use new memory manager init paths Dave Airlie
2020-08-05  5:40   ` Ben Skeggs
2020-08-04  2:55 ` [PATCH 20/59] drm/vmwgfx/ttm: convert vram mm init to new code paths Dave Airlie
2020-08-05  8:57   ` daniel
2020-08-04  2:55 ` [PATCH 21/59] drm/vmwgfx/ttm: switch gmrid allocator to new init paths Dave Airlie
2020-08-05  9:00   ` daniel
2020-08-04  2:55 ` [PATCH 22/59] drm/ttm: convert system manager init to new code Dave Airlie
2020-08-05  5:40   ` Ben Skeggs
2020-08-04  2:55 ` [PATCH 23/59] drm/ttm: purge old manager init path Dave Airlie
2020-08-05  5:41   ` Ben Skeggs
2020-08-04  2:55 ` [PATCH 24/59] drm/ttm: pass man around instead of mem_type in some places Dave Airlie
2020-08-05  5:42   ` Ben Skeggs
2020-08-04  2:55 ` [PATCH 25/59] drm/ttm: make some inline helper functions for cleanup paths. (v2) Dave Airlie
2020-08-04 11:18   ` Christian König
2020-08-05  5:42     ` Ben Skeggs
2020-08-04  2:55 ` [PATCH 26/59] drm/ttm: start allowing drivers to use new takedown path (v2) Dave Airlie
2020-08-04 11:20   ` Christian König
2020-08-05  5:43     ` Ben Skeggs
2020-08-04  2:56 ` [PATCH 27/59] drm/amdgpu/ttm: use new takedown path Dave Airlie
2020-08-04  2:56 ` [PATCH 28/59] drm/vmwgfx: takedown vram manager Dave Airlie
2020-08-05  9:19   ` daniel
2020-08-04  2:56 ` [PATCH 29/59] drm/vram_helper: call explicit mm takedown Dave Airlie
2020-08-04  6:59   ` Thomas Zimmermann
2020-08-04  2:56 ` [PATCH 30/59] drm/nouveau: use new cleanup paths Dave Airlie
2020-08-05  5:44   ` Ben Skeggs
2020-08-04  2:56 ` [PATCH 31/59] drm/radeon/ttm: use new takedown paths Dave Airlie
2020-08-04  2:56 ` [PATCH 32/59] drm/qxl/ttm: use new takedown path Dave Airlie
2020-08-04 10:50   ` Gerd Hoffmann
2020-08-04  2:56 ` [PATCH 33/59] drm/vmwgfx: fix gmrid takedown paths to new interface Dave Airlie
2020-08-05  9:21   ` daniel
2020-08-04  2:56 ` [PATCH 34/59] drm/ttm: remove range manager legacy takedown path Dave Airlie
2020-08-05  5:45   ` Ben Skeggs
2020-08-04  2:56 ` [PATCH 35/59] drm/ttm: make TTM responsible for cleaning system only Dave Airlie
2020-08-05  5:46   ` Ben Skeggs [this message]
2020-08-04  2:56 ` [PATCH 36/59] drm/ttm: add wrapper to get manager from bdev Dave Airlie
2020-08-04 11:25   ` Christian König
2020-08-05  5:47     ` Ben Skeggs
2020-08-04  2:56 ` [PATCH 37/59] drm/amdgfx/ttm: use wrapper to get ttm memory managers Dave Airlie
2020-08-04 11:26   ` Christian König
2020-08-04  2:56 ` [PATCH 38/59] drm/vram-helper: use wrapper to access " Dave Airlie
2020-08-04  7:00   ` Thomas Zimmermann
2020-08-04  2:56 ` [PATCH 39/59] drm/nouveau/ttm: " Dave Airlie
2020-08-05  5:48   ` Ben Skeggs
2020-08-04  2:56 ` [PATCH 40/59] drm/qxl/ttm: use wrapper to access memory manager Dave Airlie
2020-08-04 10:50   ` Gerd Hoffmann
2020-08-04  2:56 ` [PATCH 41/59] drm/radeon/ttm: " Dave Airlie
2020-08-04 11:29   ` Christian König
2020-08-04  2:56 ` [PATCH 42/59] drm/vmwgfx/ttm: " Dave Airlie
2020-08-05  9:22   ` daniel
2020-08-04  2:56 ` [PATCH 43/59] drm/ttm: rename manager variable to make sure wrapper is used Dave Airlie
2020-08-04 11:29   ` Christian König
2020-08-05  5:49     ` Ben Skeggs
2020-08-04  2:56 ` [PATCH 44/59] drm/ttm: allow drivers to provide their own manager subclasses Dave Airlie
2020-08-04 11:30   ` Christian König
2020-08-05  5:49     ` Ben Skeggs
2020-08-04  2:56 ` [PATCH 45/59] drm/amdgpu/ttm: use bo manager subclassing for vram/gtt mgrs Dave Airlie
2020-08-04 11:32   ` Christian König
2020-08-04  2:56 ` [PATCH 46/59] drm/ttm: make ttm_range_man_init/takedown take type + args Dave Airlie
2020-08-04 11:35   ` Christian König
2020-08-05  5:51     ` Ben Skeggs
2020-08-04  2:56 ` [PATCH 47/59] drm/ttm: move range manager to subclassed driver allocation Dave Airlie
2020-08-05  5:52   ` Ben Skeggs
2020-08-04  2:56 ` [PATCH 48/59] drm/vmwgfx/ttm: move thp to driver managed Dave Airlie
2020-08-05  9:24   ` daniel
2020-08-04  2:56 ` [PATCH 49/59] drm/vmwgfx/gmrid: convert to driver controlled allocation Dave Airlie
2020-08-05  9:26   ` daniel
2020-08-04  2:56 ` [PATCH 50/59] drm/nouveau/ttm: move to driver allocated manager Dave Airlie
2020-08-05  5:53   ` Ben Skeggs
2020-08-04  2:56 ` [PATCH 51/59] drm/ttm: drop priv pointer in memory manager Dave Airlie
2020-08-05  5:54   ` Ben Skeggs
2020-08-04  2:56 ` [PATCH 52/59] drm/amdgpu/ttm: remove man->bdev references Dave Airlie
2020-08-04  2:56 ` [PATCH 53/59] drm/ttm: drop man->bdev link Dave Airlie
2020-08-05  5:54   ` Ben Skeggs
2020-08-04  2:56 ` [PATCH 54/59] drm/ttm: drop list of memory managers from device. (v2) Dave Airlie
2020-08-04 11:37   ` Christian König
2020-08-05  5:55     ` Ben Skeggs
2020-08-04  2:56 ` [PATCH 55/59] drm/ttm: drop type manager has_type Dave Airlie
2020-08-04 11:37   ` Christian König
2020-08-05  5:55     ` Ben Skeggs
2020-08-04  2:56 ` [PATCH 56/59] drm/ttm: add a wrapper for checking if manager is in use Dave Airlie
2020-08-04 11:38   ` Christian König
2020-08-05  5:56     ` Ben Skeggs
2020-08-05  9:04   ` daniel
2020-08-04  2:56 ` [PATCH 57/59] drm/ttm: rename bo manager to range manager Dave Airlie
2020-08-04 11:40   ` Christian König
2020-08-05  5:56     ` Ben Skeggs
2020-08-04  2:56 ` [PATCH 58/59] drm/ttm: rename ttm_mem_type_manager -> ttm_resource_manager Dave Airlie
2020-08-04 11:41   ` Christian König
2020-08-05  5:57     ` Ben Skeggs
2020-08-04  2:56 ` [PATCH 59/59] drm/ttm: rename ttm_mem_reg to ttm_resource Dave Airlie
2020-08-04 11:41   ` Christian König
2020-08-05  5:58     ` Ben Skeggs
2020-08-04  3:01 ` [00/59] ttm misc cleanups, mem refactoring, rename objects. (v2) Dave Airlie
2020-08-05 11:55 ` Christian König
2020-08-05 11:59   ` Christian König

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=CACAvsv5n1Ck53SUw40EeFFYu5fQ0y5mDFOPxVq9uZnvEFs0cxw@mail.gmail.com \
    --to=skeggsb@gmail.com \
    --cc=airlied@gmail.com \
    --cc=bskeggs@redhat.com \
    --cc=christian.koenig@amd.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=kraxel@redhat.com \
    --cc=linux-graphics-maintainer@vmware.com \
    --cc=sroland@vmware.com \
    /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.