[5/6] drm/amdgpu: add new gttsize module parameter

Submitted by Christian König on July 7, 2017, 11:53 a.m.

Details

Message ID 1499428397-1416-5-git-send-email-deathsimple@vodafone.de
State New
Headers show
Series "Series without cover letter" ( rev: 1 ) in AMD X.Org drivers

Not browsing as part of any series.

Commit Message

Christian König July 7, 2017, 11:53 a.m.
From: Christian König <christian.koenig@amd.com>

This allows setting the gtt size independent of the gart size.

Signed-off-by: Christian König <christian.koenig@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu.h        |  1 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c |  7 +++++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c    |  4 ++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c    | 12 +++++++++---
 4 files changed, 21 insertions(+), 3 deletions(-)

Patch hide | download patch | download mbox

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index 5c5643a..94bbf71 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -77,6 +77,7 @@ 
 extern int amdgpu_modeset;
 extern int amdgpu_vram_limit;
 extern int amdgpu_gart_size;
+extern int amdgpu_gtt_size;
 extern int amdgpu_moverate;
 extern int amdgpu_benchmarking;
 extern int amdgpu_testing;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 1addad4..8ef7e5e 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -1137,6 +1137,13 @@  static void amdgpu_check_arguments(struct amdgpu_device *adev)
 		}
 	}
 
+	if (amdgpu_gtt_size != -1 && amdgpu_gtt_size < 32) {
+		/* gtt size must be greater or equal to 32M */
+		dev_warn(adev->dev, "gtt size (%d) too small\n",
+				 amdgpu_gtt_size);
+		amdgpu_gtt_size = -1;
+	}
+
 	amdgpu_check_vm_size(adev);
 
 	amdgpu_check_block_size(adev);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
index 271c9d5..b7c6cee 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
@@ -75,6 +75,7 @@ 
 
 int amdgpu_vram_limit = 0;
 int amdgpu_gart_size = -1; /* auto */
+int amdgpu_gtt_size = -1; /* auto */
 int amdgpu_moverate = -1; /* auto */
 int amdgpu_benchmarking = 0;
 int amdgpu_testing = 0;
@@ -124,6 +125,9 @@  module_param_named(vramlimit, amdgpu_vram_limit, int, 0600);
 MODULE_PARM_DESC(gartsize, "Size of PCIE/IGP gart to setup in megabytes (32, 64, etc., -1 = auto)");
 module_param_named(gartsize, amdgpu_gart_size, int, 0600);
 
+MODULE_PARM_DESC(gttsize, "Size of the GTT domain in megabytes (-1 = auto)");
+module_param_named(gttsize, amdgpu_gtt_size, int, 0600);
+
 MODULE_PARM_DESC(moverate, "Maximum buffer migration rate in MB/s. (32, 64, etc., -1=auto, 0=1=disabled)");
 module_param_named(moverate, amdgpu_moverate, int, 0600);
 
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index f300af2..ffd72d2 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -1097,6 +1097,7 @@  static struct ttm_bo_driver amdgpu_bo_driver = {
 
 int amdgpu_ttm_init(struct amdgpu_device *adev)
 {
+	uint64_t gtt_size;
 	int r;
 
 	r = amdgpu_ttm_global_init(adev);
@@ -1143,14 +1144,19 @@  int amdgpu_ttm_init(struct amdgpu_device *adev)
 	}
 	DRM_INFO("amdgpu: %uM of VRAM memory ready\n",
 		 (unsigned) (adev->mc.real_vram_size / (1024 * 1024)));
-	r = ttm_bo_init_mm(&adev->mman.bdev, TTM_PL_TT,
-				adev->mc.gart_size >> PAGE_SHIFT);
+
+	if (amdgpu_gart_size == -1)
+		gtt_size = max((AMDGPU_DEFAULT_GTT_SIZE_MB << 20),
+			       adev->mc.mc_vram_size);
+	else
+		gtt_size = (uint64_t)amdgpu_gart_size << 20;
+	r = ttm_bo_init_mm(&adev->mman.bdev, TTM_PL_TT, gtt_size >> PAGE_SHIFT);
 	if (r) {
 		DRM_ERROR("Failed initializing GTT heap.\n");
 		return r;
 	}
 	DRM_INFO("amdgpu: %uM of GTT memory ready.\n",
-		 (unsigned)(adev->mc.gart_size / (1024 * 1024)));
+		 (unsigned)(gtt_size / (1024 * 1024)));
 
 	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;

Comments

> -----Original Message-----

> From: amd-gfx [mailto:amd-gfx-bounces@lists.freedesktop.org] On Behalf

> Of Christian König

> Sent: Friday, July 07, 2017 7:53 AM

> To: amd-gfx@lists.freedesktop.org

> Subject: [PATCH 5/6] drm/amdgpu: add new gttsize module parameter

> 

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

> 

> This allows setting the gtt size independent of the gart size.

> 

> Signed-off-by: Christian König <christian.koenig@amd.com>

> ---

>  drivers/gpu/drm/amd/amdgpu/amdgpu.h        |  1 +

>  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c |  7 +++++++

>  drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c    |  4 ++++

>  drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c    | 12 +++++++++---

>  4 files changed, 21 insertions(+), 3 deletions(-)

> 

> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h

> b/drivers/gpu/drm/amd/amdgpu/amdgpu.h

> index 5c5643a..94bbf71 100644

> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h

> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h

> @@ -77,6 +77,7 @@

>  extern int amdgpu_modeset;

>  extern int amdgpu_vram_limit;

>  extern int amdgpu_gart_size;

> +extern int amdgpu_gtt_size;

>  extern int amdgpu_moverate;

>  extern int amdgpu_benchmarking;

>  extern int amdgpu_testing;

> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c

> b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c

> index 1addad4..8ef7e5e 100644

> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c

> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c

> @@ -1137,6 +1137,13 @@ static void amdgpu_check_arguments(struct

> amdgpu_device *adev)

>  		}

>  	}

> 

> +	if (amdgpu_gtt_size != -1 && amdgpu_gtt_size < 32) {

> +		/* gtt size must be greater or equal to 32M */

> +		dev_warn(adev->dev, "gtt size (%d) too small\n",

> +				 amdgpu_gtt_size);

> +		amdgpu_gtt_size = -1;

> +	}

> +

>  	amdgpu_check_vm_size(adev);

> 

>  	amdgpu_check_block_size(adev);

> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c

> b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c

> index 271c9d5..b7c6cee 100644

> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c

> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c

> @@ -75,6 +75,7 @@

> 

>  int amdgpu_vram_limit = 0;

>  int amdgpu_gart_size = -1; /* auto */

> +int amdgpu_gtt_size = -1; /* auto */

>  int amdgpu_moverate = -1; /* auto */

>  int amdgpu_benchmarking = 0;

>  int amdgpu_testing = 0;

> @@ -124,6 +125,9 @@ module_param_named(vramlimit,

> amdgpu_vram_limit, int, 0600);

>  MODULE_PARM_DESC(gartsize, "Size of PCIE/IGP gart to setup in

> megabytes (32, 64, etc., -1 = auto)");

>  module_param_named(gartsize, amdgpu_gart_size, int, 0600);

> 

> +MODULE_PARM_DESC(gttsize, "Size of the GTT domain in megabytes (-1 =

> auto)");

> +module_param_named(gttsize, amdgpu_gtt_size, int, 0600);

> +

>  MODULE_PARM_DESC(moverate, "Maximum buffer migration rate in MB/s.

> (32, 64, etc., -1=auto, 0=1=disabled)");

>  module_param_named(moverate, amdgpu_moverate, int, 0600);

> 

> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c

> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c

> index f300af2..ffd72d2 100644

> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c

> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c

> @@ -1097,6 +1097,7 @@ static struct ttm_bo_driver amdgpu_bo_driver = {

> 

>  int amdgpu_ttm_init(struct amdgpu_device *adev)

>  {

> +	uint64_t gtt_size;

>  	int r;

> 

>  	r = amdgpu_ttm_global_init(adev);

> @@ -1143,14 +1144,19 @@ int amdgpu_ttm_init(struct amdgpu_device

> *adev)

>  	}

>  	DRM_INFO("amdgpu: %uM of VRAM memory ready\n",

>  		 (unsigned) (adev->mc.real_vram_size / (1024 * 1024)));

> -	r = ttm_bo_init_mm(&adev->mman.bdev, TTM_PL_TT,

> -				adev->mc.gart_size >> PAGE_SHIFT);

> +

> +	if (amdgpu_gart_size == -1)


amdgpu_gtt_size here.  With that fixed:
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>


> +		gtt_size = max((AMDGPU_DEFAULT_GTT_SIZE_MB << 20),

> +			       adev->mc.mc_vram_size);

> +	else

> +		gtt_size = (uint64_t)amdgpu_gart_size << 20;

> +	r = ttm_bo_init_mm(&adev->mman.bdev, TTM_PL_TT, gtt_size >>

> PAGE_SHIFT);

>  	if (r) {

>  		DRM_ERROR("Failed initializing GTT heap.\n");

>  		return r;

>  	}

>  	DRM_INFO("amdgpu: %uM of GTT memory ready.\n",

> -		 (unsigned)(adev->mc.gart_size / (1024 * 1024)));

> +		 (unsigned)(gtt_size / (1024 * 1024)));

> 

>  	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;

> --

> 2.7.4

> 

> _______________________________________________

> amd-gfx mailing list

> amd-gfx@lists.freedesktop.org

> https://lists.freedesktop.org/mailman/listinfo/amd-gfx