All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] drm/amdgpu: use ctx bytes_moved
@ 2018-04-09 10:18 Christian König
       [not found] ` <20180409101900.2790-1-christian.koenig-5C7GfCeVMHo@public.gmane.org>
  0 siblings, 1 reply; 9+ messages in thread
From: Christian König @ 2018-04-09 10:18 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

Instead of the global (inaccurate) counter.

Signed-off-by: Christian König <christian.koenig@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
index d7d7ce1507ec..de69ab12bb55 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
@@ -412,7 +412,6 @@ static bool amdgpu_cs_try_evict(struct amdgpu_cs_parser *p,
 		struct amdgpu_bo_list_entry *candidate = p->evictable;
 		struct amdgpu_bo *bo = candidate->robj;
 		struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev);
-		u64 initial_bytes_moved, bytes_moved;
 		bool update_bytes_moved_vis;
 		uint32_t other;
 
@@ -436,18 +435,15 @@ static bool amdgpu_cs_try_evict(struct amdgpu_cs_parser *p,
 			continue;
 
 		/* Good we can try to move this BO somewhere else */
-		amdgpu_ttm_placement_from_domain(bo, other);
 		update_bytes_moved_vis =
 			adev->gmc.visible_vram_size < adev->gmc.real_vram_size &&
 			bo->tbo.mem.mem_type == TTM_PL_VRAM &&
 			bo->tbo.mem.start < adev->gmc.visible_vram_size >> PAGE_SHIFT;
-		initial_bytes_moved = atomic64_read(&adev->num_bytes_moved);
+		amdgpu_ttm_placement_from_domain(bo, other);
 		r = ttm_bo_validate(&bo->tbo, &bo->placement, &ctx);
-		bytes_moved = atomic64_read(&adev->num_bytes_moved) -
-			initial_bytes_moved;
-		p->bytes_moved += bytes_moved;
+		p->bytes_moved += ctx.bytes_moved;
 		if (update_bytes_moved_vis)
-			p->bytes_moved_vis += bytes_moved;
+			p->bytes_moved_vis += ctx.bytes_moved;
 
 		if (unlikely(r))
 			break;
-- 
2.14.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 2/3] drm/amdgpu: fix and cleanup cpu visible VRAM handling
       [not found] ` <20180409101900.2790-1-christian.koenig-5C7GfCeVMHo@public.gmane.org>
@ 2018-04-09 10:18   ` Christian König
       [not found]     ` <20180409101900.2790-2-christian.koenig-5C7GfCeVMHo@public.gmane.org>
  2018-04-09 10:19   ` [PATCH 3/3] drm/amdgpu: remove AMDGPU_GEM_CREATE_NO_FALLBACK handling from CS again Christian König
  2018-04-10  2:34   ` [PATCH 1/3] drm/amdgpu: use ctx bytes_moved zhoucm1
  2 siblings, 1 reply; 9+ messages in thread
From: Christian König @ 2018-04-09 10:18 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

The detection if a BO was placed in CPU visible VRAM was incorrect.

Fix it and merge it with the correct detection in amdgpu_ttm.c

Signed-off-by: Christian König <christian.koenig@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c     |  6 ++----
 drivers/gpu/drm/amd/amdgpu/amdgpu_object.h | 21 +++++++++++++++++++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c    | 19 +++----------------
 3 files changed, 26 insertions(+), 20 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
index de69ab12bb55..68af2f878bc9 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
@@ -382,8 +382,7 @@ static int amdgpu_cs_bo_validate(struct amdgpu_cs_parser *p,
 
 	p->bytes_moved += ctx.bytes_moved;
 	if (adev->gmc.visible_vram_size < adev->gmc.real_vram_size &&
-	    bo->tbo.mem.mem_type == TTM_PL_VRAM &&
-	    bo->tbo.mem.start < adev->gmc.visible_vram_size >> PAGE_SHIFT)
+	    amdgpu_bo_in_cpu_visible_vram(bo))
 		p->bytes_moved_vis += ctx.bytes_moved;
 
 	if (unlikely(r == -ENOMEM) && domain != bo->allowed_domains &&
@@ -437,8 +436,7 @@ static bool amdgpu_cs_try_evict(struct amdgpu_cs_parser *p,
 		/* Good we can try to move this BO somewhere else */
 		update_bytes_moved_vis =
 			adev->gmc.visible_vram_size < adev->gmc.real_vram_size &&
-			bo->tbo.mem.mem_type == TTM_PL_VRAM &&
-			bo->tbo.mem.start < adev->gmc.visible_vram_size >> PAGE_SHIFT;
+			amdgpu_bo_in_cpu_visible_vram(bo);
 		amdgpu_ttm_placement_from_domain(bo, other);
 		r = ttm_bo_validate(&bo->tbo, &bo->placement, &ctx);
 		p->bytes_moved += ctx.bytes_moved;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
index deb10ecd89a1..0e9555526950 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
@@ -193,6 +193,27 @@ static inline bool amdgpu_bo_gpu_accessible(struct amdgpu_bo *bo)
 	}
 }
 
+/**
+ * amdgpu_bo_in_cpu_visible_vram - check if BO is (partly) in visible VRAM
+ */
+static inline bool amdgpu_bo_in_cpu_visible_vram(struct amdgpu_bo *bo)
+{
+	struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev);
+	unsigned fpfn = adev->gmc.visible_vram_size >> PAGE_SHIFT;
+	struct drm_mm_node *node = bo->tbo.mem.mm_node;
+	unsigned long pages_left;
+
+	if (bo->tbo.mem.mem_type != TTM_PL_VRAM)
+		return false;
+
+	for (pages_left = bo->tbo.mem.num_pages; pages_left;
+	     pages_left -= node->size, node++)
+		if (node->start < fpfn)
+			return true;
+
+	return false;
+}
+
 /**
  * amdgpu_bo_explicit_sync - return whether the bo is explicitly synced
  */
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index d2ab40494a4c..ab829fb3e840 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -222,20 +222,8 @@ static void amdgpu_evict_flags(struct ttm_buffer_object *bo,
 		if (!adev->mman.buffer_funcs_enabled) {
 			amdgpu_ttm_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_CPU);
 		} else if (adev->gmc.visible_vram_size < adev->gmc.real_vram_size &&
-			   !(abo->flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED)) {
-			unsigned fpfn = adev->gmc.visible_vram_size >> PAGE_SHIFT;
-			struct drm_mm_node *node = bo->mem.mm_node;
-			unsigned long pages_left;
-
-			for (pages_left = bo->mem.num_pages;
-			     pages_left;
-			     pages_left -= node->size, node++) {
-				if (node->start < fpfn)
-					break;
-			}
-
-			if (!pages_left)
-				goto gtt;
+			   !(abo->flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) &&
+			   amdgpu_bo_in_cpu_visible_vram(abo)) {
 
 			/* Try evicting to the CPU inaccessible part of VRAM
 			 * first, but only set GTT as busy placement, so this
@@ -244,12 +232,11 @@ static void amdgpu_evict_flags(struct ttm_buffer_object *bo,
 			 */
 			amdgpu_ttm_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_VRAM |
 							 AMDGPU_GEM_DOMAIN_GTT);
-			abo->placements[0].fpfn = fpfn;
+			abo->placements[0].fpfn = adev->gmc.visible_vram_size >> PAGE_SHIFT;
 			abo->placements[0].lpfn = 0;
 			abo->placement.busy_placement = &abo->placements[1];
 			abo->placement.num_busy_placement = 1;
 		} else {
-gtt:
 			amdgpu_ttm_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_GTT);
 		}
 		break;
-- 
2.14.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 3/3] drm/amdgpu: remove AMDGPU_GEM_CREATE_NO_FALLBACK handling from CS again
       [not found] ` <20180409101900.2790-1-christian.koenig-5C7GfCeVMHo@public.gmane.org>
  2018-04-09 10:18   ` [PATCH 2/3] drm/amdgpu: fix and cleanup cpu visible VRAM handling Christian König
@ 2018-04-09 10:19   ` Christian König
       [not found]     ` <20180409101900.2790-3-christian.koenig-5C7GfCeVMHo@public.gmane.org>
  2018-04-10  2:34   ` [PATCH 1/3] drm/amdgpu: use ctx bytes_moved zhoucm1
  2 siblings, 1 reply; 9+ messages in thread
From: Christian König @ 2018-04-09 10:19 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

That should purely be handled by preferred/allowed domains.

Signed-off-by: Christian König <christian.koenig@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
index 68af2f878bc9..e1756b68a17b 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
@@ -385,8 +385,7 @@ static int amdgpu_cs_bo_validate(struct amdgpu_cs_parser *p,
 	    amdgpu_bo_in_cpu_visible_vram(bo))
 		p->bytes_moved_vis += ctx.bytes_moved;
 
-	if (unlikely(r == -ENOMEM) && domain != bo->allowed_domains &&
-	    !(bo->flags & AMDGPU_GEM_CREATE_NO_FALLBACK)) {
+	if (unlikely(r == -ENOMEM) && domain != bo->allowed_domains) {
 		domain = bo->allowed_domains;
 		goto retry;
 	}
-- 
2.14.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/3] drm/amdgpu: fix and cleanup cpu visible VRAM handling
       [not found]     ` <20180409101900.2790-2-christian.koenig-5C7GfCeVMHo@public.gmane.org>
@ 2018-04-09 10:52       ` Michel Dänzer
  2018-04-10  2:38       ` zhoucm1
  1 sibling, 0 replies; 9+ messages in thread
From: Michel Dänzer @ 2018-04-09 10:52 UTC (permalink / raw)
  To: Christian König; +Cc: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

On 2018-04-09 12:18 PM, Christian König wrote:
> The detection if a BO was placed in CPU visible VRAM was incorrect.
> 
> Fix it and merge it with the correct detection in amdgpu_ttm.c
> 
> Signed-off-by: Christian König <christian.koenig@amd.com>

Good catch! All three patches are

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>


-- 
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 1/3] drm/amdgpu: use ctx bytes_moved
       [not found] ` <20180409101900.2790-1-christian.koenig-5C7GfCeVMHo@public.gmane.org>
  2018-04-09 10:18   ` [PATCH 2/3] drm/amdgpu: fix and cleanup cpu visible VRAM handling Christian König
  2018-04-09 10:19   ` [PATCH 3/3] drm/amdgpu: remove AMDGPU_GEM_CREATE_NO_FALLBACK handling from CS again Christian König
@ 2018-04-10  2:34   ` zhoucm1
  2 siblings, 0 replies; 9+ messages in thread
From: zhoucm1 @ 2018-04-10  2:34 UTC (permalink / raw)
  To: Christian König, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW



On 2018年04月09日 18:18, Christian König wrote:
> Instead of the global (inaccurate) counter.
>
> Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Chunming Zhou <david1.zhou@amd.com>

> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 10 +++-------
>   1 file changed, 3 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> index d7d7ce1507ec..de69ab12bb55 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> @@ -412,7 +412,6 @@ static bool amdgpu_cs_try_evict(struct amdgpu_cs_parser *p,
>   		struct amdgpu_bo_list_entry *candidate = p->evictable;
>   		struct amdgpu_bo *bo = candidate->robj;
>   		struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev);
> -		u64 initial_bytes_moved, bytes_moved;
>   		bool update_bytes_moved_vis;
>   		uint32_t other;
>   
> @@ -436,18 +435,15 @@ static bool amdgpu_cs_try_evict(struct amdgpu_cs_parser *p,
>   			continue;
>   
>   		/* Good we can try to move this BO somewhere else */
> -		amdgpu_ttm_placement_from_domain(bo, other);
>   		update_bytes_moved_vis =
>   			adev->gmc.visible_vram_size < adev->gmc.real_vram_size &&
>   			bo->tbo.mem.mem_type == TTM_PL_VRAM &&
>   			bo->tbo.mem.start < adev->gmc.visible_vram_size >> PAGE_SHIFT;
> -		initial_bytes_moved = atomic64_read(&adev->num_bytes_moved);
> +		amdgpu_ttm_placement_from_domain(bo, other);
>   		r = ttm_bo_validate(&bo->tbo, &bo->placement, &ctx);
> -		bytes_moved = atomic64_read(&adev->num_bytes_moved) -
> -			initial_bytes_moved;
> -		p->bytes_moved += bytes_moved;
> +		p->bytes_moved += ctx.bytes_moved;
>   		if (update_bytes_moved_vis)
> -			p->bytes_moved_vis += bytes_moved;
> +			p->bytes_moved_vis += ctx.bytes_moved;
>   
>   		if (unlikely(r))
>   			break;

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 2/3] drm/amdgpu: fix and cleanup cpu visible VRAM handling
       [not found]     ` <20180409101900.2790-2-christian.koenig-5C7GfCeVMHo@public.gmane.org>
  2018-04-09 10:52       ` Michel Dänzer
@ 2018-04-10  2:38       ` zhoucm1
  1 sibling, 0 replies; 9+ messages in thread
From: zhoucm1 @ 2018-04-10  2:38 UTC (permalink / raw)
  To: Christian König, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW



On 2018年04月09日 18:18, Christian König wrote:
> The detection if a BO was placed in CPU visible VRAM was incorrect.
>
> Fix it and merge it with the correct detection in amdgpu_ttm.c
>
> Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Chunming Zhou <david1.zhou@amd.com>

> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c     |  6 ++----
>   drivers/gpu/drm/amd/amdgpu/amdgpu_object.h | 21 +++++++++++++++++++++
>   drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c    | 19 +++----------------
>   3 files changed, 26 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> index de69ab12bb55..68af2f878bc9 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> @@ -382,8 +382,7 @@ static int amdgpu_cs_bo_validate(struct amdgpu_cs_parser *p,
>   
>   	p->bytes_moved += ctx.bytes_moved;
>   	if (adev->gmc.visible_vram_size < adev->gmc.real_vram_size &&
> -	    bo->tbo.mem.mem_type == TTM_PL_VRAM &&
> -	    bo->tbo.mem.start < adev->gmc.visible_vram_size >> PAGE_SHIFT)
> +	    amdgpu_bo_in_cpu_visible_vram(bo))
>   		p->bytes_moved_vis += ctx.bytes_moved;
>   
>   	if (unlikely(r == -ENOMEM) && domain != bo->allowed_domains &&
> @@ -437,8 +436,7 @@ static bool amdgpu_cs_try_evict(struct amdgpu_cs_parser *p,
>   		/* Good we can try to move this BO somewhere else */
>   		update_bytes_moved_vis =
>   			adev->gmc.visible_vram_size < adev->gmc.real_vram_size &&
> -			bo->tbo.mem.mem_type == TTM_PL_VRAM &&
> -			bo->tbo.mem.start < adev->gmc.visible_vram_size >> PAGE_SHIFT;
> +			amdgpu_bo_in_cpu_visible_vram(bo);
>   		amdgpu_ttm_placement_from_domain(bo, other);
>   		r = ttm_bo_validate(&bo->tbo, &bo->placement, &ctx);
>   		p->bytes_moved += ctx.bytes_moved;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
> index deb10ecd89a1..0e9555526950 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
> @@ -193,6 +193,27 @@ static inline bool amdgpu_bo_gpu_accessible(struct amdgpu_bo *bo)
>   	}
>   }
>   
> +/**
> + * amdgpu_bo_in_cpu_visible_vram - check if BO is (partly) in visible VRAM
> + */
> +static inline bool amdgpu_bo_in_cpu_visible_vram(struct amdgpu_bo *bo)
> +{
> +	struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev);
> +	unsigned fpfn = adev->gmc.visible_vram_size >> PAGE_SHIFT;
> +	struct drm_mm_node *node = bo->tbo.mem.mm_node;
> +	unsigned long pages_left;
> +
> +	if (bo->tbo.mem.mem_type != TTM_PL_VRAM)
> +		return false;
> +
> +	for (pages_left = bo->tbo.mem.num_pages; pages_left;
> +	     pages_left -= node->size, node++)
> +		if (node->start < fpfn)
> +			return true;
> +
> +	return false;
> +}
> +
>   /**
>    * amdgpu_bo_explicit_sync - return whether the bo is explicitly synced
>    */
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index d2ab40494a4c..ab829fb3e840 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -222,20 +222,8 @@ static void amdgpu_evict_flags(struct ttm_buffer_object *bo,
>   		if (!adev->mman.buffer_funcs_enabled) {
>   			amdgpu_ttm_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_CPU);
>   		} else if (adev->gmc.visible_vram_size < adev->gmc.real_vram_size &&
> -			   !(abo->flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED)) {
> -			unsigned fpfn = adev->gmc.visible_vram_size >> PAGE_SHIFT;
> -			struct drm_mm_node *node = bo->mem.mm_node;
> -			unsigned long pages_left;
> -
> -			for (pages_left = bo->mem.num_pages;
> -			     pages_left;
> -			     pages_left -= node->size, node++) {
> -				if (node->start < fpfn)
> -					break;
> -			}
> -
> -			if (!pages_left)
> -				goto gtt;
> +			   !(abo->flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) &&
> +			   amdgpu_bo_in_cpu_visible_vram(abo)) {
>   
>   			/* Try evicting to the CPU inaccessible part of VRAM
>   			 * first, but only set GTT as busy placement, so this
> @@ -244,12 +232,11 @@ static void amdgpu_evict_flags(struct ttm_buffer_object *bo,
>   			 */
>   			amdgpu_ttm_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_VRAM |
>   							 AMDGPU_GEM_DOMAIN_GTT);
> -			abo->placements[0].fpfn = fpfn;
> +			abo->placements[0].fpfn = adev->gmc.visible_vram_size >> PAGE_SHIFT;
>   			abo->placements[0].lpfn = 0;
>   			abo->placement.busy_placement = &abo->placements[1];
>   			abo->placement.num_busy_placement = 1;
>   		} else {
> -gtt:
>   			amdgpu_ttm_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_GTT);
>   		}
>   		break;

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 3/3] drm/amdgpu: remove AMDGPU_GEM_CREATE_NO_FALLBACK handling from CS again
       [not found]     ` <20180409101900.2790-3-christian.koenig-5C7GfCeVMHo@public.gmane.org>
@ 2018-04-10  2:43       ` zhoucm1
       [not found]         ` <11e2b937-9e84-428a-1a90-8752f0dadda4-5C7GfCeVMHo@public.gmane.org>
  0 siblings, 1 reply; 9+ messages in thread
From: zhoucm1 @ 2018-04-10  2:43 UTC (permalink / raw)
  To: Christian König, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW



On 2018年04月09日 18:19, Christian König wrote:
> That should purely be handled by preferred/allowed domains.
Although this flag isn't exported to user space yet, I'm curious that 
how preferred/allowed domains handle no_fallback?
IIRC, currently, our driver will always add GTT fallback for VRAM bo.

Regards,
David Zhou
>
> Signed-off-by: Christian König <christian.koenig@amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 3 +--
>   1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> index 68af2f878bc9..e1756b68a17b 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> @@ -385,8 +385,7 @@ static int amdgpu_cs_bo_validate(struct amdgpu_cs_parser *p,
>   	    amdgpu_bo_in_cpu_visible_vram(bo))
>   		p->bytes_moved_vis += ctx.bytes_moved;
>   
> -	if (unlikely(r == -ENOMEM) && domain != bo->allowed_domains &&
> -	    !(bo->flags & AMDGPU_GEM_CREATE_NO_FALLBACK)) {
> +	if (unlikely(r == -ENOMEM) && domain != bo->allowed_domains) {
>   		domain = bo->allowed_domains;
>   		goto retry;
>   	}

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 3/3] drm/amdgpu: remove AMDGPU_GEM_CREATE_NO_FALLBACK handling from CS again
       [not found]         ` <11e2b937-9e84-428a-1a90-8752f0dadda4-5C7GfCeVMHo@public.gmane.org>
@ 2018-04-10  9:00           ` Christian König
       [not found]             ` <94eedefc-bd56-652f-39cf-7331bc5892ea-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 9+ messages in thread
From: Christian König @ 2018-04-10  9:00 UTC (permalink / raw)
  To: zhoucm1, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

Am 10.04.2018 um 04:43 schrieb zhoucm1:
>
>
> On 2018年04月09日 18:19, Christian König wrote:
>> That should purely be handled by preferred/allowed domains.
> Although this flag isn't exported to user space yet, I'm curious that 
> how preferred/allowed domains handle no_fallback?
> IIRC, currently, our driver will always add GTT fallback for VRAM bo.

And that is intentional. Going a step further back I think moving the 
fallback handling into amdgpu_bo_do_create() and adding the flag was a 
mistake to begin with.

Going to send patches to revert all this and further clean the stuff up.

Regards,
Christian.

>
> Regards,
> David Zhou
>>
>> Signed-off-by: Christian König <christian.koenig@amd.com>
>> ---
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 3 +--
>>   1 file changed, 1 insertion(+), 2 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c 
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
>> index 68af2f878bc9..e1756b68a17b 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
>> @@ -385,8 +385,7 @@ static int amdgpu_cs_bo_validate(struct 
>> amdgpu_cs_parser *p,
>>           amdgpu_bo_in_cpu_visible_vram(bo))
>>           p->bytes_moved_vis += ctx.bytes_moved;
>>   -    if (unlikely(r == -ENOMEM) && domain != bo->allowed_domains &&
>> -        !(bo->flags & AMDGPU_GEM_CREATE_NO_FALLBACK)) {
>> +    if (unlikely(r == -ENOMEM) && domain != bo->allowed_domains) {
>>           domain = bo->allowed_domains;
>>           goto retry;
>>       }
>

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 3/3] drm/amdgpu: remove AMDGPU_GEM_CREATE_NO_FALLBACK handling from CS again
       [not found]             ` <94eedefc-bd56-652f-39cf-7331bc5892ea-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2018-04-10  9:06               ` zhoucm1
  0 siblings, 0 replies; 9+ messages in thread
From: zhoucm1 @ 2018-04-10  9:06 UTC (permalink / raw)
  To: christian.koenig-5C7GfCeVMHo, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW



On 2018年04月10日 17:00, Christian König wrote:
> Am 10.04.2018 um 04:43 schrieb zhoucm1:
>>
>>
>> On 2018年04月09日 18:19, Christian König wrote:
>>> That should purely be handled by preferred/allowed domains.
>> Although this flag isn't exported to user space yet, I'm curious that 
>> how preferred/allowed domains handle no_fallback?
>> IIRC, currently, our driver will always add GTT fallback for VRAM bo.
>
> And that is intentional. Going a step further back I think moving the 
> fallback handling into amdgpu_bo_do_create() and adding the flag was a 
> mistake to begin with.
>
> Going to send patches to revert all this and further clean the stuff up.
if you are able to not change the preferred domain when fallback, it's 
no problem to me.

David Zhou
>
> Regards,
> Christian.
>
>>
>> Regards,
>> David Zhou
>>>
>>> Signed-off-by: Christian König <christian.koenig@amd.com>
>>> ---
>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 3 +--
>>>   1 file changed, 1 insertion(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c 
>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
>>> index 68af2f878bc9..e1756b68a17b 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
>>> @@ -385,8 +385,7 @@ static int amdgpu_cs_bo_validate(struct 
>>> amdgpu_cs_parser *p,
>>>           amdgpu_bo_in_cpu_visible_vram(bo))
>>>           p->bytes_moved_vis += ctx.bytes_moved;
>>>   -    if (unlikely(r == -ENOMEM) && domain != bo->allowed_domains &&
>>> -        !(bo->flags & AMDGPU_GEM_CREATE_NO_FALLBACK)) {
>>> +    if (unlikely(r == -ENOMEM) && domain != bo->allowed_domains) {
>>>           domain = bo->allowed_domains;
>>>           goto retry;
>>>       }
>>
>

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2018-04-10  9:06 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-09 10:18 [PATCH 1/3] drm/amdgpu: use ctx bytes_moved Christian König
     [not found] ` <20180409101900.2790-1-christian.koenig-5C7GfCeVMHo@public.gmane.org>
2018-04-09 10:18   ` [PATCH 2/3] drm/amdgpu: fix and cleanup cpu visible VRAM handling Christian König
     [not found]     ` <20180409101900.2790-2-christian.koenig-5C7GfCeVMHo@public.gmane.org>
2018-04-09 10:52       ` Michel Dänzer
2018-04-10  2:38       ` zhoucm1
2018-04-09 10:19   ` [PATCH 3/3] drm/amdgpu: remove AMDGPU_GEM_CREATE_NO_FALLBACK handling from CS again Christian König
     [not found]     ` <20180409101900.2790-3-christian.koenig-5C7GfCeVMHo@public.gmane.org>
2018-04-10  2:43       ` zhoucm1
     [not found]         ` <11e2b937-9e84-428a-1a90-8752f0dadda4-5C7GfCeVMHo@public.gmane.org>
2018-04-10  9:00           ` Christian König
     [not found]             ` <94eedefc-bd56-652f-39cf-7331bc5892ea-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2018-04-10  9:06               ` zhoucm1
2018-04-10  2:34   ` [PATCH 1/3] drm/amdgpu: use ctx bytes_moved zhoucm1

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.