drm/radeon: default to 2048 MB GART size on SI+
Newer ASICs have more VRAM on average and allocating more GART as
well can have advantages. Also see commit edcd26e8
.
Ideally, we should scale GART size based on actual VRAM size, but
that requires significant restructuring of initialization.
v2: extract small helper, apply to error paths
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Grigori Goronzy <greg@chown.ath.cx>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Родитель
54e0398613
Коммит
5e3c4f9070
|
@ -1079,6 +1079,22 @@ static bool radeon_check_pot_argument(int arg)
|
|||
return (arg & (arg - 1)) == 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine a sensible default GART size according to ASIC family.
|
||||
*
|
||||
* @family ASIC family name
|
||||
*/
|
||||
static int radeon_gart_size_auto(enum radeon_family family)
|
||||
{
|
||||
/* default to a larger gart size on newer asics */
|
||||
if (family >= CHIP_TAHITI)
|
||||
return 2048;
|
||||
else if (family >= CHIP_RV770)
|
||||
return 1024;
|
||||
else
|
||||
return 512;
|
||||
}
|
||||
|
||||
/**
|
||||
* radeon_check_arguments - validate module params
|
||||
*
|
||||
|
@ -1097,27 +1113,17 @@ static void radeon_check_arguments(struct radeon_device *rdev)
|
|||
}
|
||||
|
||||
if (radeon_gart_size == -1) {
|
||||
/* default to a larger gart size on newer asics */
|
||||
if (rdev->family >= CHIP_RV770)
|
||||
radeon_gart_size = 1024;
|
||||
else
|
||||
radeon_gart_size = 512;
|
||||
radeon_gart_size = radeon_gart_size_auto(rdev->family);
|
||||
}
|
||||
/* gtt size must be power of two and greater or equal to 32M */
|
||||
if (radeon_gart_size < 32) {
|
||||
dev_warn(rdev->dev, "gart size (%d) too small\n",
|
||||
radeon_gart_size);
|
||||
if (rdev->family >= CHIP_RV770)
|
||||
radeon_gart_size = 1024;
|
||||
else
|
||||
radeon_gart_size = 512;
|
||||
radeon_gart_size = radeon_gart_size_auto(rdev->family);
|
||||
} else if (!radeon_check_pot_argument(radeon_gart_size)) {
|
||||
dev_warn(rdev->dev, "gart size (%d) must be a power of 2\n",
|
||||
radeon_gart_size);
|
||||
if (rdev->family >= CHIP_RV770)
|
||||
radeon_gart_size = 1024;
|
||||
else
|
||||
radeon_gart_size = 512;
|
||||
radeon_gart_size = radeon_gart_size_auto(rdev->family);
|
||||
}
|
||||
rdev->mc.gtt_size = (uint64_t)radeon_gart_size << 20;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче