On Mon, Jul 3, 2017 at 5:44 AM, Christian König <deathsimple at vodafone.de> wrote: > From: Christian König <christian.koenig at amd.com> > > Limit the size of the SYSVM. This saves us a bunch of visible VRAM, > but also limitates the maximum BO size we can swap out. Update the description. The limitation is removed now. > > v2: rebased and cleaned up after GART to SYSVM rename. > > Signed-off-by: Christian König <christian.koenig at amd.com> Reviewed-by: Alex Deucher <alexander.deucher at amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 + > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 6 ++++++ > drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 4 ++++ > drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c | 6 ++++-- > drivers/gpu/drm/amd/amdgpu/amdgpu_sysvm.c | 9 +-------- > 5 files changed, 16 insertions(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h > index 1ed6b7a..81de31a 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 unsigned amdgpu_sysvm_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 228b262..daded9c 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > @@ -1086,6 +1086,12 @@ static void amdgpu_check_arguments(struct amdgpu_device *adev) > } > } > > + if (amdgpu_sysvm_size < 32) { > + dev_warn(adev->dev, "sysvm size (%d) too small\n", > + amdgpu_sysvm_size); > + amdgpu_sysvm_size = 32; > + } > + > 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 4bf4a80..56f9867 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 */ > +unsigned amdgpu_sysvm_size = 256; > 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(sysvmsize, "Size of the system VM in megabytes (default 256)"); > +module_param_named(sysvmsize, amdgpu_sysvm_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_gtt_mgr.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c > index f46a97d..bbf6bd0 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c > @@ -42,6 +42,7 @@ struct amdgpu_gtt_mgr { > static int amdgpu_gtt_mgr_init(struct ttm_mem_type_manager *man, > unsigned long p_size) > { > + struct amdgpu_device *adev = amdgpu_ttm_adev(man->bdev); > struct amdgpu_gtt_mgr *mgr; > uint64_t start, size; > > @@ -50,7 +51,7 @@ static int amdgpu_gtt_mgr_init(struct ttm_mem_type_manager *man, > return -ENOMEM; > > start = AMDGPU_GTT_MAX_TRANSFER_SIZE * AMDGPU_GTT_NUM_TRANSFER_WINDOWS; > - size = p_size - start; > + size = (adev->mc.sysvm_size >> PAGE_SHIFT) - start; > drm_mm_init(&mgr->mm, start, size); > spin_lock_init(&mgr->lock); > mgr->available = p_size; > @@ -112,6 +113,7 @@ int amdgpu_gtt_mgr_alloc(struct ttm_mem_type_manager *man, > const struct ttm_place *place, > struct ttm_mem_reg *mem) > { > + struct amdgpu_device *adev = amdgpu_ttm_adev(man->bdev); > struct amdgpu_gtt_mgr *mgr = man->priv; > struct drm_mm_node *node = mem->mm_node; > enum drm_mm_insert_mode mode; > @@ -129,7 +131,7 @@ int amdgpu_gtt_mgr_alloc(struct ttm_mem_type_manager *man, > if (place && place->lpfn) > lpfn = place->lpfn; > else > - lpfn = man->size; > + lpfn = adev->sysvm.num_cpu_pages; > > mode = DRM_MM_INSERT_BEST; > if (place && place->flags & TTM_PL_FLAG_TOPDOWN) > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sysvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sysvm.c > index ff436ad..711e4b6 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sysvm.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sysvm.c > @@ -62,14 +62,7 @@ > */ > void amdgpu_sysvm_set_defaults(struct amdgpu_device *adev) > { > - /* unless the user had overridden it, set the gart > - * size equal to the 1024 or vram, whichever is larger. > - */ > - if (amdgpu_gart_size == -1) > - adev->mc.sysvm_size = max((AMDGPU_DEFAULT_GTT_SIZE_MB << 20), > - adev->mc.mc_vram_size); > - else > - adev->mc.sysvm_size = (uint64_t)amdgpu_gart_size << 20; > + adev->mc.sysvm_size = (uint64_t)amdgpu_sysvm_size << 20; > } > > /** > -- > 2.7.4 > > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx