All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/5] drm/radeon: fix radeon_move_blit on 32bit systems
@ 2016-08-17 12:26 Christian König
       [not found] ` <1471436784-13252-1-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
  0 siblings, 1 reply; 11+ messages in thread
From: Christian König @ 2016-08-17 12:26 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

From: Christian König <christian.koenig@amd.com>

This bug seems to be present for a very long time.

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

diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
index 0c00e19..c2e0a1c 100644
--- a/drivers/gpu/drm/radeon/radeon_ttm.c
+++ b/drivers/gpu/drm/radeon/radeon_ttm.c
@@ -263,8 +263,8 @@ static int radeon_move_blit(struct ttm_buffer_object *bo,
 
 	rdev = radeon_get_rdev(bo->bdev);
 	ridx = radeon_copy_ring_index(rdev);
-	old_start = old_mem->start << PAGE_SHIFT;
-	new_start = new_mem->start << PAGE_SHIFT;
+	old_start = (u64)old_mem->start << PAGE_SHIFT;
+	new_start = (u64)new_mem->start << PAGE_SHIFT;
 
 	switch (old_mem->mem_type) {
 	case TTM_PL_VRAM:
-- 
2.5.0

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

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

* [PATCH 2/5] drm/amdgpu: fix amdgpu_move_blit on 32bit systems
       [not found] ` <1471436784-13252-1-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
@ 2016-08-17 12:26   ` Christian König
  2016-08-17 12:26   ` [PATCH 3/5] drm/amdgpu: fix lru size grouping Christian König
                     ` (3 subsequent siblings)
  4 siblings, 0 replies; 11+ messages in thread
From: Christian König @ 2016-08-17 12:26 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

From: Christian König <christian.koenig@amd.com>

This bug seems to be present for a very long time.

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

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index 105bd22..f5dc87e 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -252,8 +252,8 @@ static int amdgpu_move_blit(struct ttm_buffer_object *bo,
 
 	adev = amdgpu_get_adev(bo->bdev);
 	ring = adev->mman.buffer_funcs_ring;
-	old_start = old_mem->start << PAGE_SHIFT;
-	new_start = new_mem->start << PAGE_SHIFT;
+	old_start = (u64)old_mem->start << PAGE_SHIFT;
+	new_start = (u64)new_mem->start << PAGE_SHIFT;
 
 	switch (old_mem->mem_type) {
 	case TTM_PL_VRAM:
-- 
2.5.0

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

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

* [PATCH 3/5] drm/amdgpu: fix lru size grouping
       [not found] ` <1471436784-13252-1-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
  2016-08-17 12:26   ` [PATCH 2/5] drm/amdgpu: fix amdgpu_move_blit " Christian König
@ 2016-08-17 12:26   ` Christian König
       [not found]     ` <1471436784-13252-3-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
  2016-08-17 12:26   ` [PATCH 4/5] drm/amdgpu: fix sdma_v2_4_ring_test_ib Christian König
                     ` (2 subsequent siblings)
  4 siblings, 1 reply; 11+ messages in thread
From: Christian König @ 2016-08-17 12:26 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

From: Christian König <christian.koenig@amd.com>

Adding a BO can make it the insertion point for larger sizes as well.

Signed-off-by: Christian König <christian.koenig@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu.h     | 1 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 8 ++++++++
 2 files changed, 9 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index a55eb6f..1f6de92 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -428,6 +428,7 @@ struct amdgpu_mman {
 
 	/* custom LRU management */
 	struct amdgpu_mman_lru			log2_size[AMDGPU_TTM_LRU_SIZE];
+	struct amdgpu_mman_lru			guard;
 };
 
 int amdgpu_copy_buffer(struct amdgpu_ring *ring,
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index f5dc87e..1a12ce0 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -951,6 +951,8 @@ static struct list_head *amdgpu_ttm_lru_tail(struct ttm_buffer_object *tbo)
 	struct list_head *res = lru->lru[tbo->mem.mem_type];
 
 	lru->lru[tbo->mem.mem_type] = &tbo->lru;
+	while ((++lru)->lru[tbo->mem.mem_type] == res)
+		lru->lru[tbo->mem.mem_type] = &tbo->lru;
 
 	return res;
 }
@@ -961,6 +963,8 @@ static struct list_head *amdgpu_ttm_swap_lru_tail(struct ttm_buffer_object *tbo)
 	struct list_head *res = lru->swap_lru;
 
 	lru->swap_lru = &tbo->swap;
+	while ((++lru)->swap_lru == res)
+		lru->swap_lru = &tbo->swap;
 
 	return res;
 }
@@ -1008,6 +1012,10 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
 		lru->swap_lru = &adev->mman.bdev.glob->swap_lru;
 	}
 
+	for (j = 0; j < TTM_NUM_MEM_TYPES; ++j)
+		adev->mman.guard.lru[j] = NULL;
+	adev->mman.guard.swap_lru = NULL;
+
 	adev->mman.initialized = true;
 	r = ttm_bo_init_mm(&adev->mman.bdev, TTM_PL_VRAM,
 				adev->mc.real_vram_size >> PAGE_SHIFT);
-- 
2.5.0

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

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

* [PATCH 4/5] drm/amdgpu: fix sdma_v2_4_ring_test_ib
       [not found] ` <1471436784-13252-1-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
  2016-08-17 12:26   ` [PATCH 2/5] drm/amdgpu: fix amdgpu_move_blit " Christian König
  2016-08-17 12:26   ` [PATCH 3/5] drm/amdgpu: fix lru size grouping Christian König
@ 2016-08-17 12:26   ` Christian König
       [not found]     ` <1471436784-13252-4-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
  2016-08-17 12:26   ` [PATCH 5/5] drm/amdgpu: fix timeout value check in amd_sched_job_recovery Christian König
  2016-08-17 14:39   ` [PATCH 1/5] drm/radeon: fix radeon_move_blit on 32bit systems Alex Deucher
  4 siblings, 1 reply; 11+ messages in thread
From: Christian König @ 2016-08-17 12:26 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

From: Christian König <christian.koenig@amd.com>

Typo in checking the return code.

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

diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
index e822296..2b10e88 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
@@ -714,7 +714,7 @@ static int sdma_v2_4_ring_test_ib(struct amdgpu_ring *ring, long timeout)
 		DRM_ERROR("amdgpu: IB test timed out\n");
 		r = -ETIMEDOUT;
 		goto err1;
-	} else if (r) {
+	} else if (r < 0) {
 		DRM_ERROR("amdgpu: fence wait failed (%ld).\n", r);
 		goto err1;
 	}
-- 
2.5.0

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

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

* [PATCH 5/5] drm/amdgpu: fix timeout value check in amd_sched_job_recovery
       [not found] ` <1471436784-13252-1-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
                     ` (2 preceding siblings ...)
  2016-08-17 12:26   ` [PATCH 4/5] drm/amdgpu: fix sdma_v2_4_ring_test_ib Christian König
@ 2016-08-17 12:26   ` Christian König
       [not found]     ` <1471436784-13252-5-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
  2016-08-17 14:39   ` [PATCH 1/5] drm/radeon: fix radeon_move_blit on 32bit systems Alex Deucher
  4 siblings, 1 reply; 11+ messages in thread
From: Christian König @ 2016-08-17 12:26 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

From: Christian König <christian.koenig@amd.com>

Could be that we don't actually have a timeout set.

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

diff --git a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c
index f96aa82..f3fc10f 100644
--- a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c
+++ b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c
@@ -407,7 +407,7 @@ void amd_sched_job_recovery(struct amd_gpu_scheduler *sched)
 	spin_lock(&sched->job_list_lock);
 	s_job = list_first_entry_or_null(&sched->ring_mirror_list,
 					 struct amd_sched_job, node);
-	if (s_job)
+	if (s_job && sched->timeout != MAX_SCHEDULE_TIMEOUT)
 		schedule_delayed_work(&s_job->work_tdr, sched->timeout);
 
 	list_for_each_entry_safe(s_job, tmp, &sched->ring_mirror_list, node) {
-- 
2.5.0

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

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

* Re: [PATCH 1/5] drm/radeon: fix radeon_move_blit on 32bit systems
       [not found] ` <1471436784-13252-1-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
                     ` (3 preceding siblings ...)
  2016-08-17 12:26   ` [PATCH 5/5] drm/amdgpu: fix timeout value check in amd_sched_job_recovery Christian König
@ 2016-08-17 14:39   ` Alex Deucher
  4 siblings, 0 replies; 11+ messages in thread
From: Alex Deucher @ 2016-08-17 14:39 UTC (permalink / raw)
  To: Christian König; +Cc: amd-gfx list

On Wed, Aug 17, 2016 at 8:26 AM, Christian König
<deathsimple@vodafone.de> wrote:
> From: Christian König <christian.koenig@amd.com>
>
> This bug seems to be present for a very long time.
>
> Signed-off-by: Christian König <christian.koenig@amd.com>

Patches 1,2,4 are:
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

patches 3, 5 are:
Acked-by: Alex Deucher <alexander.deucher@amd.com>

> ---
>  drivers/gpu/drm/radeon/radeon_ttm.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
> index 0c00e19..c2e0a1c 100644
> --- a/drivers/gpu/drm/radeon/radeon_ttm.c
> +++ b/drivers/gpu/drm/radeon/radeon_ttm.c
> @@ -263,8 +263,8 @@ static int radeon_move_blit(struct ttm_buffer_object *bo,
>
>         rdev = radeon_get_rdev(bo->bdev);
>         ridx = radeon_copy_ring_index(rdev);
> -       old_start = old_mem->start << PAGE_SHIFT;
> -       new_start = new_mem->start << PAGE_SHIFT;
> +       old_start = (u64)old_mem->start << PAGE_SHIFT;
> +       new_start = (u64)new_mem->start << PAGE_SHIFT;
>
>         switch (old_mem->mem_type) {
>         case TTM_PL_VRAM:
> --
> 2.5.0
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

* Re: [PATCH 3/5] drm/amdgpu: fix lru size grouping
       [not found]     ` <1471436784-13252-3-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
@ 2016-08-17 21:00       ` Felix Kuehling
       [not found]         ` <cdd78daa-d6d8-b211-c4cc-1747bda7162f-5C7GfCeVMHo@public.gmane.org>
  0 siblings, 1 reply; 11+ messages in thread
From: Felix Kuehling @ 2016-08-17 21:00 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

One suggestion inline [FK].

With that fixed, Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>

Regards,
  Felix


On 16-08-17 08:26 AM, Christian König wrote:
> From: Christian König <christian.koenig@amd.com>
>
> Adding a BO can make it the insertion point for larger sizes as well.
>
> Signed-off-by: Christian König <christian.koenig@amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu.h     | 1 +
>  drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 8 ++++++++
>  2 files changed, 9 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> index a55eb6f..1f6de92 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> @@ -428,6 +428,7 @@ struct amdgpu_mman {
>  
>  	/* custom LRU management */
>  	struct amdgpu_mman_lru			log2_size[AMDGPU_TTM_LRU_SIZE];
> +	struct amdgpu_mman_lru			guard;

[FK] It would be safer to make the array AMDGPU_TTM_LRU_SIZE+1, instead
of adding a separate guard afterwards. That way the guard can't get
accidentally separated by a future change.

>  };
>  
>  int amdgpu_copy_buffer(struct amdgpu_ring *ring,
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index f5dc87e..1a12ce0 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -951,6 +951,8 @@ static struct list_head *amdgpu_ttm_lru_tail(struct ttm_buffer_object *tbo)
>  	struct list_head *res = lru->lru[tbo->mem.mem_type];
>  
>  	lru->lru[tbo->mem.mem_type] = &tbo->lru;
> +	while ((++lru)->lru[tbo->mem.mem_type] == res)
> +		lru->lru[tbo->mem.mem_type] = &tbo->lru;
>  
>  	return res;
>  }
> @@ -961,6 +963,8 @@ static struct list_head *amdgpu_ttm_swap_lru_tail(struct ttm_buffer_object *tbo)
>  	struct list_head *res = lru->swap_lru;
>  
>  	lru->swap_lru = &tbo->swap;
> +	while ((++lru)->swap_lru == res)
> +		lru->swap_lru = &tbo->swap;
>  
>  	return res;
>  }
> @@ -1008,6 +1012,10 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
>  		lru->swap_lru = &adev->mman.bdev.glob->swap_lru;
>  	}
>  
> +	for (j = 0; j < TTM_NUM_MEM_TYPES; ++j)
> +		adev->mman.guard.lru[j] = NULL;
> +	adev->mman.guard.swap_lru = NULL;
> +
>  	adev->mman.initialized = true;
>  	r = ttm_bo_init_mm(&adev->mman.bdev, TTM_PL_VRAM,
>  				adev->mc.real_vram_size >> PAGE_SHIFT);

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

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

* Re: [PATCH 4/5] drm/amdgpu: fix sdma_v2_4_ring_test_ib
       [not found]     ` <1471436784-13252-4-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
@ 2016-08-18  1:38       ` zhoucm1
  0 siblings, 0 replies; 11+ messages in thread
From: zhoucm1 @ 2016-08-18  1:38 UTC (permalink / raw)
  To: Christian König, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW



On 2016年08月17日 20:26, Christian König wrote:
> From: Christian König <christian.koenig@amd.com>
>
> Typo in checking the return code.
>
> Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Chunming Zhou <david1.zhou@amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
> index e822296..2b10e88 100644
> --- a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
> +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
> @@ -714,7 +714,7 @@ static int sdma_v2_4_ring_test_ib(struct amdgpu_ring *ring, long timeout)
>   		DRM_ERROR("amdgpu: IB test timed out\n");
>   		r = -ETIMEDOUT;
>   		goto err1;
> -	} else if (r) {
> +	} else if (r < 0) {
>   		DRM_ERROR("amdgpu: fence wait failed (%ld).\n", r);
>   		goto err1;
>   	}

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

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

* Re: [PATCH 5/5] drm/amdgpu: fix timeout value check in amd_sched_job_recovery
       [not found]     ` <1471436784-13252-5-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
@ 2016-08-18  1:39       ` zhoucm1
  0 siblings, 0 replies; 11+ messages in thread
From: zhoucm1 @ 2016-08-18  1:39 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW



On 2016年08月17日 20:26, Christian König wrote:
> From: Christian König <christian.koenig@amd.com>
>
> Could be that we don't actually have a timeout set.
>
> Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Chunming Zhou <david1.zhou@amd.com>
> ---
>   drivers/gpu/drm/amd/scheduler/gpu_scheduler.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c
> index f96aa82..f3fc10f 100644
> --- a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c
> +++ b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c
> @@ -407,7 +407,7 @@ void amd_sched_job_recovery(struct amd_gpu_scheduler *sched)
>   	spin_lock(&sched->job_list_lock);
>   	s_job = list_first_entry_or_null(&sched->ring_mirror_list,
>   					 struct amd_sched_job, node);
> -	if (s_job)
> +	if (s_job && sched->timeout != MAX_SCHEDULE_TIMEOUT)
>   		schedule_delayed_work(&s_job->work_tdr, sched->timeout);
>   
>   	list_for_each_entry_safe(s_job, tmp, &sched->ring_mirror_list, node) {

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

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

* Re: [PATCH 3/5] drm/amdgpu: fix lru size grouping
       [not found]         ` <cdd78daa-d6d8-b211-c4cc-1747bda7162f-5C7GfCeVMHo@public.gmane.org>
@ 2016-08-18  7:54           ` Christian König
       [not found]             ` <0c6e022d-25b7-17b5-7aee-b3321f0d48cf-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
  0 siblings, 1 reply; 11+ messages in thread
From: Christian König @ 2016-08-18  7:54 UTC (permalink / raw)
  To: Felix Kuehling, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

>   	/* custom LRU management */
>   	struct amdgpu_mman_lru			log2_size[AMDGPU_TTM_LRU_SIZE];
> +	struct amdgpu_mman_lru			guard;
> [FK] It would be safer to make the array AMDGPU_TTM_LRU_SIZE+1, instead
> of adding a separate guard afterwards. That way the guard can't get
> accidentally separated by a future change.

Thought about that as well, but decided against it. The crux is just 
that ARRAY_SIZE() won't return the expected value any more.

I'm going to add a comment explaining that this shouldn't be moved apart.

Christian.

Am 17.08.2016 um 23:00 schrieb Felix Kuehling:
> One suggestion inline [FK].
>
> With that fixed, Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
>
> Regards,
>    Felix
>
>
> On 16-08-17 08:26 AM, Christian König wrote:
>> From: Christian König <christian.koenig@amd.com>
>>
>> Adding a BO can make it the insertion point for larger sizes as well.
>>
>> Signed-off-by: Christian König <christian.koenig@amd.com>
>> ---
>>   drivers/gpu/drm/amd/amdgpu/amdgpu.h     | 1 +
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 8 ++++++++
>>   2 files changed, 9 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
>> index a55eb6f..1f6de92 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
>> @@ -428,6 +428,7 @@ struct amdgpu_mman {
>>   
>>   	/* custom LRU management */
>>   	struct amdgpu_mman_lru			log2_size[AMDGPU_TTM_LRU_SIZE];
>> +	struct amdgpu_mman_lru			guard;
> [FK] It would be safer to make the array AMDGPU_TTM_LRU_SIZE+1, instead
> of adding a separate guard afterwards. That way the guard can't get
> accidentally separated by a future change.
>
>>   };
>>   
>>   int amdgpu_copy_buffer(struct amdgpu_ring *ring,
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>> index f5dc87e..1a12ce0 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>> @@ -951,6 +951,8 @@ static struct list_head *amdgpu_ttm_lru_tail(struct ttm_buffer_object *tbo)
>>   	struct list_head *res = lru->lru[tbo->mem.mem_type];
>>   
>>   	lru->lru[tbo->mem.mem_type] = &tbo->lru;
>> +	while ((++lru)->lru[tbo->mem.mem_type] == res)
>> +		lru->lru[tbo->mem.mem_type] = &tbo->lru;
>>   
>>   	return res;
>>   }
>> @@ -961,6 +963,8 @@ static struct list_head *amdgpu_ttm_swap_lru_tail(struct ttm_buffer_object *tbo)
>>   	struct list_head *res = lru->swap_lru;
>>   
>>   	lru->swap_lru = &tbo->swap;
>> +	while ((++lru)->swap_lru == res)
>> +		lru->swap_lru = &tbo->swap;
>>   
>>   	return res;
>>   }
>> @@ -1008,6 +1012,10 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
>>   		lru->swap_lru = &adev->mman.bdev.glob->swap_lru;
>>   	}
>>   
>> +	for (j = 0; j < TTM_NUM_MEM_TYPES; ++j)
>> +		adev->mman.guard.lru[j] = NULL;
>> +	adev->mman.guard.swap_lru = NULL;
>> +
>>   	adev->mman.initialized = true;
>>   	r = ttm_bo_init_mm(&adev->mman.bdev, TTM_PL_VRAM,
>>   				adev->mc.real_vram_size >> PAGE_SHIFT);
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


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

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

* Re: [PATCH 3/5] drm/amdgpu: fix lru size grouping
       [not found]             ` <0c6e022d-25b7-17b5-7aee-b3321f0d48cf-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
@ 2016-08-18 17:46               ` Felix Kuehling
  0 siblings, 0 replies; 11+ messages in thread
From: Felix Kuehling @ 2016-08-18 17:46 UTC (permalink / raw)
  To: Christian König, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

OK. Feel free to add my Reviewed-by.


On 16-08-18 03:54 AM, Christian König wrote:
>>       /* custom LRU management */
>>       struct amdgpu_mman_lru            log2_size[AMDGPU_TTM_LRU_SIZE];
>> +    struct amdgpu_mman_lru            guard;
>> [FK] It would be safer to make the array AMDGPU_TTM_LRU_SIZE+1, instead
>> of adding a separate guard afterwards. That way the guard can't get
>> accidentally separated by a future change.
>
> Thought about that as well, but decided against it. The crux is just
> that ARRAY_SIZE() won't return the expected value any more.
>
> I'm going to add a comment explaining that this shouldn't be moved apart.
>
> Christian.
>
> Am 17.08.2016 um 23:00 schrieb Felix Kuehling:
>> One suggestion inline [FK].
>>
>> With that fixed, Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
>>
>> Regards,
>>    Felix
>>
>>
>> On 16-08-17 08:26 AM, Christian König wrote:
>>> From: Christian König <christian.koenig@amd.com>
>>>
>>> Adding a BO can make it the insertion point for larger sizes as well.
>>>
>>> Signed-off-by: Christian König <christian.koenig@amd.com>
>>> ---
>>>   drivers/gpu/drm/amd/amdgpu/amdgpu.h     | 1 +
>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 8 ++++++++
>>>   2 files changed, 9 insertions(+)
>>>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
>>> index a55eb6f..1f6de92 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
>>> @@ -428,6 +428,7 @@ struct amdgpu_mman {
>>>         /* custom LRU management */
>>>       struct amdgpu_mman_lru            log2_size[AMDGPU_TTM_LRU_SIZE];
>>> +    struct amdgpu_mman_lru            guard;
>> [FK] It would be safer to make the array AMDGPU_TTM_LRU_SIZE+1, instead
>> of adding a separate guard afterwards. That way the guard can't get
>> accidentally separated by a future change.
>>
>>>   };
>>>     int amdgpu_copy_buffer(struct amdgpu_ring *ring,
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>>> index f5dc87e..1a12ce0 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>>> @@ -951,6 +951,8 @@ static struct list_head
>>> *amdgpu_ttm_lru_tail(struct ttm_buffer_object *tbo)
>>>       struct list_head *res = lru->lru[tbo->mem.mem_type];
>>>         lru->lru[tbo->mem.mem_type] = &tbo->lru;
>>> +    while ((++lru)->lru[tbo->mem.mem_type] == res)
>>> +        lru->lru[tbo->mem.mem_type] = &tbo->lru;
>>>         return res;
>>>   }
>>> @@ -961,6 +963,8 @@ static struct list_head
>>> *amdgpu_ttm_swap_lru_tail(struct ttm_buffer_object *tbo)
>>>       struct list_head *res = lru->swap_lru;
>>>         lru->swap_lru = &tbo->swap;
>>> +    while ((++lru)->swap_lru == res)
>>> +        lru->swap_lru = &tbo->swap;
>>>         return res;
>>>   }
>>> @@ -1008,6 +1012,10 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
>>>           lru->swap_lru = &adev->mman.bdev.glob->swap_lru;
>>>       }
>>>   +    for (j = 0; j < TTM_NUM_MEM_TYPES; ++j)
>>> +        adev->mman.guard.lru[j] = NULL;
>>> +    adev->mman.guard.swap_lru = NULL;
>>> +
>>>       adev->mman.initialized = true;
>>>       r = ttm_bo_init_mm(&adev->mman.bdev, TTM_PL_VRAM,
>>>                   adev->mc.real_vram_size >> PAGE_SHIFT);
>> _______________________________________________
>> amd-gfx mailing list
>> amd-gfx@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
>
>

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

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

end of thread, other threads:[~2016-08-18 17:46 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-08-17 12:26 [PATCH 1/5] drm/radeon: fix radeon_move_blit on 32bit systems Christian König
     [not found] ` <1471436784-13252-1-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2016-08-17 12:26   ` [PATCH 2/5] drm/amdgpu: fix amdgpu_move_blit " Christian König
2016-08-17 12:26   ` [PATCH 3/5] drm/amdgpu: fix lru size grouping Christian König
     [not found]     ` <1471436784-13252-3-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2016-08-17 21:00       ` Felix Kuehling
     [not found]         ` <cdd78daa-d6d8-b211-c4cc-1747bda7162f-5C7GfCeVMHo@public.gmane.org>
2016-08-18  7:54           ` Christian König
     [not found]             ` <0c6e022d-25b7-17b5-7aee-b3321f0d48cf-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2016-08-18 17:46               ` Felix Kuehling
2016-08-17 12:26   ` [PATCH 4/5] drm/amdgpu: fix sdma_v2_4_ring_test_ib Christian König
     [not found]     ` <1471436784-13252-4-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2016-08-18  1:38       ` zhoucm1
2016-08-17 12:26   ` [PATCH 5/5] drm/amdgpu: fix timeout value check in amd_sched_job_recovery Christian König
     [not found]     ` <1471436784-13252-5-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2016-08-18  1:39       ` zhoucm1
2016-08-17 14:39   ` [PATCH 1/5] drm/radeon: fix radeon_move_blit on 32bit systems Alex Deucher

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.