Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit db63042b authored by Alex Deucher's avatar Alex Deucher
Browse files

drm/amdgpu: add automatic per asic settings for gart_size



We need a larger gart for asics that do not support GPUVM on all
engines (e.g., MM) to make sure we have enough space for all
gtt buffers in physical mode.  Change the default size based on
the asic type.

Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 871594e7
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -76,7 +76,7 @@
extern int amdgpu_modeset;
extern int amdgpu_vram_limit;
extern int amdgpu_vis_vram_limit;
extern unsigned amdgpu_gart_size;
extern int amdgpu_gart_size;
extern int amdgpu_gtt_size;
extern int amdgpu_moverate;
extern int amdgpu_benchmarking;
+2 −2
Original line number Diff line number Diff line
@@ -1062,11 +1062,11 @@ static void amdgpu_check_arguments(struct amdgpu_device *adev)
		amdgpu_sched_jobs = roundup_pow_of_two(amdgpu_sched_jobs);
	}

	if (amdgpu_gart_size < 32) {
	if (amdgpu_gart_size != -1 && amdgpu_gart_size < 32) {
		/* gart size must be greater or equal to 32M */
		dev_warn(adev->dev, "gart size (%d) too small\n",
			 amdgpu_gart_size);
		amdgpu_gart_size = 32;
		amdgpu_gart_size = -1;
	}

	if (amdgpu_gtt_size != -1 && amdgpu_gtt_size < 32) {
+2 −2
Original line number Diff line number Diff line
@@ -76,7 +76,7 @@

int amdgpu_vram_limit = 0;
int amdgpu_vis_vram_limit = 0;
unsigned amdgpu_gart_size = 256;
int amdgpu_gart_size = -1; /* auto */
int amdgpu_gtt_size = -1; /* auto */
int amdgpu_moverate = -1; /* auto */
int amdgpu_benchmarking = 0;
@@ -128,7 +128,7 @@ module_param_named(vramlimit, amdgpu_vram_limit, int, 0600);
MODULE_PARM_DESC(vis_vramlimit, "Restrict visible VRAM for testing, in megabytes");
module_param_named(vis_vramlimit, amdgpu_vis_vram_limit, int, 0444);

MODULE_PARM_DESC(gartsize, "Size of PCIE/IGP gart to setup in megabytes (32, 64, etc.)");
MODULE_PARM_DESC(gartsize, "Size of gart to setup in megabytes (32, 64, etc., -1=auto)");
module_param_named(gartsize, amdgpu_gart_size, uint, 0600);

MODULE_PARM_DESC(gttsize, "Size of the GTT domain in megabytes (-1 = auto)");
+15 −1
Original line number Diff line number Diff line
@@ -65,7 +65,21 @@
 */
void amdgpu_gart_set_defaults(struct amdgpu_device *adev)
{
	adev->mc.gart_size = (uint64_t)amdgpu_gart_size << 20;
	u64 gart_size;

	if (amdgpu_gart_size == -1) {
		/* make the GART larger for chips that
		 * dont' support VM for all rings
		 */
		if (adev->asic_type <= CHIP_STONEY)
			gart_size = 1024;
		else
			gart_size = 256;
	} else {
		gart_size = amdgpu_gart_size;
	}

	adev->mc.gart_size = gart_size << 20;
}

/**