All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Christian König" <christian.koenig@amd.com>
To: Matthew Auld <matthew.auld@intel.com>, intel-gfx@lists.freedesktop.org
Cc: dri-devel@lists.freedesktop.org,
	"Thomas Hellström" <thomas.hellstrom@linux.intel.com>
Subject: Re: [Intel-gfx] [PATCH v3 06/12] drm/ttm: add TTM_PAGE_FLAG_EXTERNAL_MAPPABLE
Date: Thu, 16 Sep 2021 08:55:24 +0200	[thread overview]
Message-ID: <00e355ba-fa5a-945e-d9ea-48260a2c56ae@amd.com> (raw)
In-Reply-To: <20210915185954.3114858-6-matthew.auld@intel.com>



Am 15.09.21 um 20:59 schrieb Matthew Auld:
> In commit:
>
> commit 667a50db0477d47fdff01c666f5ee1ce26b5264c
> Author: Thomas Hellstrom <thellstrom@vmware.com>
> Date:   Fri Jan 3 11:17:18 2014 +0100
>
>      drm/ttm: Refuse to fault (prime-) imported pages
>
> we introduced the restriction that imported pages should not be directly
> mappable through TTM(this also extends to userptr). In the next patch we
> want to introduce a shmem_tt backend, which should follow all the
> existing rules with TTM_PAGE_FLAG_EXTERNAL, since it will need to handle
> swapping itself, but with the above mapping restriction lifted.
>
> Signed-off-by: Matthew Auld <matthew.auld@intel.com>
> Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
> Cc: Christian König <christian.koenig@amd.com>
> ---
>   drivers/gpu/drm/ttm/ttm_bo_vm.c | 6 ++++--
>   include/drm/ttm/ttm_tt.h        | 7 +++++++
>   2 files changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c b/drivers/gpu/drm/ttm/ttm_bo_vm.c
> index 708390588c7c..fd6e18f12f50 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo_vm.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c
> @@ -163,8 +163,10 @@ vm_fault_t ttm_bo_vm_reserve(struct ttm_buffer_object *bo,
>   	 * (if at all) by redirecting mmap to the exporter.
>   	 */
>   	if (bo->ttm && (bo->ttm->page_flags & TTM_PAGE_FLAG_EXTERNAL)) {
> -		dma_resv_unlock(bo->base.resv);
> -		return VM_FAULT_SIGBUS;
> +		if (!(bo->ttm->page_flags & TTM_PAGE_FLAG_EXTERNAL_MAPPABLE)) {
> +			dma_resv_unlock(bo->base.resv);
> +			return VM_FAULT_SIGBUS;
> +		}
>   	}
>   
>   	return 0;
> diff --git a/include/drm/ttm/ttm_tt.h b/include/drm/ttm/ttm_tt.h
> index 7f54a83c95ef..800c9edb3e10 100644
> --- a/include/drm/ttm/ttm_tt.h
> +++ b/include/drm/ttm/ttm_tt.h
> @@ -66,11 +66,18 @@ struct ttm_tt {
>   	 * Note that enum ttm_bo_type.ttm_bo_type_sg objects will always enable
>   	 * this flag.
>   	 *
> +	 * TTM_PAGE_FLAG_EXTERNAL_MAPPABLE: Same behaviour as
> +	 * TTM_PAGE_FLAG_EXTERNAL, but with the reduced restriction that it is
> +	 * still valid to use TTM to map the pages directly. This is useful when
> +	 * implementing a ttm_tt backend which still allocates driver owned
> +	 * pages underneath(say with shmem).
> +	 *
>   	 * TTM_PAGE_FLAG_PRIV_POPULATED: TTM internal only. DO NOT USE.
>   	 */
>   #define TTM_PAGE_FLAG_SWAPPED		(1 << 0)
>   #define TTM_PAGE_FLAG_ZERO_ALLOC	(1 << 1)
>   #define TTM_PAGE_FLAG_EXTERNAL		(1 << 2)
> +#define TTM_PAGE_FLAG_EXTERNAL_MAPPABLE	(1 << 3 | TTM_PAGE_FLAG_EXTERNAL)

That's really bad practice because an "if (!(flags & 
TTM_PAGE_FLAG_EXTERNAL_MAPPABLE))" has a different semantics as an "if 
(flags & TTM_PAGE_FLAG_EXTERNAL_MAPPABLE)".

Rather add a TTM_PAGE_FLAG_UNMAPPABLE and make sure that it is set as 
appropriated.

Regards,
Christian.

>   
>   #define TTM_PAGE_FLAG_PRIV_POPULATED	(1 << 31)
>   	uint32_t page_flags;


WARNING: multiple messages have this Message-ID (diff)
From: "Christian König" <christian.koenig@amd.com>
To: Matthew Auld <matthew.auld@intel.com>, intel-gfx@lists.freedesktop.org
Cc: dri-devel@lists.freedesktop.org,
	"Thomas Hellström" <thomas.hellstrom@linux.intel.com>
Subject: Re: [PATCH v3 06/12] drm/ttm: add TTM_PAGE_FLAG_EXTERNAL_MAPPABLE
Date: Thu, 16 Sep 2021 08:55:24 +0200	[thread overview]
Message-ID: <00e355ba-fa5a-945e-d9ea-48260a2c56ae@amd.com> (raw)
In-Reply-To: <20210915185954.3114858-6-matthew.auld@intel.com>



Am 15.09.21 um 20:59 schrieb Matthew Auld:
> In commit:
>
> commit 667a50db0477d47fdff01c666f5ee1ce26b5264c
> Author: Thomas Hellstrom <thellstrom@vmware.com>
> Date:   Fri Jan 3 11:17:18 2014 +0100
>
>      drm/ttm: Refuse to fault (prime-) imported pages
>
> we introduced the restriction that imported pages should not be directly
> mappable through TTM(this also extends to userptr). In the next patch we
> want to introduce a shmem_tt backend, which should follow all the
> existing rules with TTM_PAGE_FLAG_EXTERNAL, since it will need to handle
> swapping itself, but with the above mapping restriction lifted.
>
> Signed-off-by: Matthew Auld <matthew.auld@intel.com>
> Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
> Cc: Christian König <christian.koenig@amd.com>
> ---
>   drivers/gpu/drm/ttm/ttm_bo_vm.c | 6 ++++--
>   include/drm/ttm/ttm_tt.h        | 7 +++++++
>   2 files changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c b/drivers/gpu/drm/ttm/ttm_bo_vm.c
> index 708390588c7c..fd6e18f12f50 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo_vm.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c
> @@ -163,8 +163,10 @@ vm_fault_t ttm_bo_vm_reserve(struct ttm_buffer_object *bo,
>   	 * (if at all) by redirecting mmap to the exporter.
>   	 */
>   	if (bo->ttm && (bo->ttm->page_flags & TTM_PAGE_FLAG_EXTERNAL)) {
> -		dma_resv_unlock(bo->base.resv);
> -		return VM_FAULT_SIGBUS;
> +		if (!(bo->ttm->page_flags & TTM_PAGE_FLAG_EXTERNAL_MAPPABLE)) {
> +			dma_resv_unlock(bo->base.resv);
> +			return VM_FAULT_SIGBUS;
> +		}
>   	}
>   
>   	return 0;
> diff --git a/include/drm/ttm/ttm_tt.h b/include/drm/ttm/ttm_tt.h
> index 7f54a83c95ef..800c9edb3e10 100644
> --- a/include/drm/ttm/ttm_tt.h
> +++ b/include/drm/ttm/ttm_tt.h
> @@ -66,11 +66,18 @@ struct ttm_tt {
>   	 * Note that enum ttm_bo_type.ttm_bo_type_sg objects will always enable
>   	 * this flag.
>   	 *
> +	 * TTM_PAGE_FLAG_EXTERNAL_MAPPABLE: Same behaviour as
> +	 * TTM_PAGE_FLAG_EXTERNAL, but with the reduced restriction that it is
> +	 * still valid to use TTM to map the pages directly. This is useful when
> +	 * implementing a ttm_tt backend which still allocates driver owned
> +	 * pages underneath(say with shmem).
> +	 *
>   	 * TTM_PAGE_FLAG_PRIV_POPULATED: TTM internal only. DO NOT USE.
>   	 */
>   #define TTM_PAGE_FLAG_SWAPPED		(1 << 0)
>   #define TTM_PAGE_FLAG_ZERO_ALLOC	(1 << 1)
>   #define TTM_PAGE_FLAG_EXTERNAL		(1 << 2)
> +#define TTM_PAGE_FLAG_EXTERNAL_MAPPABLE	(1 << 3 | TTM_PAGE_FLAG_EXTERNAL)

That's really bad practice because an "if (!(flags & 
TTM_PAGE_FLAG_EXTERNAL_MAPPABLE))" has a different semantics as an "if 
(flags & TTM_PAGE_FLAG_EXTERNAL_MAPPABLE)".

Rather add a TTM_PAGE_FLAG_UNMAPPABLE and make sure that it is set as 
appropriated.

Regards,
Christian.

>   
>   #define TTM_PAGE_FLAG_PRIV_POPULATED	(1 << 31)
>   	uint32_t page_flags;


  reply	other threads:[~2021-09-16  6:55 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-15 18:59 [Intel-gfx] [PATCH v3 01/12] drm/ttm: stop setting page->index for the ttm_tt Matthew Auld
2021-09-15 18:59 ` Matthew Auld
2021-09-15 18:59 ` [Intel-gfx] [PATCH v3 02/12] drm/ttm: move ttm_tt_{add, clear}_mapping into amdgpu Matthew Auld
2021-09-15 18:59   ` Matthew Auld
2021-09-16  6:45   ` [Intel-gfx] " Christian König
2021-09-16  6:45     ` [PATCH v3 02/12] drm/ttm: move ttm_tt_{add,clear}_mapping " Christian König
2021-09-15 18:59 ` [Intel-gfx] [PATCH v3 03/12] drm/ttm: remove TTM_PAGE_FLAG_NO_RETRY Matthew Auld
2021-09-15 18:59   ` Matthew Auld
2021-09-16  6:46   ` [Intel-gfx] " Christian König
2021-09-16  6:46     ` Christian König
2021-09-15 18:59 ` [Intel-gfx] [PATCH v3 04/12] drm/ttm: s/FLAG_SG/FLAG_EXTERNAL/ Matthew Auld
2021-09-15 18:59   ` Matthew Auld
2021-09-16  6:50   ` [Intel-gfx] " Christian König
2021-09-16  6:50     ` Christian König
2021-09-15 18:59 ` [Intel-gfx] [PATCH v3 05/12] drm/ttm: add some kernel-doc for TTM_PAGE_FLAG_* Matthew Auld
2021-09-15 18:59   ` Matthew Auld
2021-09-16  6:52   ` [Intel-gfx] " Christian König
2021-09-16  6:52     ` Christian König
2021-09-15 18:59 ` [Intel-gfx] [PATCH v3 06/12] drm/ttm: add TTM_PAGE_FLAG_EXTERNAL_MAPPABLE Matthew Auld
2021-09-15 18:59   ` Matthew Auld
2021-09-16  6:55   ` Christian König [this message]
2021-09-16  6:55     ` Christian König
2021-09-16  9:03     ` [Intel-gfx] " Thomas Hellström
2021-09-16  9:03       ` Thomas Hellström
2021-09-16  9:58       ` [Intel-gfx] " Matthew Auld
2021-09-16  9:58         ` Matthew Auld
2021-09-16 10:06         ` [Intel-gfx] " Thomas Hellström
2021-09-16 10:06           ` Thomas Hellström
2021-09-15 18:59 ` [Intel-gfx] [PATCH v3 07/12] drm/i915/gem: Break out some shmem backend utils Matthew Auld
2021-09-15 18:59   ` Matthew Auld
2021-09-15 18:59 ` [Intel-gfx] [PATCH v3 08/12] drm/i915/ttm: add tt shmem backend Matthew Auld
2021-09-15 18:59   ` Matthew Auld
2021-09-16 13:45   ` [Intel-gfx] " Thomas Hellström
2021-09-16 13:45     ` Thomas Hellström
2021-09-15 18:59 ` [Intel-gfx] [PATCH v3 09/12] drm/i915/ttm: use cached system pages when evicting lmem Matthew Auld
2021-09-15 18:59   ` Matthew Auld
2021-09-15 18:59 ` [Intel-gfx] [PATCH v3 10/12] drm/i915: try to simplify make_{un}shrinkable Matthew Auld
2021-09-15 18:59   ` Matthew Auld
2021-09-15 18:59 ` [Intel-gfx] [PATCH v3 11/12] drm/i915/ttm: make evicted shmem pages visible to the shrinker Matthew Auld
2021-09-15 18:59   ` Matthew Auld
2021-09-15 18:59 ` [Intel-gfx] [PATCH v3 12/12] drm/i915/ttm: enable shmem tt backend Matthew Auld
2021-09-15 18:59   ` Matthew Auld
2021-09-15 19:32 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [v3,01/12] drm/ttm: stop setting page->index for the ttm_tt Patchwork
2021-09-15 19:34 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2021-09-15 20:01 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork
2021-09-16  6:47 ` [Intel-gfx] [PATCH v3 01/12] " Christian König
2021-09-16  6:47   ` 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=00e355ba-fa5a-945e-d9ea-48260a2c56ae@amd.com \
    --to=christian.koenig@amd.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=matthew.auld@intel.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.