From: daniel@ffwll.ch
Cc: Madhav.Chauhan@amd.com, michael.j.ruhl@intel.com,
tzimmermann@suse.de, dri-devel@lists.freedesktop.org
Subject: Re: [PATCH 05/11] drm/ttm: remove TTM_MEMTYPE_FLAG_CMA
Date: Tue, 21 Jul 2020 11:01:32 +0200 [thread overview]
Message-ID: <20200721090132.GD6419@phenom.ffwll.local> (raw)
In-Reply-To: <20200721073245.2484-5-christian.koenig@amd.com>
On Tue, Jul 21, 2020 at 09:32:39AM +0200, Christian König wrote:
> The original intention was to avoid CPU page table unmaps
> when BOs move between the GTT and SYSTEM domain.
>
> The problem is that this never correctly handled changes
> in the caching attributes or backing pages.
>
> Just drop this for now and simply unmap the CPU page
> tables in all cases.
>
> Signed-off-by: Christian König <christian.koenig@amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 4 +--
> drivers/gpu/drm/nouveau/nouveau_bo.c | 3 +-
> drivers/gpu/drm/radeon/radeon_ttm.c | 2 +-
> drivers/gpu/drm/ttm/ttm_bo.c | 34 ++++------------------
> drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c | 2 +-
> include/drm/ttm/ttm_bo_driver.h | 1 -
> 6 files changed, 11 insertions(+), 35 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index 9c0f12f74af9..44fa8bc49d18 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -93,7 +93,7 @@ static int amdgpu_init_mem_type(struct ttm_bo_device *bdev, uint32_t type,
> man->func = &amdgpu_gtt_mgr_func;
> man->available_caching = TTM_PL_MASK_CACHING;
> man->default_caching = TTM_PL_FLAG_CACHED;
> - man->flags = TTM_MEMTYPE_FLAG_MAPPABLE | TTM_MEMTYPE_FLAG_CMA;
> + man->flags = TTM_MEMTYPE_FLAG_MAPPABLE;
> break;
> case TTM_PL_VRAM:
> /* "On-card" video ram */
> @@ -108,7 +108,7 @@ static int amdgpu_init_mem_type(struct ttm_bo_device *bdev, uint32_t type,
> case AMDGPU_PL_OA:
> /* On-chip GDS memory*/
> man->func = &ttm_bo_manager_func;
> - man->flags = TTM_MEMTYPE_FLAG_FIXED | TTM_MEMTYPE_FLAG_CMA;
> + man->flags = TTM_MEMTYPE_FLAG_FIXED;
> man->available_caching = TTM_PL_FLAG_UNCACHED;
> man->default_caching = TTM_PL_FLAG_UNCACHED;
> break;
> diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c
> index a1037478fa3f..7883341f8c83 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_bo.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
> @@ -695,8 +695,7 @@ nouveau_bo_init_mem_type(struct ttm_bo_device *bdev, uint32_t type,
> TTM_PL_FLAG_WC;
> man->default_caching = TTM_PL_FLAG_WC;
> } else {
> - man->flags = TTM_MEMTYPE_FLAG_MAPPABLE |
> - TTM_MEMTYPE_FLAG_CMA;
> + man->flags = TTM_MEMTYPE_FLAG_MAPPABLE;
> man->available_caching = TTM_PL_MASK_CACHING;
> man->default_caching = TTM_PL_FLAG_CACHED;
> }
> diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
> index 73085523fad7..54af06df865b 100644
> --- a/drivers/gpu/drm/radeon/radeon_ttm.c
> +++ b/drivers/gpu/drm/radeon/radeon_ttm.c
> @@ -84,7 +84,7 @@ static int radeon_init_mem_type(struct ttm_bo_device *bdev, uint32_t type,
> man->func = &ttm_bo_manager_func;
> man->available_caching = TTM_PL_MASK_CACHING;
> man->default_caching = TTM_PL_FLAG_CACHED;
> - man->flags = TTM_MEMTYPE_FLAG_MAPPABLE | TTM_MEMTYPE_FLAG_CMA;
> + man->flags = TTM_MEMTYPE_FLAG_MAPPABLE;
> #if IS_ENABLED(CONFIG_AGP)
> if (rdev->flags & RADEON_IS_AGP) {
> if (!rdev->ddev->agp) {
> diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
> index 8b9e7f62bea7..0768a054a916 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo.c
> @@ -272,20 +272,15 @@ static int ttm_bo_handle_move_mem(struct ttm_buffer_object *bo,
> struct ttm_operation_ctx *ctx)
> {
> struct ttm_bo_device *bdev = bo->bdev;
> - bool old_is_pci = ttm_mem_reg_is_pci(bdev, &bo->mem);
> - bool new_is_pci = ttm_mem_reg_is_pci(bdev, mem);
> struct ttm_mem_type_manager *old_man = &bdev->man[bo->mem.mem_type];
> struct ttm_mem_type_manager *new_man = &bdev->man[mem->mem_type];
> - int ret = 0;
> + int ret;
>
> - if (old_is_pci || new_is_pci ||
> - ((mem->placement & bo->mem.placement & TTM_PL_MASK_CACHING) == 0)) {
> - ret = ttm_mem_io_lock(old_man, true);
> - if (unlikely(ret != 0))
> - goto out_err;
> - ttm_bo_unmap_virtual_locked(bo);
> - ttm_mem_io_unlock(old_man);
> - }
Fastpath for when there's no mapping at all might be a more reasonable
idea than trying to keep it around. Lots of one-shot upload or indirect
upload buffers generally, and maybe avoiding the ttm_mem_type_manager io
mutex is worth it. Anyway totally different thing.
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> + ret = ttm_mem_io_lock(old_man, true);
> + if (unlikely(ret != 0))
> + goto out_err;
> + ttm_bo_unmap_virtual_locked(bo);
> + ttm_mem_io_unlock(old_man);
>
> /*
> * Create and bind a ttm if required.
> @@ -1698,23 +1693,6 @@ EXPORT_SYMBOL(ttm_bo_device_init);
> * buffer object vm functions.
> */
>
> -bool ttm_mem_reg_is_pci(struct ttm_bo_device *bdev, struct ttm_mem_reg *mem)
> -{
> - struct ttm_mem_type_manager *man = &bdev->man[mem->mem_type];
> -
> - if (!(man->flags & TTM_MEMTYPE_FLAG_FIXED)) {
> - if (mem->mem_type == TTM_PL_SYSTEM)
> - return false;
> -
> - if (man->flags & TTM_MEMTYPE_FLAG_CMA)
> - return false;
> -
> - if (mem->placement & TTM_PL_FLAG_CACHED)
> - return false;
> - }
> - return true;
> -}
> -
> void ttm_bo_unmap_virtual_locked(struct ttm_buffer_object *bo)
> {
> struct ttm_bo_device *bdev = bo->bdev;
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c
> index bfd0c54ec30a..6bea7548aee0 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c
> @@ -762,7 +762,7 @@ static int vmw_init_mem_type(struct ttm_bo_device *bdev, uint32_t type,
> * slots as well as the bo size.
> */
> man->func = &vmw_gmrid_manager_func;
> - man->flags = TTM_MEMTYPE_FLAG_CMA | TTM_MEMTYPE_FLAG_MAPPABLE;
> + man->flags = TTM_MEMTYPE_FLAG_MAPPABLE;
> man->available_caching = TTM_PL_FLAG_CACHED;
> man->default_caching = TTM_PL_FLAG_CACHED;
> break;
> diff --git a/include/drm/ttm/ttm_bo_driver.h b/include/drm/ttm/ttm_bo_driver.h
> index 45522e4fbd6b..71b195e78c7c 100644
> --- a/include/drm/ttm/ttm_bo_driver.h
> +++ b/include/drm/ttm/ttm_bo_driver.h
> @@ -47,7 +47,6 @@
>
> #define TTM_MEMTYPE_FLAG_FIXED (1 << 0) /* Fixed (on-card) PCI memory */
> #define TTM_MEMTYPE_FLAG_MAPPABLE (1 << 1) /* Memory mappable */
> -#define TTM_MEMTYPE_FLAG_CMA (1 << 3) /* Can't map aperture */
>
> struct ttm_mem_type_manager;
>
> --
> 2.17.1
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
--
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
next prev parent reply other threads:[~2020-07-21 9:01 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-21 7:32 [PATCH 01/11] drm: remove optional dummy function from drivers using TTM Christian König
2020-07-21 7:32 ` [PATCH 02/11] drm/ttm: cleanup io_mem interface with nouveau Christian König
2020-07-21 8:50 ` daniel
2020-07-22 7:05 ` Chauhan, Madhav
2020-07-21 7:32 ` [PATCH 03/11] drm/ttm: remove io_reserve_fastpath flag Christian König
2020-07-21 8:52 ` daniel
2020-07-21 7:32 ` [PATCH 04/11] drm/ttm: cleanup coding style and implementation Christian König
2020-07-21 8:56 ` daniel
2020-07-21 7:32 ` [PATCH 05/11] drm/ttm: remove TTM_MEMTYPE_FLAG_CMA Christian König
2020-07-21 9:01 ` daniel [this message]
2020-07-21 7:32 ` [PATCH 06/11] drm/radeon: stop using TTM_MEMTYPE_FLAG_MAPPABLE Christian König
2020-07-21 9:24 ` daniel
2020-07-21 14:46 ` Christian König
2020-07-22 5:34 ` Daniel Vetter
2020-07-22 11:13 ` Christian König
2020-07-22 11:42 ` Daniel Vetter
2020-07-22 11:49 ` Christian König
2020-07-22 11:58 ` Daniel Vetter
2020-07-21 7:32 ` [PATCH 07/11] drm/vmwgfx: " Christian König
2020-07-21 9:26 ` daniel
2020-07-21 7:32 ` [PATCH 08/11] drm/amdgpu: " Christian König
2020-07-21 9:28 ` daniel
2020-07-21 9:45 ` Chauhan, Madhav
2020-07-21 14:30 ` Christian König
2020-07-21 7:32 ` [PATCH 09/11] drm/nouveau: " Christian König
2020-07-21 9:28 ` daniel
2020-07-21 7:32 ` [PATCH 10/11] drm/qxl: stop using TTM_MEMTYPE_FLAG_MAPPABLE v2 Christian König
2020-07-21 9:29 ` daniel
2020-07-21 7:32 ` [PATCH 11/11] drm/ttm: remove TTM_MEMTYPE_FLAG_MAPPABLE Christian König
2020-07-21 9:30 ` daniel
2020-07-21 9:54 ` kernel test robot
2020-07-21 9:54 ` kernel test robot
2020-07-21 7:55 ` [PATCH 01/11] drm: remove optional dummy function from drivers using TTM Daniel Vetter
2020-07-21 8:02 ` Christian König
2020-07-21 9:15 ` Chauhan, Madhav
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=20200721090132.GD6419@phenom.ffwll.local \
--to=daniel@ffwll.ch \
--cc=Madhav.Chauhan@amd.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=michael.j.ruhl@intel.com \
--cc=tzimmermann@suse.de \
/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.