All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/7] drm/amdgpu: add GDS, GWS and OA debugfs files
@ 2018-09-14 19:12 Christian König
       [not found] ` <20180914191246.1609-1-christian.koenig-5C7GfCeVMHo@public.gmane.org>
  0 siblings, 1 reply; 18+ messages in thread
From: Christian König @ 2018-09-14 19:12 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

Additional to the existing files for VRAM and GTT.

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

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index f12ae6b525b9..1565344cc139 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -2208,7 +2208,7 @@ int amdgpu_fill_buffer(struct amdgpu_bo *bo,
 static int amdgpu_mm_dump_table(struct seq_file *m, void *data)
 {
 	struct drm_info_node *node = (struct drm_info_node *)m->private;
-	unsigned ttm_pl = *(int *)node->info_ent->data;
+	unsigned ttm_pl = (uintptr_t)node->info_ent->data;
 	struct drm_device *dev = node->minor->dev;
 	struct amdgpu_device *adev = dev->dev_private;
 	struct ttm_mem_type_manager *man = &adev->mman.bdev.man[ttm_pl];
@@ -2218,12 +2218,12 @@ static int amdgpu_mm_dump_table(struct seq_file *m, void *data)
 	return 0;
 }
 
-static int ttm_pl_vram = TTM_PL_VRAM;
-static int ttm_pl_tt = TTM_PL_TT;
-
 static const struct drm_info_list amdgpu_ttm_debugfs_list[] = {
-	{"amdgpu_vram_mm", amdgpu_mm_dump_table, 0, &ttm_pl_vram},
-	{"amdgpu_gtt_mm", amdgpu_mm_dump_table, 0, &ttm_pl_tt},
+	{"amdgpu_vram_mm", amdgpu_mm_dump_table, 0, (void *)TTM_PL_VRAM},
+	{"amdgpu_gtt_mm", amdgpu_mm_dump_table, 0, (void *)TTM_PL_TT},
+	{"amdgpu_gds_mm", amdgpu_mm_dump_table, 0, (void *)AMDGPU_PL_GDS},
+	{"amdgpu_gws_mm", amdgpu_mm_dump_table, 0, (void *)AMDGPU_PL_GWS},
+	{"amdgpu_oa_mm", amdgpu_mm_dump_table, 0, (void *)AMDGPU_PL_OA},
 	{"ttm_page_pool", ttm_page_alloc_debugfs, 0, NULL},
 #ifdef CONFIG_SWIOTLB
 	{"ttm_dma_page_pool", ttm_dma_page_alloc_debugfs, 0, NULL}
-- 
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] 18+ messages in thread

* [PATCH 2/7] drm/amdgpu: fix up GDS/GWS/OA shifting
       [not found] ` <20180914191246.1609-1-christian.koenig-5C7GfCeVMHo@public.gmane.org>
@ 2018-09-14 19:12   ` Christian König
       [not found]     ` <20180914191246.1609-2-christian.koenig-5C7GfCeVMHo@public.gmane.org>
  2018-09-14 19:12   ` [PATCH 3/7] drm/amdgpu: stop crashing on GDS/GWS/OA eviction Christian König
                     ` (5 subsequent siblings)
  6 siblings, 1 reply; 18+ messages in thread
From: Christian König @ 2018-09-14 19:12 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

That only worked by pure coincident. Completely remove the shifting and
always apply correct PAGE_SHIFT.

Signed-off-by: Christian König <christian.koenig@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c     | 12 ++++++------
 drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h    |  7 -------
 drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c    | 12 +++---------
 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c    | 14 +++++++-------
 drivers/gpu/drm/amd/amdgpu/amdgpu_object.c |  6 +++++-
 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c    | 15 +++------------
 drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c      |  9 ---------
 drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c      |  9 ---------
 drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c      | 12 +-----------
 9 files changed, 25 insertions(+), 71 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
index d762d78e5102..8836186eb5ef 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
@@ -721,16 +721,16 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p,
 		e->bo_va = amdgpu_vm_bo_find(vm, ttm_to_amdgpu_bo(e->tv.bo));
 
 	if (gds) {
-		p->job->gds_base = amdgpu_bo_gpu_offset(gds);
-		p->job->gds_size = amdgpu_bo_size(gds);
+		p->job->gds_base = amdgpu_bo_gpu_offset(gds) >> PAGE_SHIFT;
+		p->job->gds_size = amdgpu_bo_size(gds) >> PAGE_SHIFT;
 	}
 	if (gws) {
-		p->job->gws_base = amdgpu_bo_gpu_offset(gws);
-		p->job->gws_size = amdgpu_bo_size(gws);
+		p->job->gws_base = amdgpu_bo_gpu_offset(gws) >> PAGE_SHIFT;
+		p->job->gws_size = amdgpu_bo_size(gws) >> PAGE_SHIFT;
 	}
 	if (oa) {
-		p->job->oa_base = amdgpu_bo_gpu_offset(oa);
-		p->job->oa_size = amdgpu_bo_size(oa);
+		p->job->oa_base = amdgpu_bo_gpu_offset(oa) >> PAGE_SHIFT;
+		p->job->oa_size = amdgpu_bo_size(oa) >> PAGE_SHIFT;
 	}
 
 	if (!r && p->uf_entry.tv.bo) {
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h
index e73728d90388..ecbcefe49a98 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h
@@ -24,13 +24,6 @@
 #ifndef __AMDGPU_GDS_H__
 #define __AMDGPU_GDS_H__
 
-/* Because TTM request that alloacted buffer should be PAGE_SIZE aligned,
- * we should report GDS/GWS/OA size as PAGE_SIZE aligned
- * */
-#define AMDGPU_GDS_SHIFT	2
-#define AMDGPU_GWS_SHIFT	PAGE_SHIFT
-#define AMDGPU_OA_SHIFT		PAGE_SHIFT
-
 struct amdgpu_ring;
 struct amdgpu_bo;
 
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
index d30a0838851b..7b3d1ebda9df 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
@@ -244,16 +244,10 @@ int amdgpu_gem_create_ioctl(struct drm_device *dev, void *data,
 			return -EINVAL;
 		}
 		flags |= AMDGPU_GEM_CREATE_NO_CPU_ACCESS;
-		if (args->in.domains == AMDGPU_GEM_DOMAIN_GDS)
-			size = size << AMDGPU_GDS_SHIFT;
-		else if (args->in.domains == AMDGPU_GEM_DOMAIN_GWS)
-			size = size << AMDGPU_GWS_SHIFT;
-		else if (args->in.domains == AMDGPU_GEM_DOMAIN_OA)
-			size = size << AMDGPU_OA_SHIFT;
-		else
-			return -EINVAL;
+		/* GDS allocations must be DW aligned */
+		if (args->in.domains & AMDGPU_GEM_DOMAIN_GDS)
+			size = ALIGN(size, 4);
 	}
-	size = roundup(size, PAGE_SIZE);
 
 	if (flags & AMDGPU_GEM_CREATE_VM_ALWAYS_VALID) {
 		r = amdgpu_bo_reserve(vm->root.base.bo, false);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
index b766270d86cb..64cc483db973 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
@@ -528,13 +528,13 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file
 		struct drm_amdgpu_info_gds gds_info;
 
 		memset(&gds_info, 0, sizeof(gds_info));
-		gds_info.gds_gfx_partition_size = adev->gds.mem.gfx_partition_size >> AMDGPU_GDS_SHIFT;
-		gds_info.compute_partition_size = adev->gds.mem.cs_partition_size >> AMDGPU_GDS_SHIFT;
-		gds_info.gds_total_size = adev->gds.mem.total_size >> AMDGPU_GDS_SHIFT;
-		gds_info.gws_per_gfx_partition = adev->gds.gws.gfx_partition_size >> AMDGPU_GWS_SHIFT;
-		gds_info.gws_per_compute_partition = adev->gds.gws.cs_partition_size >> AMDGPU_GWS_SHIFT;
-		gds_info.oa_per_gfx_partition = adev->gds.oa.gfx_partition_size >> AMDGPU_OA_SHIFT;
-		gds_info.oa_per_compute_partition = adev->gds.oa.cs_partition_size >> AMDGPU_OA_SHIFT;
+		gds_info.gds_gfx_partition_size = adev->gds.mem.gfx_partition_size;
+		gds_info.compute_partition_size = adev->gds.mem.cs_partition_size;
+		gds_info.gds_total_size = adev->gds.mem.total_size;
+		gds_info.gws_per_gfx_partition = adev->gds.gws.gfx_partition_size;
+		gds_info.gws_per_compute_partition = adev->gds.gws.cs_partition_size;
+		gds_info.oa_per_gfx_partition = adev->gds.oa.gfx_partition_size;
+		gds_info.oa_per_compute_partition = adev->gds.oa.cs_partition_size;
 		return copy_to_user(out, &gds_info,
 				    min((size_t)size, sizeof(gds_info))) ? -EFAULT : 0;
 	}
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
index e6909252aefa..e1f32a196f6d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
@@ -433,7 +433,11 @@ static int amdgpu_bo_do_create(struct amdgpu_device *adev,
 	int r;
 
 	page_align = roundup(bp->byte_align, PAGE_SIZE) >> PAGE_SHIFT;
-	size = ALIGN(size, PAGE_SIZE);
+	if (bp->domain & (AMDGPU_GEM_DOMAIN_GDS | AMDGPU_GEM_DOMAIN_GWS |
+			  AMDGPU_GEM_DOMAIN_OA))
+		size <<= PAGE_SHIFT;
+	else
+		size = ALIGN(size, PAGE_SIZE);
 
 	if (!amdgpu_bo_validate_size(adev, size, bp->domain))
 		return -ENOMEM;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index 1565344cc139..c691275cd1f0 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -1825,19 +1825,10 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
 		 (unsigned)(gtt_size / (1024 * 1024)));
 
 	/* Initialize various on-chip memory pools */
-	adev->gds.mem.total_size = adev->gds.mem.total_size << AMDGPU_GDS_SHIFT;
-	adev->gds.mem.gfx_partition_size = adev->gds.mem.gfx_partition_size << AMDGPU_GDS_SHIFT;
-	adev->gds.mem.cs_partition_size = adev->gds.mem.cs_partition_size << AMDGPU_GDS_SHIFT;
-	adev->gds.gws.total_size = adev->gds.gws.total_size << AMDGPU_GWS_SHIFT;
-	adev->gds.gws.gfx_partition_size = adev->gds.gws.gfx_partition_size << AMDGPU_GWS_SHIFT;
-	adev->gds.gws.cs_partition_size = adev->gds.gws.cs_partition_size << AMDGPU_GWS_SHIFT;
-	adev->gds.oa.total_size = adev->gds.oa.total_size << AMDGPU_OA_SHIFT;
-	adev->gds.oa.gfx_partition_size = adev->gds.oa.gfx_partition_size << AMDGPU_OA_SHIFT;
-	adev->gds.oa.cs_partition_size = adev->gds.oa.cs_partition_size << AMDGPU_OA_SHIFT;
 	/* GDS Memory */
 	if (adev->gds.mem.total_size) {
 		r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GDS,
-				   adev->gds.mem.total_size >> PAGE_SHIFT);
+				   adev->gds.mem.total_size);
 		if (r) {
 			DRM_ERROR("Failed initializing GDS heap.\n");
 			return r;
@@ -1847,7 +1838,7 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
 	/* GWS */
 	if (adev->gds.gws.total_size) {
 		r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GWS,
-				   adev->gds.gws.total_size >> PAGE_SHIFT);
+				   adev->gds.gws.total_size);
 		if (r) {
 			DRM_ERROR("Failed initializing gws heap.\n");
 			return r;
@@ -1857,7 +1848,7 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
 	/* OA */
 	if (adev->gds.oa.total_size) {
 		r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_OA,
-				   adev->gds.oa.total_size >> PAGE_SHIFT);
+				   adev->gds.oa.total_size);
 		if (r) {
 			DRM_ERROR("Failed initializing oa heap.\n");
 			return r;
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
index a15d9c0f233b..c0f9732cbaf7 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
@@ -4170,15 +4170,6 @@ static void gfx_v7_0_ring_emit_gds_switch(struct amdgpu_ring *ring,
 					  uint32_t gws_base, uint32_t gws_size,
 					  uint32_t oa_base, uint32_t oa_size)
 {
-	gds_base = gds_base >> AMDGPU_GDS_SHIFT;
-	gds_size = gds_size >> AMDGPU_GDS_SHIFT;
-
-	gws_base = gws_base >> AMDGPU_GWS_SHIFT;
-	gws_size = gws_size >> AMDGPU_GWS_SHIFT;
-
-	oa_base = oa_base >> AMDGPU_OA_SHIFT;
-	oa_size = oa_size >> AMDGPU_OA_SHIFT;
-
 	/* GDS Base */
 	amdgpu_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, 3));
 	amdgpu_ring_write(ring, (WRITE_DATA_ENGINE_SEL(0) |
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
index 3882689b2d8f..57e4b14e3bd1 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
@@ -5396,15 +5396,6 @@ static void gfx_v8_0_ring_emit_gds_switch(struct amdgpu_ring *ring,
 					  uint32_t gws_base, uint32_t gws_size,
 					  uint32_t oa_base, uint32_t oa_size)
 {
-	gds_base = gds_base >> AMDGPU_GDS_SHIFT;
-	gds_size = gds_size >> AMDGPU_GDS_SHIFT;
-
-	gws_base = gws_base >> AMDGPU_GWS_SHIFT;
-	gws_size = gws_size >> AMDGPU_GWS_SHIFT;
-
-	oa_base = oa_base >> AMDGPU_OA_SHIFT;
-	oa_size = oa_size >> AMDGPU_OA_SHIFT;
-
 	/* GDS Base */
 	amdgpu_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, 3));
 	amdgpu_ring_write(ring, (WRITE_DATA_ENGINE_SEL(0) |
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
index 75a91663019f..d31a2bc00d61 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
@@ -1527,8 +1527,7 @@ static int gfx_v9_0_ngg_en(struct amdgpu_device *adev)
 	gfx_v9_0_write_data_to_reg(ring, 0, false,
 				   SOC15_REG_OFFSET(GC, 0, mmGDS_VMID0_SIZE),
 			           (adev->gds.mem.total_size +
-				    adev->gfx.ngg.gds_reserve_size) >>
-				   AMDGPU_GDS_SHIFT);
+				    adev->gfx.ngg.gds_reserve_size));
 
 	amdgpu_ring_write(ring, PACKET3(PACKET3_DMA_DATA, 5));
 	amdgpu_ring_write(ring, (PACKET3_DMA_DATA_CP_SYNC |
@@ -3472,15 +3471,6 @@ static void gfx_v9_0_ring_emit_gds_switch(struct amdgpu_ring *ring,
 {
 	struct amdgpu_device *adev = ring->adev;
 
-	gds_base = gds_base >> AMDGPU_GDS_SHIFT;
-	gds_size = gds_size >> AMDGPU_GDS_SHIFT;
-
-	gws_base = gws_base >> AMDGPU_GWS_SHIFT;
-	gws_size = gws_size >> AMDGPU_GWS_SHIFT;
-
-	oa_base = oa_base >> AMDGPU_OA_SHIFT;
-	oa_size = oa_size >> AMDGPU_OA_SHIFT;
-
 	/* GDS Base */
 	gfx_v9_0_write_data_to_reg(ring, 0, false,
 				   SOC15_REG_OFFSET(GC, 0, mmGDS_VMID0_BASE) + 2 * vmid,
-- 
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] 18+ messages in thread

* [PATCH 3/7] drm/amdgpu: stop crashing on GDS/GWS/OA eviction
       [not found] ` <20180914191246.1609-1-christian.koenig-5C7GfCeVMHo@public.gmane.org>
  2018-09-14 19:12   ` [PATCH 2/7] drm/amdgpu: fix up GDS/GWS/OA shifting Christian König
@ 2018-09-14 19:12   ` Christian König
       [not found]     ` <20180914191246.1609-3-christian.koenig-5C7GfCeVMHo@public.gmane.org>
  2018-09-14 19:12   ` [PATCH 4/7] drm/amdgpu: initialize GDS/GWS/OA domains even when they are zero sized Christian König
                     ` (4 subsequent siblings)
  6 siblings, 1 reply; 18+ messages in thread
From: Christian König @ 2018-09-14 19:12 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

Simply ignore any copying here.

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

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index c691275cd1f0..3e450159fe1f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -256,6 +256,13 @@ static void amdgpu_evict_flags(struct ttm_buffer_object *bo,
 
 	abo = ttm_to_amdgpu_bo(bo);
 	switch (bo->mem.mem_type) {
+	case AMDGPU_PL_GDS:
+	case AMDGPU_PL_GWS:
+	case AMDGPU_PL_OA:
+		placement->num_placement = 0;
+		placement->num_busy_placement = 0;
+		return;
+
 	case TTM_PL_VRAM:
 		if (!adev->mman.buffer_funcs_enabled) {
 			/* Move to system memory */
@@ -283,6 +290,7 @@ static void amdgpu_evict_flags(struct ttm_buffer_object *bo,
 	case TTM_PL_TT:
 	default:
 		amdgpu_bo_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_CPU);
+		break;
 	}
 	*placement = abo->placement;
 }
@@ -675,6 +683,16 @@ static int amdgpu_bo_move(struct ttm_buffer_object *bo, bool evict,
 		amdgpu_move_null(bo, new_mem);
 		return 0;
 	}
+	if (old_mem->mem_type == AMDGPU_PL_GDS ||
+	    old_mem->mem_type == AMDGPU_PL_GWS ||
+	    old_mem->mem_type == AMDGPU_PL_OA ||
+	    new_mem->mem_type == AMDGPU_PL_GDS ||
+	    new_mem->mem_type == AMDGPU_PL_GWS ||
+	    new_mem->mem_type == AMDGPU_PL_OA) {
+		/* Nothing to save here */
+		amdgpu_move_null(bo, new_mem);
+		return 0;
+	}
 
 	if (!adev->mman.buffer_funcs_enabled)
 		goto memcpy;
-- 
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] 18+ messages in thread

* [PATCH 4/7] drm/amdgpu: initialize GDS/GWS/OA domains even when they are zero sized
       [not found] ` <20180914191246.1609-1-christian.koenig-5C7GfCeVMHo@public.gmane.org>
  2018-09-14 19:12   ` [PATCH 2/7] drm/amdgpu: fix up GDS/GWS/OA shifting Christian König
  2018-09-14 19:12   ` [PATCH 3/7] drm/amdgpu: stop crashing on GDS/GWS/OA eviction Christian König
@ 2018-09-14 19:12   ` Christian König
       [not found]     ` <20180914191246.1609-4-christian.koenig-5C7GfCeVMHo@public.gmane.org>
  2018-09-14 19:12   ` [PATCH 5/7] drm/amdgpu: don't allocate zero sized kernel BOs Christian König
                     ` (3 subsequent siblings)
  6 siblings, 1 reply; 18+ messages in thread
From: Christian König @ 2018-09-14 19:12 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

Stops crashing on SI.

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

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index 3e450159fe1f..710e7751c567 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -1843,34 +1843,25 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
 		 (unsigned)(gtt_size / (1024 * 1024)));
 
 	/* Initialize various on-chip memory pools */
-	/* GDS Memory */
-	if (adev->gds.mem.total_size) {
-		r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GDS,
-				   adev->gds.mem.total_size);
-		if (r) {
-			DRM_ERROR("Failed initializing GDS heap.\n");
-			return r;
-		}
+	r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GDS,
+			   adev->gds.mem.total_size);
+	if (r) {
+		DRM_ERROR("Failed initializing GDS heap.\n");
+		return r;
 	}
 
-	/* GWS */
-	if (adev->gds.gws.total_size) {
-		r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GWS,
-				   adev->gds.gws.total_size);
-		if (r) {
-			DRM_ERROR("Failed initializing gws heap.\n");
-			return r;
-		}
+	r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GWS,
+			   adev->gds.gws.total_size);
+	if (r) {
+		DRM_ERROR("Failed initializing gws heap.\n");
+		return r;
 	}
 
-	/* OA */
-	if (adev->gds.oa.total_size) {
-		r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_OA,
-				   adev->gds.oa.total_size);
-		if (r) {
-			DRM_ERROR("Failed initializing oa heap.\n");
-			return r;
-		}
+	r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_OA,
+			   adev->gds.oa.total_size);
+	if (r) {
+		DRM_ERROR("Failed initializing oa heap.\n");
+		return r;
 	}
 
 	/* Register debugfs entries for amdgpu_ttm */
@@ -1907,12 +1898,9 @@ void amdgpu_ttm_fini(struct amdgpu_device *adev)
 
 	ttm_bo_clean_mm(&adev->mman.bdev, TTM_PL_VRAM);
 	ttm_bo_clean_mm(&adev->mman.bdev, TTM_PL_TT);
-	if (adev->gds.mem.total_size)
-		ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_GDS);
-	if (adev->gds.gws.total_size)
-		ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_GWS);
-	if (adev->gds.oa.total_size)
-		ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_OA);
+	ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_GDS);
+	ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_GWS);
+	ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_OA);
 	ttm_bo_device_release(&adev->mman.bdev);
 	amdgpu_ttm_global_fini(adev);
 	adev->mman.initialized = false;
-- 
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] 18+ messages in thread

* [PATCH 5/7] drm/amdgpu: don't allocate zero sized kernel BOs
       [not found] ` <20180914191246.1609-1-christian.koenig-5C7GfCeVMHo@public.gmane.org>
                     ` (2 preceding siblings ...)
  2018-09-14 19:12   ` [PATCH 4/7] drm/amdgpu: initialize GDS/GWS/OA domains even when they are zero sized Christian König
@ 2018-09-14 19:12   ` Christian König
       [not found]     ` <20180914191246.1609-5-christian.koenig-5C7GfCeVMHo@public.gmane.org>
  2018-09-14 19:12   ` [PATCH 6/7] drm/amdgpu: drop size check Christian König
                     ` (2 subsequent siblings)
  6 siblings, 1 reply; 18+ messages in thread
From: Christian König @ 2018-09-14 19:12 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

Just free the BO if the size is should be zero.

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

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
index e1f32a196f6d..d282e923d1b4 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
@@ -250,6 +250,11 @@ int amdgpu_bo_create_reserved(struct amdgpu_device *adev,
 	bool free = false;
 	int r;
 
+	if (!size) {
+		amdgpu_bo_unref(bo_ptr);
+		return 0;
+	}
+
 	memset(&bp, 0, sizeof(bp));
 	bp.size = size;
 	bp.byte_align = align;
-- 
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] 18+ messages in thread

* [PATCH 6/7] drm/amdgpu: drop size check
       [not found] ` <20180914191246.1609-1-christian.koenig-5C7GfCeVMHo@public.gmane.org>
                     ` (3 preceding siblings ...)
  2018-09-14 19:12   ` [PATCH 5/7] drm/amdgpu: don't allocate zero sized kernel BOs Christian König
@ 2018-09-14 19:12   ` Christian König
       [not found]     ` <20180914191246.1609-6-christian.koenig-5C7GfCeVMHo@public.gmane.org>
  2018-09-14 19:12   ` [PATCH 7/7] drm/amdgpu: move reserving GDS/GWS/OA into common code Christian König
  2018-09-14 20:07   ` [PATCH 1/7] drm/amdgpu: add GDS, GWS and OA debugfs files Alex Deucher
  6 siblings, 1 reply; 18+ messages in thread
From: Christian König @ 2018-09-14 19:12 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

We no don't allocate zero sized kernel BOs any longer.

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

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index 710e7751c567..438390fce714 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -1809,14 +1809,12 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
 	 * This is used for VGA emulation and pre-OS scanout buffers to
 	 * avoid display artifacts while transitioning between pre-OS
 	 * and driver.  */
-	if (adev->gmc.stolen_size) {
-		r = amdgpu_bo_create_kernel(adev, adev->gmc.stolen_size, PAGE_SIZE,
-					    AMDGPU_GEM_DOMAIN_VRAM,
-					    &adev->stolen_vga_memory,
-					    NULL, NULL);
-		if (r)
-			return r;
-	}
+	r = amdgpu_bo_create_kernel(adev, adev->gmc.stolen_size, PAGE_SIZE,
+				    AMDGPU_GEM_DOMAIN_VRAM,
+				    &adev->stolen_vga_memory,
+				    NULL, NULL);
+	if (r)
+		return r;
 	DRM_INFO("amdgpu: %uM of VRAM memory ready\n",
 		 (unsigned) (adev->gmc.real_vram_size / (1024 * 1024)));
 
-- 
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] 18+ messages in thread

* [PATCH 7/7] drm/amdgpu: move reserving GDS/GWS/OA into common code
       [not found] ` <20180914191246.1609-1-christian.koenig-5C7GfCeVMHo@public.gmane.org>
                     ` (4 preceding siblings ...)
  2018-09-14 19:12   ` [PATCH 6/7] drm/amdgpu: drop size check Christian König
@ 2018-09-14 19:12   ` Christian König
       [not found]     ` <20180914191246.1609-7-christian.koenig-5C7GfCeVMHo@public.gmane.org>
  2018-09-14 20:07   ` [PATCH 1/7] drm/amdgpu: add GDS, GWS and OA debugfs files Alex Deucher
  6 siblings, 1 reply; 18+ messages in thread
From: Christian König @ 2018-09-14 19:12 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

We don't need that in the per ASIC code.

Signed-off-by: Christian König <christian.koenig@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 18 ++++++++++++++++++
 drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c   | 19 -------------------
 drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c   | 19 -------------------
 drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c   | 19 -------------------
 4 files changed, 18 insertions(+), 57 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index 438390fce714..cf93a9831318 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -1848,6 +1848,12 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
 		return r;
 	}
 
+	r = amdgpu_bo_create_kernel(adev, adev->gds.mem.gfx_partition_size,
+				    PAGE_SIZE, AMDGPU_GEM_DOMAIN_GDS,
+				    &adev->gds.gds_gfx_bo, NULL, NULL);
+	if (r)
+		return r;
+
 	r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GWS,
 			   adev->gds.gws.total_size);
 	if (r) {
@@ -1855,6 +1861,12 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
 		return r;
 	}
 
+	r = amdgpu_bo_create_kernel(adev, adev->gds.gws.gfx_partition_size,
+				    PAGE_SIZE, AMDGPU_GEM_DOMAIN_GWS,
+				    &adev->gds.gws_gfx_bo, NULL, NULL);
+	if (r)
+		return r;
+
 	r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_OA,
 			   adev->gds.oa.total_size);
 	if (r) {
@@ -1862,6 +1874,12 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
 		return r;
 	}
 
+	r = amdgpu_bo_create_kernel(adev, adev->gds.oa.gfx_partition_size,
+				    PAGE_SIZE, AMDGPU_GEM_DOMAIN_OA,
+				    &adev->gds.oa_gfx_bo, NULL, NULL);
+	if (r)
+		return r;
+
 	/* Register debugfs entries for amdgpu_ttm */
 	r = amdgpu_ttm_debugfs_init(adev);
 	if (r) {
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
index c0f9732cbaf7..fc39ebbc9d9f 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
@@ -4582,25 +4582,6 @@ static int gfx_v7_0_sw_init(void *handle)
 		}
 	}
 
-	/* reserve GDS, GWS and OA resource for gfx */
-	r = amdgpu_bo_create_kernel(adev, adev->gds.mem.gfx_partition_size,
-				    PAGE_SIZE, AMDGPU_GEM_DOMAIN_GDS,
-				    &adev->gds.gds_gfx_bo, NULL, NULL);
-	if (r)
-		return r;
-
-	r = amdgpu_bo_create_kernel(adev, adev->gds.gws.gfx_partition_size,
-				    PAGE_SIZE, AMDGPU_GEM_DOMAIN_GWS,
-				    &adev->gds.gws_gfx_bo, NULL, NULL);
-	if (r)
-		return r;
-
-	r = amdgpu_bo_create_kernel(adev, adev->gds.oa.gfx_partition_size,
-				    PAGE_SIZE, AMDGPU_GEM_DOMAIN_OA,
-				    &adev->gds.oa_gfx_bo, NULL, NULL);
-	if (r)
-		return r;
-
 	adev->gfx.ce_ram_size = 0x8000;
 
 	gfx_v7_0_gpu_early_init(adev);
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
index 57e4b14e3bd1..5d9fd2c2c244 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
@@ -2161,25 +2161,6 @@ static int gfx_v8_0_sw_init(void *handle)
 	if (r)
 		return r;
 
-	/* reserve GDS, GWS and OA resource for gfx */
-	r = amdgpu_bo_create_kernel(adev, adev->gds.mem.gfx_partition_size,
-				    PAGE_SIZE, AMDGPU_GEM_DOMAIN_GDS,
-				    &adev->gds.gds_gfx_bo, NULL, NULL);
-	if (r)
-		return r;
-
-	r = amdgpu_bo_create_kernel(adev, adev->gds.gws.gfx_partition_size,
-				    PAGE_SIZE, AMDGPU_GEM_DOMAIN_GWS,
-				    &adev->gds.gws_gfx_bo, NULL, NULL);
-	if (r)
-		return r;
-
-	r = amdgpu_bo_create_kernel(adev, adev->gds.oa.gfx_partition_size,
-				    PAGE_SIZE, AMDGPU_GEM_DOMAIN_OA,
-				    &adev->gds.oa_gfx_bo, NULL, NULL);
-	if (r)
-		return r;
-
 	adev->gfx.ce_ram_size = 0x8000;
 
 	r = gfx_v8_0_gpu_early_init(adev);
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
index d31a2bc00d61..c075c0b6bb2b 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
@@ -1700,25 +1700,6 @@ static int gfx_v9_0_sw_init(void *handle)
 	if (r)
 		return r;
 
-	/* reserve GDS, GWS and OA resource for gfx */
-	r = amdgpu_bo_create_kernel(adev, adev->gds.mem.gfx_partition_size,
-				    PAGE_SIZE, AMDGPU_GEM_DOMAIN_GDS,
-				    &adev->gds.gds_gfx_bo, NULL, NULL);
-	if (r)
-		return r;
-
-	r = amdgpu_bo_create_kernel(adev, adev->gds.gws.gfx_partition_size,
-				    PAGE_SIZE, AMDGPU_GEM_DOMAIN_GWS,
-				    &adev->gds.gws_gfx_bo, NULL, NULL);
-	if (r)
-		return r;
-
-	r = amdgpu_bo_create_kernel(adev, adev->gds.oa.gfx_partition_size,
-				    PAGE_SIZE, AMDGPU_GEM_DOMAIN_OA,
-				    &adev->gds.oa_gfx_bo, NULL, NULL);
-	if (r)
-		return r;
-
 	adev->gfx.ce_ram_size = 0x8000;
 
 	r = gfx_v9_0_gpu_early_init(adev);
-- 
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] 18+ messages in thread

* Re: [PATCH 1/7] drm/amdgpu: add GDS, GWS and OA debugfs files
       [not found] ` <20180914191246.1609-1-christian.koenig-5C7GfCeVMHo@public.gmane.org>
                     ` (5 preceding siblings ...)
  2018-09-14 19:12   ` [PATCH 7/7] drm/amdgpu: move reserving GDS/GWS/OA into common code Christian König
@ 2018-09-14 20:07   ` Alex Deucher
  6 siblings, 0 replies; 18+ messages in thread
From: Alex Deucher @ 2018-09-14 20:07 UTC (permalink / raw)
  To: Christian König; +Cc: amd-gfx list

On Fri, Sep 14, 2018 at 3:12 PM Christian König
<ckoenig.leichtzumerken@gmail.com> wrote:
>
> Additional to the existing files for VRAM and GTT.
>
> Signed-off-by: Christian König <christian.koenig@amd.com>

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index f12ae6b525b9..1565344cc139 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -2208,7 +2208,7 @@ int amdgpu_fill_buffer(struct amdgpu_bo *bo,
>  static int amdgpu_mm_dump_table(struct seq_file *m, void *data)
>  {
>         struct drm_info_node *node = (struct drm_info_node *)m->private;
> -       unsigned ttm_pl = *(int *)node->info_ent->data;
> +       unsigned ttm_pl = (uintptr_t)node->info_ent->data;
>         struct drm_device *dev = node->minor->dev;
>         struct amdgpu_device *adev = dev->dev_private;
>         struct ttm_mem_type_manager *man = &adev->mman.bdev.man[ttm_pl];
> @@ -2218,12 +2218,12 @@ static int amdgpu_mm_dump_table(struct seq_file *m, void *data)
>         return 0;
>  }
>
> -static int ttm_pl_vram = TTM_PL_VRAM;
> -static int ttm_pl_tt = TTM_PL_TT;
> -
>  static const struct drm_info_list amdgpu_ttm_debugfs_list[] = {
> -       {"amdgpu_vram_mm", amdgpu_mm_dump_table, 0, &ttm_pl_vram},
> -       {"amdgpu_gtt_mm", amdgpu_mm_dump_table, 0, &ttm_pl_tt},
> +       {"amdgpu_vram_mm", amdgpu_mm_dump_table, 0, (void *)TTM_PL_VRAM},
> +       {"amdgpu_gtt_mm", amdgpu_mm_dump_table, 0, (void *)TTM_PL_TT},
> +       {"amdgpu_gds_mm", amdgpu_mm_dump_table, 0, (void *)AMDGPU_PL_GDS},
> +       {"amdgpu_gws_mm", amdgpu_mm_dump_table, 0, (void *)AMDGPU_PL_GWS},
> +       {"amdgpu_oa_mm", amdgpu_mm_dump_table, 0, (void *)AMDGPU_PL_OA},
>         {"ttm_page_pool", ttm_page_alloc_debugfs, 0, NULL},
>  #ifdef CONFIG_SWIOTLB
>         {"ttm_dma_page_pool", ttm_dma_page_alloc_debugfs, 0, NULL}
> --
> 2.14.1
>
> _______________________________________________
> 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] 18+ messages in thread

* Re: [PATCH 3/7] drm/amdgpu: stop crashing on GDS/GWS/OA eviction
       [not found]     ` <20180914191246.1609-3-christian.koenig-5C7GfCeVMHo@public.gmane.org>
@ 2018-09-14 20:07       ` Alex Deucher
  0 siblings, 0 replies; 18+ messages in thread
From: Alex Deucher @ 2018-09-14 20:07 UTC (permalink / raw)
  To: Christian König; +Cc: amd-gfx list

On Fri, Sep 14, 2018 at 3:13 PM Christian König
<ckoenig.leichtzumerken@gmail.com> wrote:
>
> Simply ignore any copying here.
>
> Signed-off-by: Christian König <christian.koenig@amd.com>

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index c691275cd1f0..3e450159fe1f 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -256,6 +256,13 @@ static void amdgpu_evict_flags(struct ttm_buffer_object *bo,
>
>         abo = ttm_to_amdgpu_bo(bo);
>         switch (bo->mem.mem_type) {
> +       case AMDGPU_PL_GDS:
> +       case AMDGPU_PL_GWS:
> +       case AMDGPU_PL_OA:
> +               placement->num_placement = 0;
> +               placement->num_busy_placement = 0;
> +               return;
> +
>         case TTM_PL_VRAM:
>                 if (!adev->mman.buffer_funcs_enabled) {
>                         /* Move to system memory */
> @@ -283,6 +290,7 @@ static void amdgpu_evict_flags(struct ttm_buffer_object *bo,
>         case TTM_PL_TT:
>         default:
>                 amdgpu_bo_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_CPU);
> +               break;
>         }
>         *placement = abo->placement;
>  }
> @@ -675,6 +683,16 @@ static int amdgpu_bo_move(struct ttm_buffer_object *bo, bool evict,
>                 amdgpu_move_null(bo, new_mem);
>                 return 0;
>         }
> +       if (old_mem->mem_type == AMDGPU_PL_GDS ||
> +           old_mem->mem_type == AMDGPU_PL_GWS ||
> +           old_mem->mem_type == AMDGPU_PL_OA ||
> +           new_mem->mem_type == AMDGPU_PL_GDS ||
> +           new_mem->mem_type == AMDGPU_PL_GWS ||
> +           new_mem->mem_type == AMDGPU_PL_OA) {
> +               /* Nothing to save here */
> +               amdgpu_move_null(bo, new_mem);
> +               return 0;
> +       }
>
>         if (!adev->mman.buffer_funcs_enabled)
>                 goto memcpy;
> --
> 2.14.1
>
> _______________________________________________
> 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] 18+ messages in thread

* Re: [PATCH 4/7] drm/amdgpu: initialize GDS/GWS/OA domains even when they are zero sized
       [not found]     ` <20180914191246.1609-4-christian.koenig-5C7GfCeVMHo@public.gmane.org>
@ 2018-09-14 20:14       ` Alex Deucher
       [not found]         ` <CADnq5_OEi6MBaHp7qx_0dS9SbxCrXiyKPSx5xKdq-3FwtTBsNg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 18+ messages in thread
From: Alex Deucher @ 2018-09-14 20:14 UTC (permalink / raw)
  To: Christian König; +Cc: amd-gfx list

On Fri, Sep 14, 2018 at 3:12 PM Christian König
<ckoenig.leichtzumerken@gmail.com> wrote:
>
> Stops crashing on SI.
>
> Signed-off-by: Christian König <christian.koenig@amd.com>

Presumably ttm allows this?
Acked-by: Alex Deucher <alexander.deucher@amd.com>

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 48 +++++++++++++--------------------
>  1 file changed, 18 insertions(+), 30 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index 3e450159fe1f..710e7751c567 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -1843,34 +1843,25 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
>                  (unsigned)(gtt_size / (1024 * 1024)));
>
>         /* Initialize various on-chip memory pools */
> -       /* GDS Memory */
> -       if (adev->gds.mem.total_size) {
> -               r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GDS,
> -                                  adev->gds.mem.total_size);
> -               if (r) {
> -                       DRM_ERROR("Failed initializing GDS heap.\n");
> -                       return r;
> -               }
> +       r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GDS,
> +                          adev->gds.mem.total_size);
> +       if (r) {
> +               DRM_ERROR("Failed initializing GDS heap.\n");
> +               return r;
>         }
>
> -       /* GWS */
> -       if (adev->gds.gws.total_size) {
> -               r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GWS,
> -                                  adev->gds.gws.total_size);
> -               if (r) {
> -                       DRM_ERROR("Failed initializing gws heap.\n");
> -                       return r;
> -               }
> +       r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GWS,
> +                          adev->gds.gws.total_size);
> +       if (r) {
> +               DRM_ERROR("Failed initializing gws heap.\n");
> +               return r;
>         }
>
> -       /* OA */
> -       if (adev->gds.oa.total_size) {
> -               r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_OA,
> -                                  adev->gds.oa.total_size);
> -               if (r) {
> -                       DRM_ERROR("Failed initializing oa heap.\n");
> -                       return r;
> -               }
> +       r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_OA,
> +                          adev->gds.oa.total_size);
> +       if (r) {
> +               DRM_ERROR("Failed initializing oa heap.\n");
> +               return r;
>         }
>
>         /* Register debugfs entries for amdgpu_ttm */
> @@ -1907,12 +1898,9 @@ void amdgpu_ttm_fini(struct amdgpu_device *adev)
>
>         ttm_bo_clean_mm(&adev->mman.bdev, TTM_PL_VRAM);
>         ttm_bo_clean_mm(&adev->mman.bdev, TTM_PL_TT);
> -       if (adev->gds.mem.total_size)
> -               ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_GDS);
> -       if (adev->gds.gws.total_size)
> -               ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_GWS);
> -       if (adev->gds.oa.total_size)
> -               ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_OA);
> +       ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_GDS);
> +       ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_GWS);
> +       ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_OA);
>         ttm_bo_device_release(&adev->mman.bdev);
>         amdgpu_ttm_global_fini(adev);
>         adev->mman.initialized = false;
> --
> 2.14.1
>
> _______________________________________________
> 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] 18+ messages in thread

* Re: [PATCH 5/7] drm/amdgpu: don't allocate zero sized kernel BOs
       [not found]     ` <20180914191246.1609-5-christian.koenig-5C7GfCeVMHo@public.gmane.org>
@ 2018-09-14 20:16       ` Alex Deucher
  0 siblings, 0 replies; 18+ messages in thread
From: Alex Deucher @ 2018-09-14 20:16 UTC (permalink / raw)
  To: Christian König; +Cc: amd-gfx list

On Fri, Sep 14, 2018 at 3:12 PM Christian König
<ckoenig.leichtzumerken@gmail.com> wrote:
>
> Just free the BO if the size is should be zero.
>
> Signed-off-by: Christian König <christian.koenig@amd.com>

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 5 +++++
>  1 file changed, 5 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> index e1f32a196f6d..d282e923d1b4 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> @@ -250,6 +250,11 @@ int amdgpu_bo_create_reserved(struct amdgpu_device *adev,
>         bool free = false;
>         int r;
>
> +       if (!size) {
> +               amdgpu_bo_unref(bo_ptr);
> +               return 0;
> +       }
> +
>         memset(&bp, 0, sizeof(bp));
>         bp.size = size;
>         bp.byte_align = align;
> --
> 2.14.1
>
> _______________________________________________
> 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] 18+ messages in thread

* Re: [PATCH 6/7] drm/amdgpu: drop size check
       [not found]     ` <20180914191246.1609-6-christian.koenig-5C7GfCeVMHo@public.gmane.org>
@ 2018-09-14 20:17       ` Alex Deucher
  0 siblings, 0 replies; 18+ messages in thread
From: Alex Deucher @ 2018-09-14 20:17 UTC (permalink / raw)
  To: Christian König; +Cc: amd-gfx list

On Fri, Sep 14, 2018 at 3:13 PM Christian König
<ckoenig.leichtzumerken@gmail.com> wrote:
>
> We no don't allocate zero sized kernel BOs any longer.
>
> Signed-off-by: Christian König <christian.koenig@amd.com>

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 14 ++++++--------
>  1 file changed, 6 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index 710e7751c567..438390fce714 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -1809,14 +1809,12 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
>          * This is used for VGA emulation and pre-OS scanout buffers to
>          * avoid display artifacts while transitioning between pre-OS
>          * and driver.  */
> -       if (adev->gmc.stolen_size) {
> -               r = amdgpu_bo_create_kernel(adev, adev->gmc.stolen_size, PAGE_SIZE,
> -                                           AMDGPU_GEM_DOMAIN_VRAM,
> -                                           &adev->stolen_vga_memory,
> -                                           NULL, NULL);
> -               if (r)
> -                       return r;
> -       }
> +       r = amdgpu_bo_create_kernel(adev, adev->gmc.stolen_size, PAGE_SIZE,
> +                                   AMDGPU_GEM_DOMAIN_VRAM,
> +                                   &adev->stolen_vga_memory,
> +                                   NULL, NULL);
> +       if (r)
> +               return r;
>         DRM_INFO("amdgpu: %uM of VRAM memory ready\n",
>                  (unsigned) (adev->gmc.real_vram_size / (1024 * 1024)));
>
> --
> 2.14.1
>
> _______________________________________________
> 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] 18+ messages in thread

* Re: [PATCH 7/7] drm/amdgpu: move reserving GDS/GWS/OA into common code
       [not found]     ` <20180914191246.1609-7-christian.koenig-5C7GfCeVMHo@public.gmane.org>
@ 2018-09-14 20:18       ` Alex Deucher
  0 siblings, 0 replies; 18+ messages in thread
From: Alex Deucher @ 2018-09-14 20:18 UTC (permalink / raw)
  To: Christian König; +Cc: amd-gfx list

On Fri, Sep 14, 2018 at 3:13 PM Christian König
<ckoenig.leichtzumerken@gmail.com> wrote:
>
> We don't need that in the per ASIC code.
>
> Signed-off-by: Christian König <christian.koenig@amd.com>

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 18 ++++++++++++++++++
>  drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c   | 19 -------------------
>  drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c   | 19 -------------------
>  drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c   | 19 -------------------
>  4 files changed, 18 insertions(+), 57 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index 438390fce714..cf93a9831318 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -1848,6 +1848,12 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
>                 return r;
>         }
>
> +       r = amdgpu_bo_create_kernel(adev, adev->gds.mem.gfx_partition_size,
> +                                   PAGE_SIZE, AMDGPU_GEM_DOMAIN_GDS,
> +                                   &adev->gds.gds_gfx_bo, NULL, NULL);
> +       if (r)
> +               return r;
> +
>         r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GWS,
>                            adev->gds.gws.total_size);
>         if (r) {
> @@ -1855,6 +1861,12 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
>                 return r;
>         }
>
> +       r = amdgpu_bo_create_kernel(adev, adev->gds.gws.gfx_partition_size,
> +                                   PAGE_SIZE, AMDGPU_GEM_DOMAIN_GWS,
> +                                   &adev->gds.gws_gfx_bo, NULL, NULL);
> +       if (r)
> +               return r;
> +
>         r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_OA,
>                            adev->gds.oa.total_size);
>         if (r) {
> @@ -1862,6 +1874,12 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
>                 return r;
>         }
>
> +       r = amdgpu_bo_create_kernel(adev, adev->gds.oa.gfx_partition_size,
> +                                   PAGE_SIZE, AMDGPU_GEM_DOMAIN_OA,
> +                                   &adev->gds.oa_gfx_bo, NULL, NULL);
> +       if (r)
> +               return r;
> +
>         /* Register debugfs entries for amdgpu_ttm */
>         r = amdgpu_ttm_debugfs_init(adev);
>         if (r) {
> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
> index c0f9732cbaf7..fc39ebbc9d9f 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
> @@ -4582,25 +4582,6 @@ static int gfx_v7_0_sw_init(void *handle)
>                 }
>         }
>
> -       /* reserve GDS, GWS and OA resource for gfx */
> -       r = amdgpu_bo_create_kernel(adev, adev->gds.mem.gfx_partition_size,
> -                                   PAGE_SIZE, AMDGPU_GEM_DOMAIN_GDS,
> -                                   &adev->gds.gds_gfx_bo, NULL, NULL);
> -       if (r)
> -               return r;
> -
> -       r = amdgpu_bo_create_kernel(adev, adev->gds.gws.gfx_partition_size,
> -                                   PAGE_SIZE, AMDGPU_GEM_DOMAIN_GWS,
> -                                   &adev->gds.gws_gfx_bo, NULL, NULL);
> -       if (r)
> -               return r;
> -
> -       r = amdgpu_bo_create_kernel(adev, adev->gds.oa.gfx_partition_size,
> -                                   PAGE_SIZE, AMDGPU_GEM_DOMAIN_OA,
> -                                   &adev->gds.oa_gfx_bo, NULL, NULL);
> -       if (r)
> -               return r;
> -
>         adev->gfx.ce_ram_size = 0x8000;
>
>         gfx_v7_0_gpu_early_init(adev);
> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
> index 57e4b14e3bd1..5d9fd2c2c244 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
> @@ -2161,25 +2161,6 @@ static int gfx_v8_0_sw_init(void *handle)
>         if (r)
>                 return r;
>
> -       /* reserve GDS, GWS and OA resource for gfx */
> -       r = amdgpu_bo_create_kernel(adev, adev->gds.mem.gfx_partition_size,
> -                                   PAGE_SIZE, AMDGPU_GEM_DOMAIN_GDS,
> -                                   &adev->gds.gds_gfx_bo, NULL, NULL);
> -       if (r)
> -               return r;
> -
> -       r = amdgpu_bo_create_kernel(adev, adev->gds.gws.gfx_partition_size,
> -                                   PAGE_SIZE, AMDGPU_GEM_DOMAIN_GWS,
> -                                   &adev->gds.gws_gfx_bo, NULL, NULL);
> -       if (r)
> -               return r;
> -
> -       r = amdgpu_bo_create_kernel(adev, adev->gds.oa.gfx_partition_size,
> -                                   PAGE_SIZE, AMDGPU_GEM_DOMAIN_OA,
> -                                   &adev->gds.oa_gfx_bo, NULL, NULL);
> -       if (r)
> -               return r;
> -
>         adev->gfx.ce_ram_size = 0x8000;
>
>         r = gfx_v8_0_gpu_early_init(adev);
> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> index d31a2bc00d61..c075c0b6bb2b 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> @@ -1700,25 +1700,6 @@ static int gfx_v9_0_sw_init(void *handle)
>         if (r)
>                 return r;
>
> -       /* reserve GDS, GWS and OA resource for gfx */
> -       r = amdgpu_bo_create_kernel(adev, adev->gds.mem.gfx_partition_size,
> -                                   PAGE_SIZE, AMDGPU_GEM_DOMAIN_GDS,
> -                                   &adev->gds.gds_gfx_bo, NULL, NULL);
> -       if (r)
> -               return r;
> -
> -       r = amdgpu_bo_create_kernel(adev, adev->gds.gws.gfx_partition_size,
> -                                   PAGE_SIZE, AMDGPU_GEM_DOMAIN_GWS,
> -                                   &adev->gds.gws_gfx_bo, NULL, NULL);
> -       if (r)
> -               return r;
> -
> -       r = amdgpu_bo_create_kernel(adev, adev->gds.oa.gfx_partition_size,
> -                                   PAGE_SIZE, AMDGPU_GEM_DOMAIN_OA,
> -                                   &adev->gds.oa_gfx_bo, NULL, NULL);
> -       if (r)
> -               return r;
> -
>         adev->gfx.ce_ram_size = 0x8000;
>
>         r = gfx_v9_0_gpu_early_init(adev);
> --
> 2.14.1
>
> _______________________________________________
> 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] 18+ messages in thread

* Re: [PATCH 2/7] drm/amdgpu: fix up GDS/GWS/OA shifting
       [not found]     ` <20180914191246.1609-2-christian.koenig-5C7GfCeVMHo@public.gmane.org>
@ 2018-09-14 20:26       ` Alex Deucher
       [not found]         ` <CADnq5_PjhBf1_DB6bgTiafPf=DE_g3AY+FsuZ0pj+4VDNPhRJg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 18+ messages in thread
From: Alex Deucher @ 2018-09-14 20:26 UTC (permalink / raw)
  To: Christian König; +Cc: amd-gfx list

On Fri, Sep 14, 2018 at 3:12 PM Christian König
<ckoenig.leichtzumerken@gmail.com> wrote:
>
> That only worked by pure coincident. Completely remove the shifting and
> always apply correct PAGE_SHIFT.
>
> Signed-off-by: Christian König <christian.koenig@amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c     | 12 ++++++------
>  drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h    |  7 -------
>  drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c    | 12 +++---------
>  drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c    | 14 +++++++-------
>  drivers/gpu/drm/amd/amdgpu/amdgpu_object.c |  6 +++++-
>  drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c    | 15 +++------------
>  drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c      |  9 ---------
>  drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c      |  9 ---------
>  drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c      | 12 +-----------
>  9 files changed, 25 insertions(+), 71 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> index d762d78e5102..8836186eb5ef 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> @@ -721,16 +721,16 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p,
>                 e->bo_va = amdgpu_vm_bo_find(vm, ttm_to_amdgpu_bo(e->tv.bo));
>
>         if (gds) {
> -               p->job->gds_base = amdgpu_bo_gpu_offset(gds);
> -               p->job->gds_size = amdgpu_bo_size(gds);
> +               p->job->gds_base = amdgpu_bo_gpu_offset(gds) >> PAGE_SHIFT;
> +               p->job->gds_size = amdgpu_bo_size(gds) >> PAGE_SHIFT;
>         }
>         if (gws) {
> -               p->job->gws_base = amdgpu_bo_gpu_offset(gws);
> -               p->job->gws_size = amdgpu_bo_size(gws);
> +               p->job->gws_base = amdgpu_bo_gpu_offset(gws) >> PAGE_SHIFT;
> +               p->job->gws_size = amdgpu_bo_size(gws) >> PAGE_SHIFT;
>         }
>         if (oa) {
> -               p->job->oa_base = amdgpu_bo_gpu_offset(oa);
> -               p->job->oa_size = amdgpu_bo_size(oa);
> +               p->job->oa_base = amdgpu_bo_gpu_offset(oa) >> PAGE_SHIFT;
> +               p->job->oa_size = amdgpu_bo_size(oa) >> PAGE_SHIFT;
>         }
>
>         if (!r && p->uf_entry.tv.bo) {
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h
> index e73728d90388..ecbcefe49a98 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h
> @@ -24,13 +24,6 @@
>  #ifndef __AMDGPU_GDS_H__
>  #define __AMDGPU_GDS_H__
>
> -/* Because TTM request that alloacted buffer should be PAGE_SIZE aligned,
> - * we should report GDS/GWS/OA size as PAGE_SIZE aligned
> - * */
> -#define AMDGPU_GDS_SHIFT       2
> -#define AMDGPU_GWS_SHIFT       PAGE_SHIFT
> -#define AMDGPU_OA_SHIFT                PAGE_SHIFT
> -
>  struct amdgpu_ring;
>  struct amdgpu_bo;
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> index d30a0838851b..7b3d1ebda9df 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> @@ -244,16 +244,10 @@ int amdgpu_gem_create_ioctl(struct drm_device *dev, void *data,
>                         return -EINVAL;
>                 }
>                 flags |= AMDGPU_GEM_CREATE_NO_CPU_ACCESS;
> -               if (args->in.domains == AMDGPU_GEM_DOMAIN_GDS)
> -                       size = size << AMDGPU_GDS_SHIFT;
> -               else if (args->in.domains == AMDGPU_GEM_DOMAIN_GWS)
> -                       size = size << AMDGPU_GWS_SHIFT;
> -               else if (args->in.domains == AMDGPU_GEM_DOMAIN_OA)
> -                       size = size << AMDGPU_OA_SHIFT;
> -               else
> -                       return -EINVAL;
> +               /* GDS allocations must be DW aligned */
> +               if (args->in.domains & AMDGPU_GEM_DOMAIN_GDS)
> +                       size = ALIGN(size, 4);
>         }
> -       size = roundup(size, PAGE_SIZE);
>
>         if (flags & AMDGPU_GEM_CREATE_VM_ALWAYS_VALID) {
>                 r = amdgpu_bo_reserve(vm->root.base.bo, false);
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> index b766270d86cb..64cc483db973 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> @@ -528,13 +528,13 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file
>                 struct drm_amdgpu_info_gds gds_info;
>
>                 memset(&gds_info, 0, sizeof(gds_info));
> -               gds_info.gds_gfx_partition_size = adev->gds.mem.gfx_partition_size >> AMDGPU_GDS_SHIFT;
> -               gds_info.compute_partition_size = adev->gds.mem.cs_partition_size >> AMDGPU_GDS_SHIFT;
> -               gds_info.gds_total_size = adev->gds.mem.total_size >> AMDGPU_GDS_SHIFT;
> -               gds_info.gws_per_gfx_partition = adev->gds.gws.gfx_partition_size >> AMDGPU_GWS_SHIFT;
> -               gds_info.gws_per_compute_partition = adev->gds.gws.cs_partition_size >> AMDGPU_GWS_SHIFT;
> -               gds_info.oa_per_gfx_partition = adev->gds.oa.gfx_partition_size >> AMDGPU_OA_SHIFT;
> -               gds_info.oa_per_compute_partition = adev->gds.oa.cs_partition_size >> AMDGPU_OA_SHIFT;
> +               gds_info.gds_gfx_partition_size = adev->gds.mem.gfx_partition_size;
> +               gds_info.compute_partition_size = adev->gds.mem.cs_partition_size;
> +               gds_info.gds_total_size = adev->gds.mem.total_size;
> +               gds_info.gws_per_gfx_partition = adev->gds.gws.gfx_partition_size;
> +               gds_info.gws_per_compute_partition = adev->gds.gws.cs_partition_size;
> +               gds_info.oa_per_gfx_partition = adev->gds.oa.gfx_partition_size;
> +               gds_info.oa_per_compute_partition = adev->gds.oa.cs_partition_size;
>                 return copy_to_user(out, &gds_info,
>                                     min((size_t)size, sizeof(gds_info))) ? -EFAULT : 0;
>         }
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> index e6909252aefa..e1f32a196f6d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> @@ -433,7 +433,11 @@ static int amdgpu_bo_do_create(struct amdgpu_device *adev,
>         int r;
>
>         page_align = roundup(bp->byte_align, PAGE_SIZE) >> PAGE_SHIFT;
> -       size = ALIGN(size, PAGE_SIZE);
> +       if (bp->domain & (AMDGPU_GEM_DOMAIN_GDS | AMDGPU_GEM_DOMAIN_GWS |
> +                         AMDGPU_GEM_DOMAIN_OA))
> +               size <<= PAGE_SHIFT;
> +       else
> +               size = ALIGN(size, PAGE_SIZE);

Is this right for GDS?  I think we need to be in 4K units regardless
of the page size.  I have to admit, all the shifting is mixing me up.

Alex

>
>         if (!amdgpu_bo_validate_size(adev, size, bp->domain))
>                 return -ENOMEM;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index 1565344cc139..c691275cd1f0 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -1825,19 +1825,10 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
>                  (unsigned)(gtt_size / (1024 * 1024)));
>
>         /* Initialize various on-chip memory pools */
> -       adev->gds.mem.total_size = adev->gds.mem.total_size << AMDGPU_GDS_SHIFT;
> -       adev->gds.mem.gfx_partition_size = adev->gds.mem.gfx_partition_size << AMDGPU_GDS_SHIFT;
> -       adev->gds.mem.cs_partition_size = adev->gds.mem.cs_partition_size << AMDGPU_GDS_SHIFT;
> -       adev->gds.gws.total_size = adev->gds.gws.total_size << AMDGPU_GWS_SHIFT;
> -       adev->gds.gws.gfx_partition_size = adev->gds.gws.gfx_partition_size << AMDGPU_GWS_SHIFT;
> -       adev->gds.gws.cs_partition_size = adev->gds.gws.cs_partition_size << AMDGPU_GWS_SHIFT;
> -       adev->gds.oa.total_size = adev->gds.oa.total_size << AMDGPU_OA_SHIFT;
> -       adev->gds.oa.gfx_partition_size = adev->gds.oa.gfx_partition_size << AMDGPU_OA_SHIFT;
> -       adev->gds.oa.cs_partition_size = adev->gds.oa.cs_partition_size << AMDGPU_OA_SHIFT;
>         /* GDS Memory */
>         if (adev->gds.mem.total_size) {
>                 r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GDS,
> -                                  adev->gds.mem.total_size >> PAGE_SHIFT);
> +                                  adev->gds.mem.total_size);
>                 if (r) {
>                         DRM_ERROR("Failed initializing GDS heap.\n");
>                         return r;
> @@ -1847,7 +1838,7 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
>         /* GWS */
>         if (adev->gds.gws.total_size) {
>                 r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GWS,
> -                                  adev->gds.gws.total_size >> PAGE_SHIFT);
> +                                  adev->gds.gws.total_size);
>                 if (r) {
>                         DRM_ERROR("Failed initializing gws heap.\n");
>                         return r;
> @@ -1857,7 +1848,7 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
>         /* OA */
>         if (adev->gds.oa.total_size) {
>                 r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_OA,
> -                                  adev->gds.oa.total_size >> PAGE_SHIFT);
> +                                  adev->gds.oa.total_size);
>                 if (r) {
>                         DRM_ERROR("Failed initializing oa heap.\n");
>                         return r;
> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
> index a15d9c0f233b..c0f9732cbaf7 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
> @@ -4170,15 +4170,6 @@ static void gfx_v7_0_ring_emit_gds_switch(struct amdgpu_ring *ring,
>                                           uint32_t gws_base, uint32_t gws_size,
>                                           uint32_t oa_base, uint32_t oa_size)
>  {
> -       gds_base = gds_base >> AMDGPU_GDS_SHIFT;
> -       gds_size = gds_size >> AMDGPU_GDS_SHIFT;
> -
> -       gws_base = gws_base >> AMDGPU_GWS_SHIFT;
> -       gws_size = gws_size >> AMDGPU_GWS_SHIFT;
> -
> -       oa_base = oa_base >> AMDGPU_OA_SHIFT;
> -       oa_size = oa_size >> AMDGPU_OA_SHIFT;
> -
>         /* GDS Base */
>         amdgpu_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, 3));
>         amdgpu_ring_write(ring, (WRITE_DATA_ENGINE_SEL(0) |
> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
> index 3882689b2d8f..57e4b14e3bd1 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
> @@ -5396,15 +5396,6 @@ static void gfx_v8_0_ring_emit_gds_switch(struct amdgpu_ring *ring,
>                                           uint32_t gws_base, uint32_t gws_size,
>                                           uint32_t oa_base, uint32_t oa_size)
>  {
> -       gds_base = gds_base >> AMDGPU_GDS_SHIFT;
> -       gds_size = gds_size >> AMDGPU_GDS_SHIFT;
> -
> -       gws_base = gws_base >> AMDGPU_GWS_SHIFT;
> -       gws_size = gws_size >> AMDGPU_GWS_SHIFT;
> -
> -       oa_base = oa_base >> AMDGPU_OA_SHIFT;
> -       oa_size = oa_size >> AMDGPU_OA_SHIFT;
> -
>         /* GDS Base */
>         amdgpu_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, 3));
>         amdgpu_ring_write(ring, (WRITE_DATA_ENGINE_SEL(0) |
> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> index 75a91663019f..d31a2bc00d61 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> @@ -1527,8 +1527,7 @@ static int gfx_v9_0_ngg_en(struct amdgpu_device *adev)
>         gfx_v9_0_write_data_to_reg(ring, 0, false,
>                                    SOC15_REG_OFFSET(GC, 0, mmGDS_VMID0_SIZE),
>                                    (adev->gds.mem.total_size +
> -                                   adev->gfx.ngg.gds_reserve_size) >>
> -                                  AMDGPU_GDS_SHIFT);
> +                                   adev->gfx.ngg.gds_reserve_size));
>
>         amdgpu_ring_write(ring, PACKET3(PACKET3_DMA_DATA, 5));
>         amdgpu_ring_write(ring, (PACKET3_DMA_DATA_CP_SYNC |
> @@ -3472,15 +3471,6 @@ static void gfx_v9_0_ring_emit_gds_switch(struct amdgpu_ring *ring,
>  {
>         struct amdgpu_device *adev = ring->adev;
>
> -       gds_base = gds_base >> AMDGPU_GDS_SHIFT;
> -       gds_size = gds_size >> AMDGPU_GDS_SHIFT;
> -
> -       gws_base = gws_base >> AMDGPU_GWS_SHIFT;
> -       gws_size = gws_size >> AMDGPU_GWS_SHIFT;
> -
> -       oa_base = oa_base >> AMDGPU_OA_SHIFT;
> -       oa_size = oa_size >> AMDGPU_OA_SHIFT;
> -
>         /* GDS Base */
>         gfx_v9_0_write_data_to_reg(ring, 0, false,
>                                    SOC15_REG_OFFSET(GC, 0, mmGDS_VMID0_BASE) + 2 * vmid,
> --
> 2.14.1
>
> _______________________________________________
> 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] 18+ messages in thread

* Re: [PATCH 2/7] drm/amdgpu: fix up GDS/GWS/OA shifting
       [not found]         ` <CADnq5_PjhBf1_DB6bgTiafPf=DE_g3AY+FsuZ0pj+4VDNPhRJg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2018-09-15  7:52           ` Christian König
       [not found]             ` <aac8a166-b879-2694-6938-f7104f1903b9-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 18+ messages in thread
From: Christian König @ 2018-09-15  7:52 UTC (permalink / raw)
  To: Alex Deucher; +Cc: amd-gfx list

Am 14.09.2018 um 22:26 schrieb Alex Deucher:
> On Fri, Sep 14, 2018 at 3:12 PM Christian König
> <ckoenig.leichtzumerken@gmail.com> wrote:
>> That only worked by pure coincident. Completely remove the shifting and
>> always apply correct PAGE_SHIFT.
>>
>> Signed-off-by: Christian König <christian.koenig@amd.com>
>> ---
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c     | 12 ++++++------
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h    |  7 -------
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c    | 12 +++---------
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c    | 14 +++++++-------
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_object.c |  6 +++++-
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c    | 15 +++------------
>>   drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c      |  9 ---------
>>   drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c      |  9 ---------
>>   drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c      | 12 +-----------
>>   9 files changed, 25 insertions(+), 71 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
>> index d762d78e5102..8836186eb5ef 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
>> @@ -721,16 +721,16 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p,
>>                  e->bo_va = amdgpu_vm_bo_find(vm, ttm_to_amdgpu_bo(e->tv.bo));
>>
>>          if (gds) {
>> -               p->job->gds_base = amdgpu_bo_gpu_offset(gds);
>> -               p->job->gds_size = amdgpu_bo_size(gds);
>> +               p->job->gds_base = amdgpu_bo_gpu_offset(gds) >> PAGE_SHIFT;
>> +               p->job->gds_size = amdgpu_bo_size(gds) >> PAGE_SHIFT;
>>          }
>>          if (gws) {
>> -               p->job->gws_base = amdgpu_bo_gpu_offset(gws);
>> -               p->job->gws_size = amdgpu_bo_size(gws);
>> +               p->job->gws_base = amdgpu_bo_gpu_offset(gws) >> PAGE_SHIFT;
>> +               p->job->gws_size = amdgpu_bo_size(gws) >> PAGE_SHIFT;
>>          }
>>          if (oa) {
>> -               p->job->oa_base = amdgpu_bo_gpu_offset(oa);
>> -               p->job->oa_size = amdgpu_bo_size(oa);
>> +               p->job->oa_base = amdgpu_bo_gpu_offset(oa) >> PAGE_SHIFT;
>> +               p->job->oa_size = amdgpu_bo_size(oa) >> PAGE_SHIFT;
>>          }
>>
>>          if (!r && p->uf_entry.tv.bo) {
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h
>> index e73728d90388..ecbcefe49a98 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h
>> @@ -24,13 +24,6 @@
>>   #ifndef __AMDGPU_GDS_H__
>>   #define __AMDGPU_GDS_H__
>>
>> -/* Because TTM request that alloacted buffer should be PAGE_SIZE aligned,
>> - * we should report GDS/GWS/OA size as PAGE_SIZE aligned
>> - * */
>> -#define AMDGPU_GDS_SHIFT       2
>> -#define AMDGPU_GWS_SHIFT       PAGE_SHIFT
>> -#define AMDGPU_OA_SHIFT                PAGE_SHIFT
>> -
>>   struct amdgpu_ring;
>>   struct amdgpu_bo;
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
>> index d30a0838851b..7b3d1ebda9df 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
>> @@ -244,16 +244,10 @@ int amdgpu_gem_create_ioctl(struct drm_device *dev, void *data,
>>                          return -EINVAL;
>>                  }
>>                  flags |= AMDGPU_GEM_CREATE_NO_CPU_ACCESS;
>> -               if (args->in.domains == AMDGPU_GEM_DOMAIN_GDS)
>> -                       size = size << AMDGPU_GDS_SHIFT;
>> -               else if (args->in.domains == AMDGPU_GEM_DOMAIN_GWS)
>> -                       size = size << AMDGPU_GWS_SHIFT;
>> -               else if (args->in.domains == AMDGPU_GEM_DOMAIN_OA)
>> -                       size = size << AMDGPU_OA_SHIFT;
>> -               else
>> -                       return -EINVAL;
>> +               /* GDS allocations must be DW aligned */
>> +               if (args->in.domains & AMDGPU_GEM_DOMAIN_GDS)
>> +                       size = ALIGN(size, 4);
>>          }
>> -       size = roundup(size, PAGE_SIZE);
>>
>>          if (flags & AMDGPU_GEM_CREATE_VM_ALWAYS_VALID) {
>>                  r = amdgpu_bo_reserve(vm->root.base.bo, false);
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
>> index b766270d86cb..64cc483db973 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
>> @@ -528,13 +528,13 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file
>>                  struct drm_amdgpu_info_gds gds_info;
>>
>>                  memset(&gds_info, 0, sizeof(gds_info));
>> -               gds_info.gds_gfx_partition_size = adev->gds.mem.gfx_partition_size >> AMDGPU_GDS_SHIFT;
>> -               gds_info.compute_partition_size = adev->gds.mem.cs_partition_size >> AMDGPU_GDS_SHIFT;
>> -               gds_info.gds_total_size = adev->gds.mem.total_size >> AMDGPU_GDS_SHIFT;
>> -               gds_info.gws_per_gfx_partition = adev->gds.gws.gfx_partition_size >> AMDGPU_GWS_SHIFT;
>> -               gds_info.gws_per_compute_partition = adev->gds.gws.cs_partition_size >> AMDGPU_GWS_SHIFT;
>> -               gds_info.oa_per_gfx_partition = adev->gds.oa.gfx_partition_size >> AMDGPU_OA_SHIFT;
>> -               gds_info.oa_per_compute_partition = adev->gds.oa.cs_partition_size >> AMDGPU_OA_SHIFT;
>> +               gds_info.gds_gfx_partition_size = adev->gds.mem.gfx_partition_size;
>> +               gds_info.compute_partition_size = adev->gds.mem.cs_partition_size;
>> +               gds_info.gds_total_size = adev->gds.mem.total_size;
>> +               gds_info.gws_per_gfx_partition = adev->gds.gws.gfx_partition_size;
>> +               gds_info.gws_per_compute_partition = adev->gds.gws.cs_partition_size;
>> +               gds_info.oa_per_gfx_partition = adev->gds.oa.gfx_partition_size;
>> +               gds_info.oa_per_compute_partition = adev->gds.oa.cs_partition_size;
>>                  return copy_to_user(out, &gds_info,
>>                                      min((size_t)size, sizeof(gds_info))) ? -EFAULT : 0;
>>          }
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
>> index e6909252aefa..e1f32a196f6d 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
>> @@ -433,7 +433,11 @@ static int amdgpu_bo_do_create(struct amdgpu_device *adev,
>>          int r;
>>
>>          page_align = roundup(bp->byte_align, PAGE_SIZE) >> PAGE_SHIFT;
>> -       size = ALIGN(size, PAGE_SIZE);
>> +       if (bp->domain & (AMDGPU_GEM_DOMAIN_GDS | AMDGPU_GEM_DOMAIN_GWS |
>> +                         AMDGPU_GEM_DOMAIN_OA))
>> +               size <<= PAGE_SHIFT;
>> +       else
>> +               size = ALIGN(size, PAGE_SIZE);
> Is this right for GDS?  I think we need to be in 4K units regardless
> of the page size.  I have to admit, all the shifting is mixing me up.

Yeah, that is indeed correct. GDS only needs DW alignment.

The shifting is purely done because TTM wants to work with pages and not 
bytes.

Andrey already said he wanted to clean that up when there is time.

Christian.

>
> Alex
>
>>          if (!amdgpu_bo_validate_size(adev, size, bp->domain))
>>                  return -ENOMEM;
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>> index 1565344cc139..c691275cd1f0 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>> @@ -1825,19 +1825,10 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
>>                   (unsigned)(gtt_size / (1024 * 1024)));
>>
>>          /* Initialize various on-chip memory pools */
>> -       adev->gds.mem.total_size = adev->gds.mem.total_size << AMDGPU_GDS_SHIFT;
>> -       adev->gds.mem.gfx_partition_size = adev->gds.mem.gfx_partition_size << AMDGPU_GDS_SHIFT;
>> -       adev->gds.mem.cs_partition_size = adev->gds.mem.cs_partition_size << AMDGPU_GDS_SHIFT;
>> -       adev->gds.gws.total_size = adev->gds.gws.total_size << AMDGPU_GWS_SHIFT;
>> -       adev->gds.gws.gfx_partition_size = adev->gds.gws.gfx_partition_size << AMDGPU_GWS_SHIFT;
>> -       adev->gds.gws.cs_partition_size = adev->gds.gws.cs_partition_size << AMDGPU_GWS_SHIFT;
>> -       adev->gds.oa.total_size = adev->gds.oa.total_size << AMDGPU_OA_SHIFT;
>> -       adev->gds.oa.gfx_partition_size = adev->gds.oa.gfx_partition_size << AMDGPU_OA_SHIFT;
>> -       adev->gds.oa.cs_partition_size = adev->gds.oa.cs_partition_size << AMDGPU_OA_SHIFT;
>>          /* GDS Memory */
>>          if (adev->gds.mem.total_size) {
>>                  r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GDS,
>> -                                  adev->gds.mem.total_size >> PAGE_SHIFT);
>> +                                  adev->gds.mem.total_size);
>>                  if (r) {
>>                          DRM_ERROR("Failed initializing GDS heap.\n");
>>                          return r;
>> @@ -1847,7 +1838,7 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
>>          /* GWS */
>>          if (adev->gds.gws.total_size) {
>>                  r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GWS,
>> -                                  adev->gds.gws.total_size >> PAGE_SHIFT);
>> +                                  adev->gds.gws.total_size);
>>                  if (r) {
>>                          DRM_ERROR("Failed initializing gws heap.\n");
>>                          return r;
>> @@ -1857,7 +1848,7 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
>>          /* OA */
>>          if (adev->gds.oa.total_size) {
>>                  r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_OA,
>> -                                  adev->gds.oa.total_size >> PAGE_SHIFT);
>> +                                  adev->gds.oa.total_size);
>>                  if (r) {
>>                          DRM_ERROR("Failed initializing oa heap.\n");
>>                          return r;
>> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
>> index a15d9c0f233b..c0f9732cbaf7 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
>> @@ -4170,15 +4170,6 @@ static void gfx_v7_0_ring_emit_gds_switch(struct amdgpu_ring *ring,
>>                                            uint32_t gws_base, uint32_t gws_size,
>>                                            uint32_t oa_base, uint32_t oa_size)
>>   {
>> -       gds_base = gds_base >> AMDGPU_GDS_SHIFT;
>> -       gds_size = gds_size >> AMDGPU_GDS_SHIFT;
>> -
>> -       gws_base = gws_base >> AMDGPU_GWS_SHIFT;
>> -       gws_size = gws_size >> AMDGPU_GWS_SHIFT;
>> -
>> -       oa_base = oa_base >> AMDGPU_OA_SHIFT;
>> -       oa_size = oa_size >> AMDGPU_OA_SHIFT;
>> -
>>          /* GDS Base */
>>          amdgpu_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, 3));
>>          amdgpu_ring_write(ring, (WRITE_DATA_ENGINE_SEL(0) |
>> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
>> index 3882689b2d8f..57e4b14e3bd1 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
>> @@ -5396,15 +5396,6 @@ static void gfx_v8_0_ring_emit_gds_switch(struct amdgpu_ring *ring,
>>                                            uint32_t gws_base, uint32_t gws_size,
>>                                            uint32_t oa_base, uint32_t oa_size)
>>   {
>> -       gds_base = gds_base >> AMDGPU_GDS_SHIFT;
>> -       gds_size = gds_size >> AMDGPU_GDS_SHIFT;
>> -
>> -       gws_base = gws_base >> AMDGPU_GWS_SHIFT;
>> -       gws_size = gws_size >> AMDGPU_GWS_SHIFT;
>> -
>> -       oa_base = oa_base >> AMDGPU_OA_SHIFT;
>> -       oa_size = oa_size >> AMDGPU_OA_SHIFT;
>> -
>>          /* GDS Base */
>>          amdgpu_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, 3));
>>          amdgpu_ring_write(ring, (WRITE_DATA_ENGINE_SEL(0) |
>> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
>> index 75a91663019f..d31a2bc00d61 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
>> @@ -1527,8 +1527,7 @@ static int gfx_v9_0_ngg_en(struct amdgpu_device *adev)
>>          gfx_v9_0_write_data_to_reg(ring, 0, false,
>>                                     SOC15_REG_OFFSET(GC, 0, mmGDS_VMID0_SIZE),
>>                                     (adev->gds.mem.total_size +
>> -                                   adev->gfx.ngg.gds_reserve_size) >>
>> -                                  AMDGPU_GDS_SHIFT);
>> +                                   adev->gfx.ngg.gds_reserve_size));
>>
>>          amdgpu_ring_write(ring, PACKET3(PACKET3_DMA_DATA, 5));
>>          amdgpu_ring_write(ring, (PACKET3_DMA_DATA_CP_SYNC |
>> @@ -3472,15 +3471,6 @@ static void gfx_v9_0_ring_emit_gds_switch(struct amdgpu_ring *ring,
>>   {
>>          struct amdgpu_device *adev = ring->adev;
>>
>> -       gds_base = gds_base >> AMDGPU_GDS_SHIFT;
>> -       gds_size = gds_size >> AMDGPU_GDS_SHIFT;
>> -
>> -       gws_base = gws_base >> AMDGPU_GWS_SHIFT;
>> -       gws_size = gws_size >> AMDGPU_GWS_SHIFT;
>> -
>> -       oa_base = oa_base >> AMDGPU_OA_SHIFT;
>> -       oa_size = oa_size >> AMDGPU_OA_SHIFT;
>> -
>>          /* GDS Base */
>>          gfx_v9_0_write_data_to_reg(ring, 0, false,
>>                                     SOC15_REG_OFFSET(GC, 0, mmGDS_VMID0_BASE) + 2 * vmid,
>> --
>> 2.14.1
>>
>> _______________________________________________
>> 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] 18+ messages in thread

* Re: [PATCH 4/7] drm/amdgpu: initialize GDS/GWS/OA domains even when they are zero sized
       [not found]         ` <CADnq5_OEi6MBaHp7qx_0dS9SbxCrXiyKPSx5xKdq-3FwtTBsNg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2018-09-17 12:25           ` Christian König
  0 siblings, 0 replies; 18+ messages in thread
From: Christian König @ 2018-09-17 12:25 UTC (permalink / raw)
  To: Alex Deucher; +Cc: amd-gfx list

Am 14.09.2018 um 22:14 schrieb Alex Deucher:
> On Fri, Sep 14, 2018 at 3:12 PM Christian König
> <ckoenig.leichtzumerken@gmail.com> wrote:
>> Stops crashing on SI.
>>
>> Signed-off-by: Christian König <christian.koenig@amd.com>
> Presumably ttm allows this?

Yes, actually explicitly tested this.

Christian.

> Acked-by: Alex Deucher <alexander.deucher@amd.com>
>
>> ---
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 48 +++++++++++++--------------------
>>   1 file changed, 18 insertions(+), 30 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>> index 3e450159fe1f..710e7751c567 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>> @@ -1843,34 +1843,25 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
>>                   (unsigned)(gtt_size / (1024 * 1024)));
>>
>>          /* Initialize various on-chip memory pools */
>> -       /* GDS Memory */
>> -       if (adev->gds.mem.total_size) {
>> -               r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GDS,
>> -                                  adev->gds.mem.total_size);
>> -               if (r) {
>> -                       DRM_ERROR("Failed initializing GDS heap.\n");
>> -                       return r;
>> -               }
>> +       r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GDS,
>> +                          adev->gds.mem.total_size);
>> +       if (r) {
>> +               DRM_ERROR("Failed initializing GDS heap.\n");
>> +               return r;
>>          }
>>
>> -       /* GWS */
>> -       if (adev->gds.gws.total_size) {
>> -               r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GWS,
>> -                                  adev->gds.gws.total_size);
>> -               if (r) {
>> -                       DRM_ERROR("Failed initializing gws heap.\n");
>> -                       return r;
>> -               }
>> +       r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GWS,
>> +                          adev->gds.gws.total_size);
>> +       if (r) {
>> +               DRM_ERROR("Failed initializing gws heap.\n");
>> +               return r;
>>          }
>>
>> -       /* OA */
>> -       if (adev->gds.oa.total_size) {
>> -               r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_OA,
>> -                                  adev->gds.oa.total_size);
>> -               if (r) {
>> -                       DRM_ERROR("Failed initializing oa heap.\n");
>> -                       return r;
>> -               }
>> +       r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_OA,
>> +                          adev->gds.oa.total_size);
>> +       if (r) {
>> +               DRM_ERROR("Failed initializing oa heap.\n");
>> +               return r;
>>          }
>>
>>          /* Register debugfs entries for amdgpu_ttm */
>> @@ -1907,12 +1898,9 @@ void amdgpu_ttm_fini(struct amdgpu_device *adev)
>>
>>          ttm_bo_clean_mm(&adev->mman.bdev, TTM_PL_VRAM);
>>          ttm_bo_clean_mm(&adev->mman.bdev, TTM_PL_TT);
>> -       if (adev->gds.mem.total_size)
>> -               ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_GDS);
>> -       if (adev->gds.gws.total_size)
>> -               ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_GWS);
>> -       if (adev->gds.oa.total_size)
>> -               ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_OA);
>> +       ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_GDS);
>> +       ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_GWS);
>> +       ttm_bo_clean_mm(&adev->mman.bdev, AMDGPU_PL_OA);
>>          ttm_bo_device_release(&adev->mman.bdev);
>>          amdgpu_ttm_global_fini(adev);
>>          adev->mman.initialized = false;
>> --
>> 2.14.1
>>
>> _______________________________________________
>> 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] 18+ messages in thread

* Re: [PATCH 2/7] drm/amdgpu: fix up GDS/GWS/OA shifting
       [not found]             ` <aac8a166-b879-2694-6938-f7104f1903b9-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 2018-09-17 12:27               ` Christian König
  2018-09-17 14:32               ` Deucher, Alexander
  1 sibling, 0 replies; 18+ messages in thread
From: Christian König @ 2018-09-17 12:27 UTC (permalink / raw)
  To: Alex Deucher; +Cc: amd-gfx list

Am 15.09.2018 um 09:52 schrieb Christian König:
> Am 14.09.2018 um 22:26 schrieb Alex Deucher:
>> On Fri, Sep 14, 2018 at 3:12 PM Christian König
>> <ckoenig.leichtzumerken@gmail.com> wrote:
>>> That only worked by pure coincident. Completely remove the shifting and
>>> always apply correct PAGE_SHIFT.
>>>
>>> Signed-off-by: Christian König <christian.koenig@amd.com>
>>> ---
>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c     | 12 ++++++------
>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h    |  7 -------
>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c    | 12 +++---------
>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c    | 14 +++++++-------
>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_object.c |  6 +++++-
>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c    | 15 +++------------
>>>   drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c      |  9 ---------
>>>   drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c      |  9 ---------
>>>   drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c      | 12 +-----------
>>>   9 files changed, 25 insertions(+), 71 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c 
>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
>>> index d762d78e5102..8836186eb5ef 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
>>> @@ -721,16 +721,16 @@ static int amdgpu_cs_parser_bos(struct 
>>> amdgpu_cs_parser *p,
>>>                  e->bo_va = amdgpu_vm_bo_find(vm, 
>>> ttm_to_amdgpu_bo(e->tv.bo));
>>>
>>>          if (gds) {
>>> -               p->job->gds_base = amdgpu_bo_gpu_offset(gds);
>>> -               p->job->gds_size = amdgpu_bo_size(gds);
>>> +               p->job->gds_base = amdgpu_bo_gpu_offset(gds) >> 
>>> PAGE_SHIFT;
>>> +               p->job->gds_size = amdgpu_bo_size(gds) >> PAGE_SHIFT;
>>>          }
>>>          if (gws) {
>>> -               p->job->gws_base = amdgpu_bo_gpu_offset(gws);
>>> -               p->job->gws_size = amdgpu_bo_size(gws);
>>> +               p->job->gws_base = amdgpu_bo_gpu_offset(gws) >> 
>>> PAGE_SHIFT;
>>> +               p->job->gws_size = amdgpu_bo_size(gws) >> PAGE_SHIFT;
>>>          }
>>>          if (oa) {
>>> -               p->job->oa_base = amdgpu_bo_gpu_offset(oa);
>>> -               p->job->oa_size = amdgpu_bo_size(oa);
>>> +               p->job->oa_base = amdgpu_bo_gpu_offset(oa) >> 
>>> PAGE_SHIFT;
>>> +               p->job->oa_size = amdgpu_bo_size(oa) >> PAGE_SHIFT;
>>>          }
>>>
>>>          if (!r && p->uf_entry.tv.bo) {
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h 
>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h
>>> index e73728d90388..ecbcefe49a98 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h
>>> @@ -24,13 +24,6 @@
>>>   #ifndef __AMDGPU_GDS_H__
>>>   #define __AMDGPU_GDS_H__
>>>
>>> -/* Because TTM request that alloacted buffer should be PAGE_SIZE 
>>> aligned,
>>> - * we should report GDS/GWS/OA size as PAGE_SIZE aligned
>>> - * */
>>> -#define AMDGPU_GDS_SHIFT       2
>>> -#define AMDGPU_GWS_SHIFT       PAGE_SHIFT
>>> -#define AMDGPU_OA_SHIFT                PAGE_SHIFT
>>> -
>>>   struct amdgpu_ring;
>>>   struct amdgpu_bo;
>>>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c 
>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
>>> index d30a0838851b..7b3d1ebda9df 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
>>> @@ -244,16 +244,10 @@ int amdgpu_gem_create_ioctl(struct drm_device 
>>> *dev, void *data,
>>>                          return -EINVAL;
>>>                  }
>>>                  flags |= AMDGPU_GEM_CREATE_NO_CPU_ACCESS;
>>> -               if (args->in.domains == AMDGPU_GEM_DOMAIN_GDS)
>>> -                       size = size << AMDGPU_GDS_SHIFT;
>>> -               else if (args->in.domains == AMDGPU_GEM_DOMAIN_GWS)
>>> -                       size = size << AMDGPU_GWS_SHIFT;
>>> -               else if (args->in.domains == AMDGPU_GEM_DOMAIN_OA)
>>> -                       size = size << AMDGPU_OA_SHIFT;
>>> -               else
>>> -                       return -EINVAL;
>>> +               /* GDS allocations must be DW aligned */
>>> +               if (args->in.domains & AMDGPU_GEM_DOMAIN_GDS)
>>> +                       size = ALIGN(size, 4);
>>>          }
>>> -       size = roundup(size, PAGE_SIZE);
>>>
>>>          if (flags & AMDGPU_GEM_CREATE_VM_ALWAYS_VALID) {
>>>                  r = amdgpu_bo_reserve(vm->root.base.bo, false);
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c 
>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
>>> index b766270d86cb..64cc483db973 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
>>> @@ -528,13 +528,13 @@ static int amdgpu_info_ioctl(struct drm_device 
>>> *dev, void *data, struct drm_file
>>>                  struct drm_amdgpu_info_gds gds_info;
>>>
>>>                  memset(&gds_info, 0, sizeof(gds_info));
>>> -               gds_info.gds_gfx_partition_size = 
>>> adev->gds.mem.gfx_partition_size >> AMDGPU_GDS_SHIFT;
>>> -               gds_info.compute_partition_size = 
>>> adev->gds.mem.cs_partition_size >> AMDGPU_GDS_SHIFT;
>>> -               gds_info.gds_total_size = adev->gds.mem.total_size 
>>> >> AMDGPU_GDS_SHIFT;
>>> -               gds_info.gws_per_gfx_partition = 
>>> adev->gds.gws.gfx_partition_size >> AMDGPU_GWS_SHIFT;
>>> -               gds_info.gws_per_compute_partition = 
>>> adev->gds.gws.cs_partition_size >> AMDGPU_GWS_SHIFT;
>>> -               gds_info.oa_per_gfx_partition = 
>>> adev->gds.oa.gfx_partition_size >> AMDGPU_OA_SHIFT;
>>> -               gds_info.oa_per_compute_partition = 
>>> adev->gds.oa.cs_partition_size >> AMDGPU_OA_SHIFT;
>>> +               gds_info.gds_gfx_partition_size = 
>>> adev->gds.mem.gfx_partition_size;
>>> +               gds_info.compute_partition_size = 
>>> adev->gds.mem.cs_partition_size;
>>> +               gds_info.gds_total_size = adev->gds.mem.total_size;
>>> +               gds_info.gws_per_gfx_partition = 
>>> adev->gds.gws.gfx_partition_size;
>>> +               gds_info.gws_per_compute_partition = 
>>> adev->gds.gws.cs_partition_size;
>>> +               gds_info.oa_per_gfx_partition = 
>>> adev->gds.oa.gfx_partition_size;
>>> +               gds_info.oa_per_compute_partition = 
>>> adev->gds.oa.cs_partition_size;
>>>                  return copy_to_user(out, &gds_info,
>>>                                      min((size_t)size, 
>>> sizeof(gds_info))) ? -EFAULT : 0;
>>>          }
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c 
>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
>>> index e6909252aefa..e1f32a196f6d 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
>>> @@ -433,7 +433,11 @@ static int amdgpu_bo_do_create(struct 
>>> amdgpu_device *adev,
>>>          int r;
>>>
>>>          page_align = roundup(bp->byte_align, PAGE_SIZE) >> PAGE_SHIFT;
>>> -       size = ALIGN(size, PAGE_SIZE);
>>> +       if (bp->domain & (AMDGPU_GEM_DOMAIN_GDS | 
>>> AMDGPU_GEM_DOMAIN_GWS |
>>> +                         AMDGPU_GEM_DOMAIN_OA))
>>> +               size <<= PAGE_SHIFT;
>>> +       else
>>> +               size = ALIGN(size, PAGE_SIZE);
>> Is this right for GDS?  I think we need to be in 4K units regardless
>> of the page size.  I have to admit, all the shifting is mixing me up.
>
> Yeah, that is indeed correct. GDS only needs DW alignment.

Can anybody give me an rb or ab? Only things left in to review in this 
series.

Christian.

>
> The shifting is purely done because TTM wants to work with pages and 
> not bytes.
>
> Andrey already said he wanted to clean that up when there is time.
>
> Christian.
>
>>
>> Alex
>>
>>>          if (!amdgpu_bo_validate_size(adev, size, bp->domain))
>>>                  return -ENOMEM;
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c 
>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>>> index 1565344cc139..c691275cd1f0 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>>> @@ -1825,19 +1825,10 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
>>>                   (unsigned)(gtt_size / (1024 * 1024)));
>>>
>>>          /* Initialize various on-chip memory pools */
>>> -       adev->gds.mem.total_size = adev->gds.mem.total_size << 
>>> AMDGPU_GDS_SHIFT;
>>> -       adev->gds.mem.gfx_partition_size = 
>>> adev->gds.mem.gfx_partition_size << AMDGPU_GDS_SHIFT;
>>> -       adev->gds.mem.cs_partition_size = 
>>> adev->gds.mem.cs_partition_size << AMDGPU_GDS_SHIFT;
>>> -       adev->gds.gws.total_size = adev->gds.gws.total_size << 
>>> AMDGPU_GWS_SHIFT;
>>> -       adev->gds.gws.gfx_partition_size = 
>>> adev->gds.gws.gfx_partition_size << AMDGPU_GWS_SHIFT;
>>> -       adev->gds.gws.cs_partition_size = 
>>> adev->gds.gws.cs_partition_size << AMDGPU_GWS_SHIFT;
>>> -       adev->gds.oa.total_size = adev->gds.oa.total_size << 
>>> AMDGPU_OA_SHIFT;
>>> -       adev->gds.oa.gfx_partition_size = 
>>> adev->gds.oa.gfx_partition_size << AMDGPU_OA_SHIFT;
>>> -       adev->gds.oa.cs_partition_size = 
>>> adev->gds.oa.cs_partition_size << AMDGPU_OA_SHIFT;
>>>          /* GDS Memory */
>>>          if (adev->gds.mem.total_size) {
>>>                  r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GDS,
>>> -                                  adev->gds.mem.total_size >> 
>>> PAGE_SHIFT);
>>> + adev->gds.mem.total_size);
>>>                  if (r) {
>>>                          DRM_ERROR("Failed initializing GDS heap.\n");
>>>                          return r;
>>> @@ -1847,7 +1838,7 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
>>>          /* GWS */
>>>          if (adev->gds.gws.total_size) {
>>>                  r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GWS,
>>> -                                  adev->gds.gws.total_size >> 
>>> PAGE_SHIFT);
>>> + adev->gds.gws.total_size);
>>>                  if (r) {
>>>                          DRM_ERROR("Failed initializing gws heap.\n");
>>>                          return r;
>>> @@ -1857,7 +1848,7 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
>>>          /* OA */
>>>          if (adev->gds.oa.total_size) {
>>>                  r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_OA,
>>> -                                  adev->gds.oa.total_size >> 
>>> PAGE_SHIFT);
>>> + adev->gds.oa.total_size);
>>>                  if (r) {
>>>                          DRM_ERROR("Failed initializing oa heap.\n");
>>>                          return r;
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c 
>>> b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
>>> index a15d9c0f233b..c0f9732cbaf7 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
>>> @@ -4170,15 +4170,6 @@ static void 
>>> gfx_v7_0_ring_emit_gds_switch(struct amdgpu_ring *ring,
>>>                                            uint32_t gws_base, 
>>> uint32_t gws_size,
>>>                                            uint32_t oa_base, 
>>> uint32_t oa_size)
>>>   {
>>> -       gds_base = gds_base >> AMDGPU_GDS_SHIFT;
>>> -       gds_size = gds_size >> AMDGPU_GDS_SHIFT;
>>> -
>>> -       gws_base = gws_base >> AMDGPU_GWS_SHIFT;
>>> -       gws_size = gws_size >> AMDGPU_GWS_SHIFT;
>>> -
>>> -       oa_base = oa_base >> AMDGPU_OA_SHIFT;
>>> -       oa_size = oa_size >> AMDGPU_OA_SHIFT;
>>> -
>>>          /* GDS Base */
>>>          amdgpu_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, 3));
>>>          amdgpu_ring_write(ring, (WRITE_DATA_ENGINE_SEL(0) |
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c 
>>> b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
>>> index 3882689b2d8f..57e4b14e3bd1 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
>>> @@ -5396,15 +5396,6 @@ static void 
>>> gfx_v8_0_ring_emit_gds_switch(struct amdgpu_ring *ring,
>>>                                            uint32_t gws_base, 
>>> uint32_t gws_size,
>>>                                            uint32_t oa_base, 
>>> uint32_t oa_size)
>>>   {
>>> -       gds_base = gds_base >> AMDGPU_GDS_SHIFT;
>>> -       gds_size = gds_size >> AMDGPU_GDS_SHIFT;
>>> -
>>> -       gws_base = gws_base >> AMDGPU_GWS_SHIFT;
>>> -       gws_size = gws_size >> AMDGPU_GWS_SHIFT;
>>> -
>>> -       oa_base = oa_base >> AMDGPU_OA_SHIFT;
>>> -       oa_size = oa_size >> AMDGPU_OA_SHIFT;
>>> -
>>>          /* GDS Base */
>>>          amdgpu_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, 3));
>>>          amdgpu_ring_write(ring, (WRITE_DATA_ENGINE_SEL(0) |
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c 
>>> b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
>>> index 75a91663019f..d31a2bc00d61 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
>>> @@ -1527,8 +1527,7 @@ static int gfx_v9_0_ngg_en(struct 
>>> amdgpu_device *adev)
>>>          gfx_v9_0_write_data_to_reg(ring, 0, false,
>>>                                     SOC15_REG_OFFSET(GC, 0, 
>>> mmGDS_VMID0_SIZE),
>>> (adev->gds.mem.total_size +
>>> - adev->gfx.ngg.gds_reserve_size) >>
>>> -                                  AMDGPU_GDS_SHIFT);
>>> + adev->gfx.ngg.gds_reserve_size));
>>>
>>>          amdgpu_ring_write(ring, PACKET3(PACKET3_DMA_DATA, 5));
>>>          amdgpu_ring_write(ring, (PACKET3_DMA_DATA_CP_SYNC |
>>> @@ -3472,15 +3471,6 @@ static void 
>>> gfx_v9_0_ring_emit_gds_switch(struct amdgpu_ring *ring,
>>>   {
>>>          struct amdgpu_device *adev = ring->adev;
>>>
>>> -       gds_base = gds_base >> AMDGPU_GDS_SHIFT;
>>> -       gds_size = gds_size >> AMDGPU_GDS_SHIFT;
>>> -
>>> -       gws_base = gws_base >> AMDGPU_GWS_SHIFT;
>>> -       gws_size = gws_size >> AMDGPU_GWS_SHIFT;
>>> -
>>> -       oa_base = oa_base >> AMDGPU_OA_SHIFT;
>>> -       oa_size = oa_size >> AMDGPU_OA_SHIFT;
>>> -
>>>          /* GDS Base */
>>>          gfx_v9_0_write_data_to_reg(ring, 0, false,
>>>                                     SOC15_REG_OFFSET(GC, 0, 
>>> mmGDS_VMID0_BASE) + 2 * vmid,
>>> -- 
>>> 2.14.1
>>>
>>> _______________________________________________
>>> 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] 18+ messages in thread

* RE: [PATCH 2/7] drm/amdgpu: fix up GDS/GWS/OA shifting
       [not found]             ` <aac8a166-b879-2694-6938-f7104f1903b9-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  2018-09-17 12:27               ` Christian König
@ 2018-09-17 14:32               ` Deucher, Alexander
  1 sibling, 0 replies; 18+ messages in thread
From: Deucher, Alexander @ 2018-09-17 14:32 UTC (permalink / raw)
  To: Koenig, Christian, Alex Deucher; +Cc: amd-gfx list

> -----Original Message-----
> From: amd-gfx <amd-gfx-bounces@lists.freedesktop.org> On Behalf Of
> Christian König
> Sent: Saturday, September 15, 2018 3:52 AM
> To: Alex Deucher <alexdeucher@gmail.com>
> Cc: amd-gfx list <amd-gfx@lists.freedesktop.org>
> Subject: Re: [PATCH 2/7] drm/amdgpu: fix up GDS/GWS/OA shifting
> 
> Am 14.09.2018 um 22:26 schrieb Alex Deucher:
> > On Fri, Sep 14, 2018 at 3:12 PM Christian König
> > <ckoenig.leichtzumerken@gmail.com> wrote:
> >> That only worked by pure coincident. Completely remove the shifting
> >> and always apply correct PAGE_SHIFT.
> >>
> >> Signed-off-by: Christian König <christian.koenig@amd.com>
> >> ---
> >>   drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c     | 12 ++++++------
> >>   drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h    |  7 -------
> >>   drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c    | 12 +++---------
> >>   drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c    | 14 +++++++-------
> >>   drivers/gpu/drm/amd/amdgpu/amdgpu_object.c |  6 +++++-
> >>   drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c    | 15 +++------------
> >>   drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c      |  9 ---------
> >>   drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c      |  9 ---------
> >>   drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c      | 12 +-----------
> >>   9 files changed, 25 insertions(+), 71 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> >> b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> >> index d762d78e5102..8836186eb5ef 100644
> >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> >> @@ -721,16 +721,16 @@ static int amdgpu_cs_parser_bos(struct
> amdgpu_cs_parser *p,
> >>                  e->bo_va = amdgpu_vm_bo_find(vm,
> >> ttm_to_amdgpu_bo(e->tv.bo));
> >>
> >>          if (gds) {
> >> -               p->job->gds_base = amdgpu_bo_gpu_offset(gds);
> >> -               p->job->gds_size = amdgpu_bo_size(gds);
> >> +               p->job->gds_base = amdgpu_bo_gpu_offset(gds) >>
> PAGE_SHIFT;
> >> +               p->job->gds_size = amdgpu_bo_size(gds) >> PAGE_SHIFT;
> >>          }
> >>          if (gws) {
> >> -               p->job->gws_base = amdgpu_bo_gpu_offset(gws);
> >> -               p->job->gws_size = amdgpu_bo_size(gws);
> >> +               p->job->gws_base = amdgpu_bo_gpu_offset(gws) >>
> PAGE_SHIFT;
> >> +               p->job->gws_size = amdgpu_bo_size(gws) >> PAGE_SHIFT;
> >>          }
> >>          if (oa) {
> >> -               p->job->oa_base = amdgpu_bo_gpu_offset(oa);
> >> -               p->job->oa_size = amdgpu_bo_size(oa);
> >> +               p->job->oa_base = amdgpu_bo_gpu_offset(oa) >> PAGE_SHIFT;
> >> +               p->job->oa_size = amdgpu_bo_size(oa) >> PAGE_SHIFT;
> >>          }
> >>
> >>          if (!r && p->uf_entry.tv.bo) { diff --git
> >> a/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h
> >> b/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h
> >> index e73728d90388..ecbcefe49a98 100644
> >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h
> >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h
> >> @@ -24,13 +24,6 @@
> >>   #ifndef __AMDGPU_GDS_H__
> >>   #define __AMDGPU_GDS_H__
> >>
> >> -/* Because TTM request that alloacted buffer should be PAGE_SIZE
> >> aligned,
> >> - * we should report GDS/GWS/OA size as PAGE_SIZE aligned
> >> - * */
> >> -#define AMDGPU_GDS_SHIFT       2
> >> -#define AMDGPU_GWS_SHIFT       PAGE_SHIFT
> >> -#define AMDGPU_OA_SHIFT                PAGE_SHIFT
> >> -
> >>   struct amdgpu_ring;
> >>   struct amdgpu_bo;
> >>
> >> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> >> b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> >> index d30a0838851b..7b3d1ebda9df 100644
> >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> >> @@ -244,16 +244,10 @@ int amdgpu_gem_create_ioctl(struct
> drm_device *dev, void *data,
> >>                          return -EINVAL;
> >>                  }
> >>                  flags |= AMDGPU_GEM_CREATE_NO_CPU_ACCESS;
> >> -               if (args->in.domains == AMDGPU_GEM_DOMAIN_GDS)
> >> -                       size = size << AMDGPU_GDS_SHIFT;
> >> -               else if (args->in.domains == AMDGPU_GEM_DOMAIN_GWS)
> >> -                       size = size << AMDGPU_GWS_SHIFT;
> >> -               else if (args->in.domains == AMDGPU_GEM_DOMAIN_OA)
> >> -                       size = size << AMDGPU_OA_SHIFT;
> >> -               else
> >> -                       return -EINVAL;
> >> +               /* GDS allocations must be DW aligned */
> >> +               if (args->in.domains & AMDGPU_GEM_DOMAIN_GDS)
> >> +                       size = ALIGN(size, 4);
> >>          }
> >> -       size = roundup(size, PAGE_SIZE);
> >>
> >>          if (flags & AMDGPU_GEM_CREATE_VM_ALWAYS_VALID) {
> >>                  r = amdgpu_bo_reserve(vm->root.base.bo, false); diff
> >> --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> >> b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> >> index b766270d86cb..64cc483db973 100644
> >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> >> @@ -528,13 +528,13 @@ static int amdgpu_info_ioctl(struct drm_device
> *dev, void *data, struct drm_file
> >>                  struct drm_amdgpu_info_gds gds_info;
> >>
> >>                  memset(&gds_info, 0, sizeof(gds_info));
> >> -               gds_info.gds_gfx_partition_size = adev-
> >gds.mem.gfx_partition_size >> AMDGPU_GDS_SHIFT;
> >> -               gds_info.compute_partition_size = adev-
> >gds.mem.cs_partition_size >> AMDGPU_GDS_SHIFT;
> >> -               gds_info.gds_total_size = adev->gds.mem.total_size >>
> AMDGPU_GDS_SHIFT;
> >> -               gds_info.gws_per_gfx_partition = adev-
> >gds.gws.gfx_partition_size >> AMDGPU_GWS_SHIFT;
> >> -               gds_info.gws_per_compute_partition = adev-
> >gds.gws.cs_partition_size >> AMDGPU_GWS_SHIFT;
> >> -               gds_info.oa_per_gfx_partition = adev->gds.oa.gfx_partition_size
> >> AMDGPU_OA_SHIFT;
> >> -               gds_info.oa_per_compute_partition = adev-
> >gds.oa.cs_partition_size >> AMDGPU_OA_SHIFT;
> >> +               gds_info.gds_gfx_partition_size = adev-
> >gds.mem.gfx_partition_size;
> >> +               gds_info.compute_partition_size = adev-
> >gds.mem.cs_partition_size;
> >> +               gds_info.gds_total_size = adev->gds.mem.total_size;
> >> +               gds_info.gws_per_gfx_partition = adev-
> >gds.gws.gfx_partition_size;
> >> +               gds_info.gws_per_compute_partition = adev-
> >gds.gws.cs_partition_size;
> >> +               gds_info.oa_per_gfx_partition = adev-
> >gds.oa.gfx_partition_size;
> >> +               gds_info.oa_per_compute_partition =
> >> + adev->gds.oa.cs_partition_size;
> >>                  return copy_to_user(out, &gds_info,
> >>                                      min((size_t)size, sizeof(gds_info))) ? -EFAULT : 0;
> >>          }
> >> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> >> b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> >> index e6909252aefa..e1f32a196f6d 100644
> >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> >> @@ -433,7 +433,11 @@ static int amdgpu_bo_do_create(struct
> amdgpu_device *adev,
> >>          int r;
> >>
> >>          page_align = roundup(bp->byte_align, PAGE_SIZE) >> PAGE_SHIFT;
> >> -       size = ALIGN(size, PAGE_SIZE);
> >> +       if (bp->domain & (AMDGPU_GEM_DOMAIN_GDS |
> AMDGPU_GEM_DOMAIN_GWS |
> >> +                         AMDGPU_GEM_DOMAIN_OA))
> >> +               size <<= PAGE_SHIFT;
> >> +       else
> >> +               size = ALIGN(size, PAGE_SIZE);
> > Is this right for GDS?  I think we need to be in 4K units regardless
> > of the page size.  I have to admit, all the shifting is mixing me up.
> 
> Yeah, that is indeed correct. GDS only needs DW alignment.
> 
> The shifting is purely done because TTM wants to work with pages and not
> bytes.
> 
> Andrey already said he wanted to clean that up when there is time.


Acked-by: Alex Deucher <alexander.deucher@amd.com>



> 
> Christian.
> 
> >
> > Alex
> >
> >>          if (!amdgpu_bo_validate_size(adev, size, bp->domain))
> >>                  return -ENOMEM;
> >> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> >> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> >> index 1565344cc139..c691275cd1f0 100644
> >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> >> @@ -1825,19 +1825,10 @@ int amdgpu_ttm_init(struct amdgpu_device
> *adev)
> >>                   (unsigned)(gtt_size / (1024 * 1024)));
> >>
> >>          /* Initialize various on-chip memory pools */
> >> -       adev->gds.mem.total_size = adev->gds.mem.total_size <<
> AMDGPU_GDS_SHIFT;
> >> -       adev->gds.mem.gfx_partition_size = adev-
> >gds.mem.gfx_partition_size << AMDGPU_GDS_SHIFT;
> >> -       adev->gds.mem.cs_partition_size = adev-
> >gds.mem.cs_partition_size << AMDGPU_GDS_SHIFT;
> >> -       adev->gds.gws.total_size = adev->gds.gws.total_size <<
> AMDGPU_GWS_SHIFT;
> >> -       adev->gds.gws.gfx_partition_size = adev-
> >gds.gws.gfx_partition_size << AMDGPU_GWS_SHIFT;
> >> -       adev->gds.gws.cs_partition_size = adev->gds.gws.cs_partition_size
> << AMDGPU_GWS_SHIFT;
> >> -       adev->gds.oa.total_size = adev->gds.oa.total_size <<
> AMDGPU_OA_SHIFT;
> >> -       adev->gds.oa.gfx_partition_size = adev->gds.oa.gfx_partition_size
> << AMDGPU_OA_SHIFT;
> >> -       adev->gds.oa.cs_partition_size = adev->gds.oa.cs_partition_size <<
> AMDGPU_OA_SHIFT;
> >>          /* GDS Memory */
> >>          if (adev->gds.mem.total_size) {
> >>                  r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GDS,
> >> -                                  adev->gds.mem.total_size >> PAGE_SHIFT);
> >> +                                  adev->gds.mem.total_size);
> >>                  if (r) {
> >>                          DRM_ERROR("Failed initializing GDS heap.\n");
> >>                          return r;
> >> @@ -1847,7 +1838,7 @@ int amdgpu_ttm_init(struct amdgpu_device
> *adev)
> >>          /* GWS */
> >>          if (adev->gds.gws.total_size) {
> >>                  r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_GWS,
> >> -                                  adev->gds.gws.total_size >> PAGE_SHIFT);
> >> +                                  adev->gds.gws.total_size);
> >>                  if (r) {
> >>                          DRM_ERROR("Failed initializing gws heap.\n");
> >>                          return r;
> >> @@ -1857,7 +1848,7 @@ int amdgpu_ttm_init(struct amdgpu_device
> *adev)
> >>          /* OA */
> >>          if (adev->gds.oa.total_size) {
> >>                  r = ttm_bo_init_mm(&adev->mman.bdev, AMDGPU_PL_OA,
> >> -                                  adev->gds.oa.total_size >> PAGE_SHIFT);
> >> +                                  adev->gds.oa.total_size);
> >>                  if (r) {
> >>                          DRM_ERROR("Failed initializing oa heap.\n");
> >>                          return r;
> >> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
> >> b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
> >> index a15d9c0f233b..c0f9732cbaf7 100644
> >> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
> >> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
> >> @@ -4170,15 +4170,6 @@ static void
> gfx_v7_0_ring_emit_gds_switch(struct amdgpu_ring *ring,
> >>                                            uint32_t gws_base, uint32_t gws_size,
> >>                                            uint32_t oa_base, uint32_t oa_size)
> >>   {
> >> -       gds_base = gds_base >> AMDGPU_GDS_SHIFT;
> >> -       gds_size = gds_size >> AMDGPU_GDS_SHIFT;
> >> -
> >> -       gws_base = gws_base >> AMDGPU_GWS_SHIFT;
> >> -       gws_size = gws_size >> AMDGPU_GWS_SHIFT;
> >> -
> >> -       oa_base = oa_base >> AMDGPU_OA_SHIFT;
> >> -       oa_size = oa_size >> AMDGPU_OA_SHIFT;
> >> -
> >>          /* GDS Base */
> >>          amdgpu_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, 3));
> >>          amdgpu_ring_write(ring, (WRITE_DATA_ENGINE_SEL(0) | diff
> >> --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
> >> b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
> >> index 3882689b2d8f..57e4b14e3bd1 100644
> >> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
> >> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
> >> @@ -5396,15 +5396,6 @@ static void
> gfx_v8_0_ring_emit_gds_switch(struct amdgpu_ring *ring,
> >>                                            uint32_t gws_base, uint32_t gws_size,
> >>                                            uint32_t oa_base, uint32_t oa_size)
> >>   {
> >> -       gds_base = gds_base >> AMDGPU_GDS_SHIFT;
> >> -       gds_size = gds_size >> AMDGPU_GDS_SHIFT;
> >> -
> >> -       gws_base = gws_base >> AMDGPU_GWS_SHIFT;
> >> -       gws_size = gws_size >> AMDGPU_GWS_SHIFT;
> >> -
> >> -       oa_base = oa_base >> AMDGPU_OA_SHIFT;
> >> -       oa_size = oa_size >> AMDGPU_OA_SHIFT;
> >> -
> >>          /* GDS Base */
> >>          amdgpu_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, 3));
> >>          amdgpu_ring_write(ring, (WRITE_DATA_ENGINE_SEL(0) | diff
> >> --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> >> b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> >> index 75a91663019f..d31a2bc00d61 100644
> >> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> >> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> >> @@ -1527,8 +1527,7 @@ static int gfx_v9_0_ngg_en(struct
> amdgpu_device *adev)
> >>          gfx_v9_0_write_data_to_reg(ring, 0, false,
> >>                                     SOC15_REG_OFFSET(GC, 0, mmGDS_VMID0_SIZE),
> >>                                     (adev->gds.mem.total_size +
> >> -                                   adev->gfx.ngg.gds_reserve_size) >>
> >> -                                  AMDGPU_GDS_SHIFT);
> >> +                                   adev->gfx.ngg.gds_reserve_size));
> >>
> >>          amdgpu_ring_write(ring, PACKET3(PACKET3_DMA_DATA, 5));
> >>          amdgpu_ring_write(ring, (PACKET3_DMA_DATA_CP_SYNC | @@
> >> -3472,15 +3471,6 @@ static void gfx_v9_0_ring_emit_gds_switch(struct
> amdgpu_ring *ring,
> >>   {
> >>          struct amdgpu_device *adev = ring->adev;
> >>
> >> -       gds_base = gds_base >> AMDGPU_GDS_SHIFT;
> >> -       gds_size = gds_size >> AMDGPU_GDS_SHIFT;
> >> -
> >> -       gws_base = gws_base >> AMDGPU_GWS_SHIFT;
> >> -       gws_size = gws_size >> AMDGPU_GWS_SHIFT;
> >> -
> >> -       oa_base = oa_base >> AMDGPU_OA_SHIFT;
> >> -       oa_size = oa_size >> AMDGPU_OA_SHIFT;
> >> -
> >>          /* GDS Base */
> >>          gfx_v9_0_write_data_to_reg(ring, 0, false,
> >>                                     SOC15_REG_OFFSET(GC, 0,
> >> mmGDS_VMID0_BASE) + 2 * vmid,
> >> --
> >> 2.14.1
> >>
> >> _______________________________________________
> >> 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
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

end of thread, other threads:[~2018-09-17 14:32 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-14 19:12 [PATCH 1/7] drm/amdgpu: add GDS, GWS and OA debugfs files Christian König
     [not found] ` <20180914191246.1609-1-christian.koenig-5C7GfCeVMHo@public.gmane.org>
2018-09-14 19:12   ` [PATCH 2/7] drm/amdgpu: fix up GDS/GWS/OA shifting Christian König
     [not found]     ` <20180914191246.1609-2-christian.koenig-5C7GfCeVMHo@public.gmane.org>
2018-09-14 20:26       ` Alex Deucher
     [not found]         ` <CADnq5_PjhBf1_DB6bgTiafPf=DE_g3AY+FsuZ0pj+4VDNPhRJg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-09-15  7:52           ` Christian König
     [not found]             ` <aac8a166-b879-2694-6938-f7104f1903b9-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2018-09-17 12:27               ` Christian König
2018-09-17 14:32               ` Deucher, Alexander
2018-09-14 19:12   ` [PATCH 3/7] drm/amdgpu: stop crashing on GDS/GWS/OA eviction Christian König
     [not found]     ` <20180914191246.1609-3-christian.koenig-5C7GfCeVMHo@public.gmane.org>
2018-09-14 20:07       ` Alex Deucher
2018-09-14 19:12   ` [PATCH 4/7] drm/amdgpu: initialize GDS/GWS/OA domains even when they are zero sized Christian König
     [not found]     ` <20180914191246.1609-4-christian.koenig-5C7GfCeVMHo@public.gmane.org>
2018-09-14 20:14       ` Alex Deucher
     [not found]         ` <CADnq5_OEi6MBaHp7qx_0dS9SbxCrXiyKPSx5xKdq-3FwtTBsNg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-09-17 12:25           ` Christian König
2018-09-14 19:12   ` [PATCH 5/7] drm/amdgpu: don't allocate zero sized kernel BOs Christian König
     [not found]     ` <20180914191246.1609-5-christian.koenig-5C7GfCeVMHo@public.gmane.org>
2018-09-14 20:16       ` Alex Deucher
2018-09-14 19:12   ` [PATCH 6/7] drm/amdgpu: drop size check Christian König
     [not found]     ` <20180914191246.1609-6-christian.koenig-5C7GfCeVMHo@public.gmane.org>
2018-09-14 20:17       ` Alex Deucher
2018-09-14 19:12   ` [PATCH 7/7] drm/amdgpu: move reserving GDS/GWS/OA into common code Christian König
     [not found]     ` <20180914191246.1609-7-christian.koenig-5C7GfCeVMHo@public.gmane.org>
2018-09-14 20:18       ` Alex Deucher
2018-09-14 20:07   ` [PATCH 1/7] drm/amdgpu: add GDS, GWS and OA debugfs files 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.