All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Vetter <daniel@ffwll.ch>
To: "Christian König" <ckoenig.leichtzumerken@gmail.com>
Cc: thomas.hellstrom@linux.intel.com, ray.huang@amd.com,
	dri-devel@lists.freedesktop.org
Subject: Re: [PATCH 11/12] drm/ttm: allow bulk moves for all domains
Date: Tue, 25 Jan 2022 18:16:45 +0100	[thread overview]
Message-ID: <YfAwffdiRfcjrOUE@phenom.ffwll.local> (raw)
In-Reply-To: <20220124122514.1832-12-christian.koenig@amd.com>

On Mon, Jan 24, 2022 at 01:25:13PM +0100, Christian König wrote:
> Not just TT and VRAM.
> 
> Signed-off-by: Christian König <christian.koenig@amd.com>
> ---
>  drivers/gpu/drm/ttm/ttm_resource.c | 49 +++++++++---------------------
>  include/drm/ttm/ttm_device.h       |  2 --
>  include/drm/ttm/ttm_resource.h     |  4 +--
>  3 files changed, 16 insertions(+), 39 deletions(-)
> 
> diff --git a/drivers/gpu/drm/ttm/ttm_resource.c b/drivers/gpu/drm/ttm/ttm_resource.c
> index 9e68d36a1546..2ea8fb83377e 100644
> --- a/drivers/gpu/drm/ttm/ttm_resource.c
> +++ b/drivers/gpu/drm/ttm/ttm_resource.c
> @@ -51,36 +51,23 @@ EXPORT_SYMBOL(ttm_lru_bulk_move_init);
>   */
>  void ttm_lru_bulk_move_tail(struct ttm_lru_bulk_move *bulk)
>  {
> -	unsigned i;
> -
> -	for (i = 0; i < TTM_MAX_BO_PRIORITY; ++i) {
> -		struct ttm_lru_bulk_move_pos *pos = &bulk->tt[i];
> -		struct ttm_resource_manager *man;
> +	unsigned i, j;
>  
> -		if (!pos->first)
> -			continue;
> +	for (i = 0; i < TTM_NUM_MEM_TYPES; ++i) {
> +		for (j = 0; j < TTM_MAX_BO_PRIORITY; ++j) {
> +			struct ttm_lru_bulk_move_pos *pos = &bulk->pos[i][j];
> +			struct ttm_resource_manager *man;
>  
> -		dma_resv_assert_held(pos->first->bo->base.resv);
> -		dma_resv_assert_held(pos->last->bo->base.resv);
> +			if (!pos->first)
> +				continue;
>  
> -		man = ttm_manager_type(pos->first->bo->bdev, TTM_PL_TT);
> -		list_bulk_move_tail(&man->lru[i], &pos->first->lru,
> -				    &pos->last->lru);
> -	}
> -
> -	for (i = 0; i < TTM_MAX_BO_PRIORITY; ++i) {
> -		struct ttm_lru_bulk_move_pos *pos = &bulk->vram[i];
> -		struct ttm_resource_manager *man;
> +			dma_resv_assert_held(pos->first->bo->base.resv);
> +			dma_resv_assert_held(pos->last->bo->base.resv);
>  
> -		if (!pos->first)
> -			continue;
> -
> -		dma_resv_assert_held(pos->first->bo->base.resv);
> -		dma_resv_assert_held(pos->last->bo->base.resv);
> -
> -		man = ttm_manager_type(pos->first->bo->bdev, TTM_PL_VRAM);
> -		list_bulk_move_tail(&man->lru[i], &pos->first->lru,
> -				    &pos->last->lru);
> +			man = ttm_manager_type(pos->first->bo->bdev, i);
> +			list_bulk_move_tail(&man->lru[j], &pos->first->lru,
> +					    &pos->last->lru);
> +		}
>  	}
>  }
>  EXPORT_SYMBOL(ttm_lru_bulk_move_tail);
> @@ -118,15 +105,7 @@ void ttm_resource_move_to_lru_tail(struct ttm_resource *res,
>  	if (!bulk)
>  		return;
>  
> -	switch (res->mem_type) {
> -	case TTM_PL_TT:
> -		ttm_lru_bulk_move_set_pos(&bulk->tt[bo->priority], res);
> -		break;
> -
> -	case TTM_PL_VRAM:
> -		ttm_lru_bulk_move_set_pos(&bulk->vram[bo->priority], res);
> -		break;
> -	}
> +	ttm_lru_bulk_move_set_pos(&bulk->pos[res->mem_type][bo->priority], res);
>  }
>  
>  void ttm_resource_init(struct ttm_buffer_object *bo,
> diff --git a/include/drm/ttm/ttm_device.h b/include/drm/ttm/ttm_device.h
> index 0a4ddec78d8f..425150f35fbe 100644
> --- a/include/drm/ttm/ttm_device.h
> +++ b/include/drm/ttm/ttm_device.h
> @@ -30,8 +30,6 @@
>  #include <drm/ttm/ttm_resource.h>
>  #include <drm/ttm/ttm_pool.h>
>  
> -#define TTM_NUM_MEM_TYPES 8
> -
>  struct ttm_device;
>  struct ttm_placement;
>  struct ttm_buffer_object;
> diff --git a/include/drm/ttm/ttm_resource.h b/include/drm/ttm/ttm_resource.h
> index 13da5e337350..1556d1f62251 100644
> --- a/include/drm/ttm/ttm_resource.h
> +++ b/include/drm/ttm/ttm_resource.h
> @@ -37,6 +37,7 @@
>  #include <drm/ttm/ttm_kmap_iter.h>
>  
>  #define TTM_MAX_BO_PRIORITY	4U
> +#define TTM_NUM_MEM_TYPES 8
>  
>  struct ttm_device;
>  struct ttm_resource_manager;
> @@ -216,8 +217,7 @@ struct ttm_lru_bulk_move_pos {
>   * Helper structure for bulk moves on the LRU list.
>   */
>  struct ttm_lru_bulk_move {
> -	struct ttm_lru_bulk_move_pos tt[TTM_MAX_BO_PRIORITY];
> -	struct ttm_lru_bulk_move_pos vram[TTM_MAX_BO_PRIORITY];
> +	struct ttm_lru_bulk_move_pos pos[TTM_NUM_MEM_TYPES][TTM_MAX_BO_PRIORITY];

256 bytes per client vm for embedding this seems acceptable. And we can
make this smarter if there's ever a need. I didn't fully check your code
movement (dinner is calling!) but lgtm.

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>

>  };
>  
>  /**
> -- 
> 2.25.1
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

  reply	other threads:[~2022-01-25 17:16 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-24 12:25 drm/ttm: moving the LRU into the resource Christian König
2022-01-24 12:25 ` [PATCH 01/12] drm/ttm: add ttm_resource_fini Christian König
2022-01-25 16:26   ` Daniel Vetter
2022-01-24 12:25 ` [PATCH 02/12] drm/ttm: add back a reference to the bdev to the res manager Christian König
2022-01-25 16:30   ` Daniel Vetter
2022-01-24 12:25 ` [PATCH 03/12] drm/ttm: add a weak BO reference to the resource v3 Christian König
2022-01-24 12:25 ` [PATCH 04/12] drm/ttm: add common accounting to the resource mgr v2 Christian König
2022-01-25 16:37   ` Daniel Vetter
2022-01-26 14:42     ` Christian König
2022-01-27  8:48       ` Daniel Vetter
2022-01-24 12:25 ` [PATCH 05/12] drm/ttm: move the LRU into resource handling v2 Christian König
2022-01-25 16:52   ` Daniel Vetter
2022-01-24 12:25 ` [PATCH 06/12] drm/ttm: add resource iterator Christian König
2022-01-25 16:56   ` Daniel Vetter
2022-01-24 12:25 ` [PATCH 07/12] drm/radeon: remove resource accounting Christian König
2022-01-24 12:25 ` [PATCH 08/12] drm/amdgpu: remove GTT accounting Christian König
2022-01-24 12:25 ` [PATCH 09/12] drm/amdgpu: remove VRAM accounting Christian König
2022-01-24 12:25 ` [PATCH 10/12] drm/amdgpu: drop amdgpu_gtt_node Christian König
2022-01-24 12:25 ` [PATCH 11/12] drm/ttm: allow bulk moves for all domains Christian König
2022-01-25 17:16   ` Daniel Vetter [this message]
2022-01-24 12:25 ` [PATCH 12/12] drm/ttm: rework bulk move handling Christian König
2022-01-25 17:12   ` Daniel Vetter

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=YfAwffdiRfcjrOUE@phenom.ffwll.local \
    --to=daniel@ffwll.ch \
    --cc=ckoenig.leichtzumerken@gmail.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=ray.huang@amd.com \
    --cc=thomas.hellstrom@linux.intel.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.