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 <[email protected]>
> ---
>  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
<[email protected]>

Regards,
  Felix

> +                     gart_size = 1024;
> +             else
> +                     gart_size = 256;
> +     } else {
> +             gart_size = amdgpu_gart_size;
> +     }
> +
> +     adev->mc.gart_size = gart_size << 20;
>  }
>  
>  /**

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to