[PATCH] drm/amdgpu: add automatic per asic settings for gart_size
Felix Kuehling
felix.kuehling at amd.com
Mon Aug 21 20:48:21 UTC 2017
On 2017-08-21 12:00 PM, Alex Deucher wrote:
> 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.
>
> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu.h | 2 +-
> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 4 ++--
> drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 4 ++--
> drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c | 16 +++++++++++++++-
> 4 files changed, 20 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> index ffb98bb..97d50cd 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> @@ -77,7 +77,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;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index 1e66eda8..3c062a7 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -1063,11 +1063,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) {
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> index 3eafe39..3f2143d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> @@ -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;
> @@ -129,7 +129,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)");
I would spell GART in capitals here.
> module_param_named(gartsize, amdgpu_gart_size, uint, 0600);
>
> MODULE_PARM_DESC(gttsize, "Size of the GTT domain in megabytes (-1 = auto)");
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c
> index 94c1e2e..b9b9f68 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c
> @@ -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)
I guess that means Polaris10 and later support VM for multimedia? I
needed to go look at amd_shared.h to find that out. It would be more
obvious like this:
if (adev->asic_type < CHIP_POLARIS10) ...
Other than that, this patch is Reviewed-by: Felix Kuehling
<Felix.Kuehling at amd.com>
Regards,
Felix
> + gart_size = 1024;
> + else
> + gart_size = 256;
> + } else {
> + gart_size = amdgpu_gart_size;
> + }
> +
> + adev->mc.gart_size = gart_size << 20;
> }
>
> /**
More information about the amd-gfx
mailing list