diff mbox series

[3/4] drm/ttm: drop size from resource manager base class.

Message ID 20200806233459.4057784-4-airlied@gmail.com (mailing list archive)
State New, archived
Headers show
Series [1/4] drm/amdgpu/ttm: move vram/gtt mgr allocations to mman. | expand

Commit Message

Dave Airlie Aug. 6, 2020, 11:34 p.m. UTC
From: Dave Airlie <airlied@redhat.com>

This is a bit more involved that it looked, the range manager
needs accessors adding and amdgpu needs a bit of a refactor.
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c   | 21 ++++++++-----------
 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c       |  5 +++--
 drivers/gpu/drm/amd/amdgpu/amdgpu_object.c    | 13 ++++++------
 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c       |  2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h       | 12 +++++++++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c  | 16 ++++++--------
 drivers/gpu/drm/nouveau/nouveau_ttm.c         |  5 ++---
 drivers/gpu/drm/radeon/radeon_gem.c           |  2 +-
 drivers/gpu/drm/radeon/radeon_ttm.c           |  3 +--
 drivers/gpu/drm/ttm/ttm_bo.c                  |  7 ++-----
 drivers/gpu/drm/ttm/ttm_range_manager.c       | 21 +++++++++++++++++--
 drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c |  2 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_thp.c           |  9 ++++----
 include/drm/ttm/ttm_bo_api.h                  |  4 +---
 include/drm/ttm/ttm_bo_driver.h               | 20 ++++++++++++++++--
 15 files changed, 87 insertions(+), 55 deletions(-)

Comments

kernel test robot Aug. 7, 2020, 3:50 a.m. UTC | #1
Hi Dave,

I love your patch! Perhaps something to improve:

[auto build test WARNING on drm-tip/drm-tip]
[cannot apply to drm-intel/for-linux-next tegra-drm/drm/tegra/for-next linus/master drm/drm-next drm-exynos/exynos-drm-next v5.8 next-20200806]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Dave-Airlie/drm-amdgpu-ttm-move-vram-gtt-mgr-allocations-to-mman/20200807-083526
base:   git://anongit.freedesktop.org/drm/drm-tip drm-tip
config: x86_64-randconfig-a015-20200806 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project aa57cabae2fc5abc08ab3e17b45f2890fc7c9e42)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   drivers/gpu/drm/radeon/radeon_ttm.c:754:5: warning: no previous prototype for function 'radeon_ttm_init' [-Wmissing-prototypes]
   int radeon_ttm_init(struct radeon_device *rdev)
       ^
   drivers/gpu/drm/radeon/radeon_ttm.c:754:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   int radeon_ttm_init(struct radeon_device *rdev)
   ^
   static 
   drivers/gpu/drm/radeon/radeon_ttm.c:812:6: warning: no previous prototype for function 'radeon_ttm_fini' [-Wmissing-prototypes]
   void radeon_ttm_fini(struct radeon_device *rdev)
        ^
   drivers/gpu/drm/radeon/radeon_ttm.c:812:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   void radeon_ttm_fini(struct radeon_device *rdev)
   ^
   static 
>> drivers/gpu/drm/radeon/radeon_ttm.c:845:28: warning: variable 'man' is uninitialized when used here [-Wuninitialized]
           ttm_range_man_adjust_size(man, size >> PAGE_SHIFT);
                                     ^~~
   drivers/gpu/drm/radeon/radeon_ttm.c:839:34: note: initialize the variable 'man' to silence this warning
           struct ttm_resource_manager *man;
                                           ^
                                            = NULL
   drivers/gpu/drm/radeon/radeon_ttm.c:872:5: warning: no previous prototype for function 'radeon_mmap' [-Wmissing-prototypes]
   int radeon_mmap(struct file *filp, struct vm_area_struct *vma)
       ^
   drivers/gpu/drm/radeon/radeon_ttm.c:872:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   int radeon_mmap(struct file *filp, struct vm_area_struct *vma)
   ^
   static 
   4 warnings generated.

vim +/man +845 drivers/gpu/drm/radeon/radeon_ttm.c

   811	
 > 812	void radeon_ttm_fini(struct radeon_device *rdev)
   813	{
   814		int r;
   815	
   816		if (!rdev->mman.initialized)
   817			return;
   818		radeon_ttm_debugfs_fini(rdev);
   819		if (rdev->stolen_vga_memory) {
   820			r = radeon_bo_reserve(rdev->stolen_vga_memory, false);
   821			if (r == 0) {
   822				radeon_bo_unpin(rdev->stolen_vga_memory);
   823				radeon_bo_unreserve(rdev->stolen_vga_memory);
   824			}
   825			radeon_bo_unref(&rdev->stolen_vga_memory);
   826		}
   827		ttm_range_man_fini(&rdev->mman.bdev, TTM_PL_VRAM);
   828		ttm_range_man_fini(&rdev->mman.bdev, TTM_PL_TT);
   829		ttm_bo_device_release(&rdev->mman.bdev);
   830		radeon_gart_fini(rdev);
   831		rdev->mman.initialized = false;
   832		DRM_INFO("radeon: ttm finalized\n");
   833	}
   834	
   835	/* this should only be called at bootup or when userspace
   836	 * isn't running */
   837	void radeon_ttm_set_active_vram_size(struct radeon_device *rdev, u64 size)
   838	{
   839		struct ttm_resource_manager *man;
   840	
   841		if (!rdev->mman.initialized)
   842			return;
   843	
   844		/* this just adjusts TTM size idea, which sets lpfn to the correct value */
 > 845		ttm_range_man_adjust_size(man, size >> PAGE_SHIFT);
   846	}
   847	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
kernel test robot Aug. 7, 2020, 4:46 a.m. UTC | #2
Hi Dave,

I love your patch! Perhaps something to improve:

[auto build test WARNING on drm-tip/drm-tip]
[cannot apply to drm-intel/for-linux-next tegra-drm/drm/tegra/for-next linus/master drm/drm-next drm-exynos/exynos-drm-next v5.8 next-20200806]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Dave-Airlie/drm-amdgpu-ttm-move-vram-gtt-mgr-allocations-to-mman/20200807-083526
base:   git://anongit.freedesktop.org/drm/drm-tip drm-tip
config: arc-randconfig-r005-20200805 (attached as .config)
compiler: arc-elf-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arc 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   In file included from drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h:29,
                    from drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.h:26,
                    from drivers/gpu/drm/amd/amdgpu/amdgpu.h:43,
                    from drivers/gpu/drm/amd/amdgpu/amdgpu_object.c:38:
   drivers/gpu/drm/amd/amdgpu/amdgpu_object.c: In function 'amdgpu_bo_validate_size':
>> drivers/gpu/drm/amd/amdgpu/amdgpu_object.c:473:12: warning: format '%llu' expects argument of type 'long long unsigned int', but argument 4 has type 'long unsigned int' [-Wformat=]
     473 |  DRM_DEBUG("BO size %lu > total memory in domain: %llu\n", size,
         |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/drm/drm_print.h:490:25: note: in definition of macro 'DRM_DEBUG'
     490 |  __drm_dbg(DRM_UT_CORE, fmt, ##__VA_ARGS__)
         |                         ^~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_object.c:473:54: note: format string is defined here
     473 |  DRM_DEBUG("BO size %lu > total memory in domain: %llu\n", size,
         |                                                   ~~~^
         |                                                      |
         |                                                      long long unsigned int
         |                                                   %lu
   In file included from drivers/gpu/drm/amd/amdgpu/amdgpu_object.c:38:
   At top level:
   drivers/gpu/drm/amd/amdgpu/amdgpu.h:192:19: warning: 'debug_evictions' defined but not used [-Wunused-const-variable=]
     192 | static const bool debug_evictions; /* = false */
         |                   ^~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu.h:191:18: warning: 'sched_policy' defined but not used [-Wunused-const-variable=]
     191 | static const int sched_policy = KFD_SCHED_POLICY_HWS;
         |                  ^~~~~~~~~~~~
   In file included from drivers/gpu/drm/amd/amdgpu/../display/dc/dc_types.h:33,
                    from drivers/gpu/drm/amd/amdgpu/../display/dc/dm_services_types.h:30,
                    from drivers/gpu/drm/amd/amdgpu/../include/dm_pp_interface.h:26,
                    from drivers/gpu/drm/amd/amdgpu/amdgpu.h:65,
                    from drivers/gpu/drm/amd/amdgpu/amdgpu_object.c:38:
   drivers/gpu/drm/amd/amdgpu/../display/include/fixed31_32.h:76:32: warning: 'dc_fixpt_ln2_div_2' defined but not used [-Wunused-const-variable=]
      76 | static const struct fixed31_32 dc_fixpt_ln2_div_2 = { 1488522236LL };
         |                                ^~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/../display/include/fixed31_32.h:75:32: warning: 'dc_fixpt_ln2' defined but not used [-Wunused-const-variable=]
      75 | static const struct fixed31_32 dc_fixpt_ln2 = { 2977044471LL };
         |                                ^~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/../display/include/fixed31_32.h:74:32: warning: 'dc_fixpt_e' defined but not used [-Wunused-const-variable=]
      74 | static const struct fixed31_32 dc_fixpt_e = { 11674931555LL };
         |                                ^~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/../display/include/fixed31_32.h:73:32: warning: 'dc_fixpt_two_pi' defined but not used [-Wunused-const-variable=]
      73 | static const struct fixed31_32 dc_fixpt_two_pi = { 26986075409LL };
         |                                ^~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/../display/include/fixed31_32.h:72:32: warning: 'dc_fixpt_pi' defined but not used [-Wunused-const-variable=]
      72 | static const struct fixed31_32 dc_fixpt_pi = { 13493037705LL };
         |                                ^~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/../display/include/fixed31_32.h:67:32: warning: 'dc_fixpt_zero' defined but not used [-Wunused-const-variable=]
      67 | static const struct fixed31_32 dc_fixpt_zero = { 0 };
         |                                ^~~~~~~~~~~~~

vim +473 drivers/gpu/drm/amd/amdgpu/amdgpu_object.c

aa1d562e645d254 Junwei Zhang      2016-09-08  440  
79c631239a83aeb Andrey Grodzovsky 2017-11-10  441  /* Validate bo size is bit bigger then the request domain */
79c631239a83aeb Andrey Grodzovsky 2017-11-10  442  static bool amdgpu_bo_validate_size(struct amdgpu_device *adev,
79c631239a83aeb Andrey Grodzovsky 2017-11-10  443  					  unsigned long size, u32 domain)
79c631239a83aeb Andrey Grodzovsky 2017-11-10  444  {
89e1ba9e4973560 Dave Airlie       2020-08-07  445  	unsigned long mgr_size = 0;
79c631239a83aeb Andrey Grodzovsky 2017-11-10  446  	/*
79c631239a83aeb Andrey Grodzovsky 2017-11-10  447  	 * If GTT is part of requested domains the check must succeed to
79c631239a83aeb Andrey Grodzovsky 2017-11-10  448  	 * allow fall back to GTT
79c631239a83aeb Andrey Grodzovsky 2017-11-10  449  	 */
79c631239a83aeb Andrey Grodzovsky 2017-11-10  450  	if (domain & AMDGPU_GEM_DOMAIN_GTT) {
89e1ba9e4973560 Dave Airlie       2020-08-07  451  		mgr_size = to_gtt_mgr(ttm_manager_type(&adev->mman.bdev, TTM_PL_TT))->size;
79c631239a83aeb Andrey Grodzovsky 2017-11-10  452  
89e1ba9e4973560 Dave Airlie       2020-08-07  453  		if (size < (mgr_size << PAGE_SHIFT))
79c631239a83aeb Andrey Grodzovsky 2017-11-10  454  			return true;
79c631239a83aeb Andrey Grodzovsky 2017-11-10  455  		else
79c631239a83aeb Andrey Grodzovsky 2017-11-10  456  			goto fail;
79c631239a83aeb Andrey Grodzovsky 2017-11-10  457  	}
79c631239a83aeb Andrey Grodzovsky 2017-11-10  458  
79c631239a83aeb Andrey Grodzovsky 2017-11-10  459  	if (domain & AMDGPU_GEM_DOMAIN_VRAM) {
89e1ba9e4973560 Dave Airlie       2020-08-07  460  		mgr_size = to_vram_mgr(ttm_manager_type(&adev->mman.bdev, TTM_PL_TT))->size;
79c631239a83aeb Andrey Grodzovsky 2017-11-10  461  
89e1ba9e4973560 Dave Airlie       2020-08-07  462  		if (size < (mgr_size << PAGE_SHIFT))
79c631239a83aeb Andrey Grodzovsky 2017-11-10  463  			return true;
79c631239a83aeb Andrey Grodzovsky 2017-11-10  464  		else
79c631239a83aeb Andrey Grodzovsky 2017-11-10  465  			goto fail;
79c631239a83aeb Andrey Grodzovsky 2017-11-10  466  	}
79c631239a83aeb Andrey Grodzovsky 2017-11-10  467  
79c631239a83aeb Andrey Grodzovsky 2017-11-10  468  
79c631239a83aeb Andrey Grodzovsky 2017-11-10  469  	/* TODO add more domains checks, such as AMDGPU_GEM_DOMAIN_CPU */
79c631239a83aeb Andrey Grodzovsky 2017-11-10  470  	return true;
79c631239a83aeb Andrey Grodzovsky 2017-11-10  471  
79c631239a83aeb Andrey Grodzovsky 2017-11-10  472  fail:
299c776cebb01c1 Michel Dänzer     2017-11-15 @473  	DRM_DEBUG("BO size %lu > total memory in domain: %llu\n", size,
89e1ba9e4973560 Dave Airlie       2020-08-07  474  		  mgr_size << PAGE_SHIFT);
79c631239a83aeb Andrey Grodzovsky 2017-11-10  475  	return false;
79c631239a83aeb Andrey Grodzovsky 2017-11-10  476  }
79c631239a83aeb Andrey Grodzovsky 2017-11-10  477  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
kernel test robot Aug. 7, 2020, 7:17 a.m. UTC | #3
Hi Dave,

I love your patch! Perhaps something to improve:

[auto build test WARNING on drm-tip/drm-tip]
[cannot apply to drm-intel/for-linux-next tegra-drm/drm/tegra/for-next linus/master drm/drm-next drm-exynos/exynos-drm-next v5.8 next-20200806]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Dave-Airlie/drm-amdgpu-ttm-move-vram-gtt-mgr-allocations-to-mman/20200807-083526
base:   git://anongit.freedesktop.org/drm/drm-tip drm-tip
config: x86_64-randconfig-a004-20200805 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project aa57cabae2fc5abc08ab3e17b45f2890fc7c9e42)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/amd/amdgpu/amdgpu_object.c:474:5: warning: format specifies type 'unsigned long long' but the argument has type 'unsigned long' [-Wformat]
                     mgr_size << PAGE_SHIFT);
                     ^~~~~~~~~~~~~~~~~~~~~~
   include/drm/drm_print.h:490:32: note: expanded from macro 'DRM_DEBUG'
           __drm_dbg(DRM_UT_CORE, fmt, ##__VA_ARGS__)
                                  ~~~    ^~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_object.c:493:2: warning: Please enable CONFIG_MTRR and CONFIG_X86_PAT for better performance 	 thanks to write-combining [-W#warnings]
   #warning Please enable CONFIG_MTRR and CONFIG_X86_PAT for better performance \
    ^
   2 warnings generated.

vim +474 drivers/gpu/drm/amd/amdgpu/amdgpu_object.c

   440	
   441	/* Validate bo size is bit bigger then the request domain */
   442	static bool amdgpu_bo_validate_size(struct amdgpu_device *adev,
   443						  unsigned long size, u32 domain)
   444	{
   445		unsigned long mgr_size = 0;
   446		/*
   447		 * If GTT is part of requested domains the check must succeed to
   448		 * allow fall back to GTT
   449		 */
   450		if (domain & AMDGPU_GEM_DOMAIN_GTT) {
   451			mgr_size = to_gtt_mgr(ttm_manager_type(&adev->mman.bdev, TTM_PL_TT))->size;
   452	
   453			if (size < (mgr_size << PAGE_SHIFT))
   454				return true;
   455			else
   456				goto fail;
   457		}
   458	
   459		if (domain & AMDGPU_GEM_DOMAIN_VRAM) {
   460			mgr_size = to_vram_mgr(ttm_manager_type(&adev->mman.bdev, TTM_PL_TT))->size;
   461	
   462			if (size < (mgr_size << PAGE_SHIFT))
   463				return true;
   464			else
   465				goto fail;
   466		}
   467	
   468	
   469		/* TODO add more domains checks, such as AMDGPU_GEM_DOMAIN_CPU */
   470		return true;
   471	
   472	fail:
   473		DRM_DEBUG("BO size %lu > total memory in domain: %llu\n", size,
 > 474			  mgr_size << PAGE_SHIFT);
   475		return false;
   476	}
   477	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Christian König Aug. 7, 2020, 9:22 a.m. UTC | #4
Am 07.08.20 um 01:34 schrieb Dave Airlie:
> From: Dave Airlie <airlied@redhat.com>
>
> This is a bit more involved that it looked, the range manager
> needs accessors adding and amdgpu needs a bit of a refactor.
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c   | 21 ++++++++-----------
>   drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c       |  5 +++--
>   drivers/gpu/drm/amd/amdgpu/amdgpu_object.c    | 13 ++++++------
>   drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c       |  2 +-
>   drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h       | 12 +++++++++++
>   drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c  | 16 ++++++--------
>   drivers/gpu/drm/nouveau/nouveau_ttm.c         |  5 ++---
>   drivers/gpu/drm/radeon/radeon_gem.c           |  2 +-
>   drivers/gpu/drm/radeon/radeon_ttm.c           |  3 +--
>   drivers/gpu/drm/ttm/ttm_bo.c                  |  7 ++-----
>   drivers/gpu/drm/ttm/ttm_range_manager.c       | 21 +++++++++++++++++--
>   drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c |  2 +-
>   drivers/gpu/drm/vmwgfx/vmwgfx_thp.c           |  9 ++++----
>   include/drm/ttm/ttm_bo_api.h                  |  4 +---
>   include/drm/ttm/ttm_bo_driver.h               | 20 ++++++++++++++++--
>   15 files changed, 87 insertions(+), 55 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c
> index 010518148ef8..b769b43b2fbc 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c
> @@ -24,11 +24,6 @@
>   
>   #include "amdgpu.h"
>   
> -static inline struct amdgpu_gtt_mgr *to_gtt_mgr(struct ttm_resource_manager *man)
> -{
> -	return container_of(man, struct amdgpu_gtt_mgr, manager);
> -}
> -
>   struct amdgpu_gtt_node {
>   	struct drm_mm_node node;
>   	struct ttm_buffer_object *tbo;
> @@ -48,8 +43,9 @@ static ssize_t amdgpu_mem_info_gtt_total_show(struct device *dev,
>   	struct drm_device *ddev = dev_get_drvdata(dev);
>   	struct amdgpu_device *adev = ddev->dev_private;
>   	struct ttm_resource_manager *man = ttm_manager_type(&adev->mman.bdev, TTM_PL_TT);
> -	return snprintf(buf, PAGE_SIZE, "%llu\n",
> -			man->size * PAGE_SIZE);
> +	struct amdgpu_gtt_mgr *gtt_mgr = to_gtt_mgr(man);
> +	return snprintf(buf, PAGE_SIZE, "%lu\n",
> +			gtt_mgr->size * PAGE_SIZE);
>   }
>   
>   /**
> @@ -96,13 +92,14 @@ int amdgpu_gtt_mgr_init(struct amdgpu_device *adev, uint64_t gtt_size)
>   	man->available_caching = TTM_PL_MASK_CACHING;
>   	man->default_caching = TTM_PL_FLAG_CACHED;
>   
> -	ttm_resource_manager_init(man, gtt_size >> PAGE_SHIFT);
> +	mgr->size = gtt_size >> PAGE_SHIFT;
> +	ttm_resource_manager_init(man);
>   
>   	start = AMDGPU_GTT_MAX_TRANSFER_SIZE * AMDGPU_GTT_NUM_TRANSFER_WINDOWS;
>   	size = (adev->gmc.gart_size >> PAGE_SHIFT) - start;
>   	drm_mm_init(&mgr->mm, start, size);
>   	spin_lock_init(&mgr->lock);
> -	atomic64_set(&mgr->available, gtt_size >> PAGE_SHIFT);
> +	atomic64_set(&mgr->available, mgr->size);
>   
>   	ret = device_create_file(adev->dev, &dev_attr_mem_info_gtt_total);
>   	if (ret) {
> @@ -264,7 +261,7 @@ static void amdgpu_gtt_mgr_del(struct ttm_resource_manager *man,
>   uint64_t amdgpu_gtt_mgr_usage(struct ttm_resource_manager *man)
>   {
>   	struct amdgpu_gtt_mgr *mgr = to_gtt_mgr(man);
> -	s64 result = man->size - atomic64_read(&mgr->available);
> +	s64 result = mgr->size - atomic64_read(&mgr->available);
>   
>   	return (result > 0 ? result : 0) * PAGE_SIZE;
>   }
> @@ -305,8 +302,8 @@ static void amdgpu_gtt_mgr_debug(struct ttm_resource_manager *man,
>   	drm_mm_print(&mgr->mm, printer);
>   	spin_unlock(&mgr->lock);
>   
> -	drm_printf(printer, "man size:%llu pages, gtt available:%lld pages, usage:%lluMB\n",
> -		   man->size, (u64)atomic64_read(&mgr->available),
> +	drm_printf(printer, "man size:%lu pages, gtt available:%lld pages, usage:%lluMB\n",
> +		   mgr->size, (u64)atomic64_read(&mgr->available),
>   		   amdgpu_gtt_mgr_usage(man) >> 20);
>   }
>   
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> index fff9c013f337..732e4004777e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> @@ -608,7 +608,7 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file
>   			min(adev->gmc.visible_vram_size -
>   			    atomic64_read(&adev->visible_pin_size),
>   			    vram_gtt.vram_size);
> -		vram_gtt.gtt_size = ttm_manager_type(&adev->mman.bdev, TTM_PL_TT)->size;
> +		vram_gtt.gtt_size = to_gtt_mgr(ttm_manager_type(&adev->mman.bdev, TTM_PL_TT))->size;
>   		vram_gtt.gtt_size *= PAGE_SIZE;
>   		vram_gtt.gtt_size -= atomic64_read(&adev->gart_pin_size);
>   		return copy_to_user(out, &vram_gtt,
> @@ -620,6 +620,7 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file
>   			ttm_manager_type(&adev->mman.bdev, TTM_PL_VRAM);
>   		struct ttm_resource_manager *gtt_man =
>   			ttm_manager_type(&adev->mman.bdev, TTM_PL_TT);
> +		struct amdgpu_gtt_mgr *gtt_mgr = to_gtt_mgr(gtt_man);
>   		memset(&mem, 0, sizeof(mem));
>   		mem.vram.total_heap_size = adev->gmc.real_vram_size;
>   		mem.vram.usable_heap_size = adev->gmc.real_vram_size -
> @@ -640,7 +641,7 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file
>   		mem.cpu_accessible_vram.max_allocation =
>   			mem.cpu_accessible_vram.usable_heap_size * 3 / 4;
>   
> -		mem.gtt.total_heap_size = gtt_man->size;
> +		mem.gtt.total_heap_size = gtt_mgr->size;
>   		mem.gtt.total_heap_size *= PAGE_SIZE;
>   		mem.gtt.usable_heap_size = mem.gtt.total_heap_size -
>   			atomic64_read(&adev->gart_pin_size);
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> index 43f4966331dd..33957d829197 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> @@ -442,25 +442,24 @@ void amdgpu_bo_free_kernel(struct amdgpu_bo **bo, u64 *gpu_addr,
>   static bool amdgpu_bo_validate_size(struct amdgpu_device *adev,
>   					  unsigned long size, u32 domain)
>   {
> -	struct ttm_resource_manager *man = NULL;
> -
> +	unsigned long mgr_size = 0;
>   	/*
>   	 * If GTT is part of requested domains the check must succeed to
>   	 * allow fall back to GTT
>   	 */
>   	if (domain & AMDGPU_GEM_DOMAIN_GTT) {
> -		man = ttm_manager_type(&adev->mman.bdev, TTM_PL_TT);
> +		mgr_size = to_gtt_mgr(ttm_manager_type(&adev->mman.bdev, TTM_PL_TT))->size;
>   
> -		if (size < (man->size << PAGE_SHIFT))
> +		if (size < (mgr_size << PAGE_SHIFT))
>   			return true;
>   		else
>   			goto fail;
>   	}
>   
>   	if (domain & AMDGPU_GEM_DOMAIN_VRAM) {
> -		man = ttm_manager_type(&adev->mman.bdev, TTM_PL_VRAM);
> +		mgr_size = to_vram_mgr(ttm_manager_type(&adev->mman.bdev, TTM_PL_TT))->size;
>   
> -		if (size < (man->size << PAGE_SHIFT))
> +		if (size < (mgr_size << PAGE_SHIFT))
>   			return true;
>   		else
>   			goto fail;
> @@ -472,7 +471,7 @@ static bool amdgpu_bo_validate_size(struct amdgpu_device *adev,
>   
>   fail:
>   	DRM_DEBUG("BO size %lu > total memory in domain: %llu\n", size,
> -		  man->size << PAGE_SHIFT);
> +		  mgr_size << PAGE_SHIFT);
>   	return false;
>   }
>   
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index 28557839f132..ca312ef8c2f8 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -2045,7 +2045,7 @@ void amdgpu_ttm_set_buffer_funcs_status(struct amdgpu_device *adev, bool enable)
>   		size = adev->gmc.real_vram_size;
>   	else
>   		size = adev->gmc.visible_vram_size;
> -	man->size = size >> PAGE_SHIFT;
> +	to_vram_mgr(man)->size = size >> PAGE_SHIFT;
>   	adev->mman.buffer_funcs_enabled = enable;
>   }
>   
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
> index 4a6d92f27b6e..5636ef2b1707 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
> @@ -47,15 +47,27 @@ struct amdgpu_vram_mgr {
>   	spinlock_t lock;
>   	atomic64_t usage;
>   	atomic64_t vis_usage;
> +	unsigned long size;
>   };
>   
> +static inline struct amdgpu_vram_mgr *to_vram_mgr(struct ttm_resource_manager *man)
> +{
> +	return container_of(man, struct amdgpu_vram_mgr, manager);
> +}
> +
>   struct amdgpu_gtt_mgr {
>   	struct ttm_resource_manager manager;
>   	struct drm_mm mm;
>   	spinlock_t lock;
>   	atomic64_t available;
> +	unsigned long size;

Those should probably better be uint64_t, same for above.

Apart from that looks rather good to me on first glance.

Christian.

>   };
>   
> +static inline struct amdgpu_gtt_mgr *to_gtt_mgr(struct ttm_resource_manager *man)
> +{
> +	return container_of(man, struct amdgpu_gtt_mgr, manager);
> +}
> +
>   struct amdgpu_mman {
>   	struct ttm_bo_device		bdev;
>   	bool				mem_global_referenced;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
> index 7882efd275d1..d4aa2aa49b4f 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
> @@ -28,11 +28,6 @@
>   #include "amdgpu_atomfirmware.h"
>   #include "atom.h"
>   
> -static inline struct amdgpu_vram_mgr *to_vram_mgr(struct ttm_resource_manager *man)
> -{
> -	return container_of(man, struct amdgpu_vram_mgr, manager);
> -}
> -
>   static inline struct amdgpu_device *to_amdgpu_device(struct amdgpu_vram_mgr *mgr)
>   {
>   	return container_of(mgr, struct amdgpu_device, mman.vram_mgr);
> @@ -180,11 +175,12 @@ int amdgpu_vram_mgr_init(struct amdgpu_device *adev)
>   	man->available_caching = TTM_PL_FLAG_UNCACHED | TTM_PL_FLAG_WC;
>   	man->default_caching = TTM_PL_FLAG_WC;
>   
> -	ttm_resource_manager_init(man, adev->gmc.real_vram_size >> PAGE_SHIFT);
> +	ttm_resource_manager_init(man);
>   
>   	man->func = &amdgpu_vram_mgr_func;
>   
> -	drm_mm_init(&mgr->mm, 0, man->size);
> +	mgr->size = adev->gmc.real_vram_size >> PAGE_SHIFT;
> +	drm_mm_init(&mgr->mm, 0, mgr->size);
>   	spin_lock_init(&mgr->lock);
>   
>   	/* Add the two VRAM-related sysfs files */
> @@ -325,7 +321,7 @@ static int amdgpu_vram_mgr_new(struct ttm_resource_manager *man,
>   
>   	lpfn = place->lpfn;
>   	if (!lpfn)
> -		lpfn = man->size;
> +		lpfn = mgr->size;
>   
>   	max_bytes = adev->gmc.mc_vram_size;
>   	if (tbo->type != ttm_bo_type_kernel)
> @@ -600,8 +596,8 @@ static void amdgpu_vram_mgr_debug(struct ttm_resource_manager *man,
>   	drm_mm_print(&mgr->mm, printer);
>   	spin_unlock(&mgr->lock);
>   
> -	drm_printf(printer, "man size:%llu pages, ram usage:%lluMB, vis usage:%lluMB\n",
> -		   man->size, amdgpu_vram_mgr_usage(man) >> 20,
> +	drm_printf(printer, "man size:%lu pages, ram usage:%lluMB, vis usage:%lluMB\n",
> +		   mgr->size, amdgpu_vram_mgr_usage(man) >> 20,
>   		   amdgpu_vram_mgr_vis_usage(man) >> 20);
>   }
>   
> diff --git a/drivers/gpu/drm/nouveau/nouveau_ttm.c b/drivers/gpu/drm/nouveau/nouveau_ttm.c
> index e6a30865a00b..93685a376a50 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_ttm.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_ttm.c
> @@ -175,8 +175,7 @@ nouveau_ttm_init_vram(struct nouveau_drm *drm)
>   		man->func = &nouveau_vram_manager;
>   		man->use_io_reserve_lru = true;
>   
> -		ttm_resource_manager_init(man,
> -					  drm->gem.vram_available >> PAGE_SHIFT);
> +		ttm_resource_manager_init(man);
>   		ttm_set_driver_manager(&drm->ttm.bdev, TTM_PL_VRAM, man);
>   		ttm_resource_manager_set_used(man, true);
>   		return 0;
> @@ -237,7 +236,7 @@ nouveau_ttm_init_gtt(struct nouveau_drm *drm)
>   	man->available_caching = available_caching;
>   	man->default_caching = default_caching;
>   	man->use_tt = true;
> -	ttm_resource_manager_init(man, size_pages);
> +	ttm_resource_manager_init(man);
>   	ttm_set_driver_manager(&drm->ttm.bdev, TTM_PL_TT, man);
>   	ttm_resource_manager_set_used(man, true);
>   	return 0;
> diff --git a/drivers/gpu/drm/radeon/radeon_gem.c b/drivers/gpu/drm/radeon/radeon_gem.c
> index 7f5dfe04789e..00258d158cfe 100644
> --- a/drivers/gpu/drm/radeon/radeon_gem.c
> +++ b/drivers/gpu/drm/radeon/radeon_gem.c
> @@ -228,7 +228,7 @@ int radeon_gem_info_ioctl(struct drm_device *dev, void *data,
>   
>   	man = ttm_manager_type(&rdev->mman.bdev, TTM_PL_VRAM);
>   
> -	args->vram_size = (u64)man->size << PAGE_SHIFT;
> +	args->vram_size = (u64)ttm_range_man_size(man) << PAGE_SHIFT;
>   	args->vram_visible = rdev->mc.visible_vram_size;
>   	args->vram_visible -= rdev->vram_pin_size;
>   	args->gart_size = rdev->mc.gtt_size;
> diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
> index 3355b69b13d1..e41ec62ff944 100644
> --- a/drivers/gpu/drm/radeon/radeon_ttm.c
> +++ b/drivers/gpu/drm/radeon/radeon_ttm.c
> @@ -843,9 +843,8 @@ void radeon_ttm_set_active_vram_size(struct radeon_device *rdev, u64 size)
>   	if (!rdev->mman.initialized)
>   		return;
>   
> -	man = ttm_manager_type(&rdev->mman.bdev, TTM_PL_VRAM);
>   	/* this just adjusts TTM size idea, which sets lpfn to the correct value */
> -	man->size = size >> PAGE_SHIFT;
> +	ttm_range_man_adjust_size(man, size >> PAGE_SHIFT);
>   }
>   
>   static vm_fault_t radeon_ttm_fault(struct vm_fault *vmf)
> diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
> index ad09329b62d3..cf8176bce4f6 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo.c
> @@ -82,7 +82,6 @@ void ttm_resource_manager_debug(struct ttm_resource_manager *man,
>   {
>   	drm_printf(p, "    use_type: %d\n", man->use_type);
>   	drm_printf(p, "    use_tt: %d\n", man->use_tt);
> -	drm_printf(p, "    size: %llu\n", man->size);
>   	drm_printf(p, "    available_caching: 0x%08X\n", man->available_caching);
>   	drm_printf(p, "    default_caching: 0x%08X\n", man->default_caching);
>   	if (man->func && man->func->debug)
> @@ -1468,8 +1467,7 @@ int ttm_bo_evict_mm(struct ttm_bo_device *bdev, unsigned mem_type)
>   }
>   EXPORT_SYMBOL(ttm_bo_evict_mm);
>   
> -void ttm_resource_manager_init(struct ttm_resource_manager *man,
> -			       unsigned long p_size)
> +void ttm_resource_manager_init(struct ttm_resource_manager *man)
>   {
>   	unsigned i;
>   
> @@ -1477,7 +1475,6 @@ void ttm_resource_manager_init(struct ttm_resource_manager *man,
>   	mutex_init(&man->io_reserve_mutex);
>   	spin_lock_init(&man->move_lock);
>   	INIT_LIST_HEAD(&man->io_reserve_lru);
> -	man->size = p_size;
>   
>   	for (i = 0; i < TTM_MAX_BO_PRIORITY; ++i)
>   		INIT_LIST_HEAD(&man->lru[i]);
> @@ -1590,7 +1587,7 @@ static void ttm_bo_init_sysman(struct ttm_bo_device *bdev)
>   	man->available_caching = TTM_PL_MASK_CACHING;
>   	man->default_caching = TTM_PL_FLAG_CACHED;
>   
> -	ttm_resource_manager_init(man, 0);
> +	ttm_resource_manager_init(man);
>   	ttm_set_driver_manager(bdev, TTM_PL_SYSTEM, man);
>   	ttm_resource_manager_set_used(man, true);
>   }
> diff --git a/drivers/gpu/drm/ttm/ttm_range_manager.c b/drivers/gpu/drm/ttm/ttm_range_manager.c
> index 274a05ca13d3..0dc4b17cc3dc 100644
> --- a/drivers/gpu/drm/ttm/ttm_range_manager.c
> +++ b/drivers/gpu/drm/ttm/ttm_range_manager.c
> @@ -47,6 +47,7 @@ struct ttm_range_manager {
>   	struct ttm_resource_manager manager;
>   	struct drm_mm mm;
>   	spinlock_t lock;
> +	uint64_t size;
>   };
>   
>   static inline struct ttm_range_manager *to_range_manager(struct ttm_resource_manager *man)
> @@ -68,7 +69,7 @@ static int ttm_range_man_get_node(struct ttm_resource_manager *man,
>   
>   	lpfn = place->lpfn;
>   	if (!lpfn)
> -		lpfn = man->size;
> +		lpfn = rman->size;
>   
>   	node = kzalloc(sizeof(*node), GFP_KERNEL);
>   	if (!node)
> @@ -133,8 +134,9 @@ int ttm_range_man_init(struct ttm_bo_device *bdev,
>   
>   	man->func = &ttm_range_manager_func;
>   
> -	ttm_resource_manager_init(man, p_size);
> +	ttm_resource_manager_init(man);
>   
> +	rman->size = p_size;
>   	drm_mm_init(&rman->mm, 0, p_size);
>   	spin_lock_init(&rman->lock);
>   
> @@ -185,3 +187,18 @@ static const struct ttm_resource_manager_func ttm_range_manager_func = {
>   	.put_node = ttm_range_man_put_node,
>   	.debug = ttm_range_man_debug
>   };
> +
> +void ttm_range_man_adjust_size(struct ttm_resource_manager *man,
> +			       unsigned long size)
> +{
> +	struct ttm_range_manager *rman = to_range_manager(man);
> +	rman->size = size;
> +}
> +EXPORT_SYMBOL(ttm_range_man_adjust_size);
> +
> +unsigned long ttm_range_man_size(struct ttm_resource_manager *man)
> +{
> +	struct ttm_range_manager *rman = to_range_manager(man);
> +	return rman->size;
> +}
> +EXPORT_SYMBOL(ttm_range_man_size);
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c b/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c
> index 3fea7a6c7cfa..a7a2deae2277 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c
> @@ -116,7 +116,7 @@ int vmw_gmrid_man_init(struct vmw_private *dev_priv, int type)
>   	man->default_caching = TTM_PL_FLAG_CACHED;
>   	/* TODO: This is most likely not correct */
>   	man->use_tt = true;
> -	ttm_resource_manager_init(man, 0);
> +	ttm_resource_manager_init(man);
>   	spin_lock_init(&gman->lock);
>   	gman->used_gmr_pages = 0;
>   	ida_init(&gman->gmr_ida);
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_thp.c b/drivers/gpu/drm/vmwgfx/vmwgfx_thp.c
> index f594e2e6ab7e..74cdee48b191 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_thp.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_thp.c
> @@ -19,6 +19,7 @@ struct vmw_thp_manager {
>   	struct ttm_resource_manager manager;
>   	struct drm_mm mm;
>   	spinlock_t lock;
> +	uint64_t size;
>   };
>   
>   static struct vmw_thp_manager *to_thp_manager(struct ttm_resource_manager *man)
> @@ -63,7 +64,7 @@ static int vmw_thp_get_node(struct ttm_resource_manager *man,
>   
>   	lpfn = place->lpfn;
>   	if (!lpfn)
> -		lpfn = man->size;
> +		lpfn = rman->size;
>   
>   	mode = DRM_MM_INSERT_BEST;
>   	if (place->flags & TTM_PL_FLAG_TOPDOWN)
> @@ -134,10 +135,10 @@ int vmw_thp_init(struct vmw_private *dev_priv)
>   	man->available_caching = TTM_PL_FLAG_CACHED;
>   	man->default_caching = TTM_PL_FLAG_CACHED;
>   
> -	ttm_resource_manager_init(man,
> -				  dev_priv->vram_size >> PAGE_SHIFT);
> +	ttm_resource_manager_init(man);
>   
> -	drm_mm_init(&rman->mm, 0, man->size);
> +	rman->size = dev_priv->vram_size >> PAGE_SHIFT;
> +	drm_mm_init(&rman->mm, 0, rman->size);
>   	spin_lock_init(&rman->lock);
>   
>   	ttm_set_driver_manager(&dev_priv->bdev, TTM_PL_VRAM, &rman->manager);
> diff --git a/include/drm/ttm/ttm_bo_api.h b/include/drm/ttm/ttm_bo_api.h
> index 770ad2195875..e4bf93482b59 100644
> --- a/include/drm/ttm/ttm_bo_api.h
> +++ b/include/drm/ttm/ttm_bo_api.h
> @@ -537,12 +537,10 @@ int ttm_bo_create(struct ttm_bo_device *bdev, unsigned long size,
>    * ttm_resource_manager_init
>    *
>    * @man: memory manager object to init
> - * @p_size: size managed area in pages.
>    *
>    * Initialise core parts of a manager object.
>    */
> -void ttm_resource_manager_init(struct ttm_resource_manager *man,
> -			       unsigned long p_size);
> +void ttm_resource_manager_init(struct ttm_resource_manager *man);
>   
>   /**
>    * ttm_bo_evict_mm
> diff --git a/include/drm/ttm/ttm_bo_driver.h b/include/drm/ttm/ttm_bo_driver.h
> index eb1c3312e175..c719b4aa3793 100644
> --- a/include/drm/ttm/ttm_bo_driver.h
> +++ b/include/drm/ttm/ttm_bo_driver.h
> @@ -116,7 +116,6 @@ struct ttm_resource_manager_func {
>    * managed by this memory type.
>    * @gpu_offset: If used, the GPU offset of the first managed page of
>    * fixed memory or the first managed location in an aperture.
> - * @size: Size of the managed region.
>    * @available_caching: A mask of available caching types, TTM_PL_FLAG_XX,
>    * as defined in ttm_placement_common.h
>    * @default_caching: The default caching policy used for a buffer object
> @@ -142,7 +141,6 @@ struct ttm_resource_manager {
>   	 */
>   	bool use_type;
>   	bool use_tt;
> -	uint64_t size;
>   	uint32_t available_caching;
>   	uint32_t default_caching;
>   	const struct ttm_resource_manager_func *func;
> @@ -883,4 +881,22 @@ int ttm_range_man_fini(struct ttm_bo_device *bdev,
>   void ttm_resource_manager_debug(struct ttm_resource_manager *man,
>   				struct drm_printer *p);
>   
> +/**
> + * ttm_range_man_adjust_size
> + *
> + * @man: manager to adjust size for
> + * @p_size: new size.
> + */
> +void ttm_range_man_adjust_size(struct ttm_resource_manager *man,
> +			       unsigned long p_size);
> +
> +/**
> + * ttm_range_man_size
> + *
> + * @man: manager to get size for
> + * Returns:
> + * size of range manager.
> + */
> +unsigned long ttm_range_man_size(struct ttm_resource_manager *man);
> +
>   #endif
diff mbox series

Patch

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c
index 010518148ef8..b769b43b2fbc 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c
@@ -24,11 +24,6 @@ 
 
 #include "amdgpu.h"
 
-static inline struct amdgpu_gtt_mgr *to_gtt_mgr(struct ttm_resource_manager *man)
-{
-	return container_of(man, struct amdgpu_gtt_mgr, manager);
-}
-
 struct amdgpu_gtt_node {
 	struct drm_mm_node node;
 	struct ttm_buffer_object *tbo;
@@ -48,8 +43,9 @@  static ssize_t amdgpu_mem_info_gtt_total_show(struct device *dev,
 	struct drm_device *ddev = dev_get_drvdata(dev);
 	struct amdgpu_device *adev = ddev->dev_private;
 	struct ttm_resource_manager *man = ttm_manager_type(&adev->mman.bdev, TTM_PL_TT);
-	return snprintf(buf, PAGE_SIZE, "%llu\n",
-			man->size * PAGE_SIZE);
+	struct amdgpu_gtt_mgr *gtt_mgr = to_gtt_mgr(man);
+	return snprintf(buf, PAGE_SIZE, "%lu\n",
+			gtt_mgr->size * PAGE_SIZE);
 }
 
 /**
@@ -96,13 +92,14 @@  int amdgpu_gtt_mgr_init(struct amdgpu_device *adev, uint64_t gtt_size)
 	man->available_caching = TTM_PL_MASK_CACHING;
 	man->default_caching = TTM_PL_FLAG_CACHED;
 
-	ttm_resource_manager_init(man, gtt_size >> PAGE_SHIFT);
+	mgr->size = gtt_size >> PAGE_SHIFT;
+	ttm_resource_manager_init(man);
 
 	start = AMDGPU_GTT_MAX_TRANSFER_SIZE * AMDGPU_GTT_NUM_TRANSFER_WINDOWS;
 	size = (adev->gmc.gart_size >> PAGE_SHIFT) - start;
 	drm_mm_init(&mgr->mm, start, size);
 	spin_lock_init(&mgr->lock);
-	atomic64_set(&mgr->available, gtt_size >> PAGE_SHIFT);
+	atomic64_set(&mgr->available, mgr->size);
 
 	ret = device_create_file(adev->dev, &dev_attr_mem_info_gtt_total);
 	if (ret) {
@@ -264,7 +261,7 @@  static void amdgpu_gtt_mgr_del(struct ttm_resource_manager *man,
 uint64_t amdgpu_gtt_mgr_usage(struct ttm_resource_manager *man)
 {
 	struct amdgpu_gtt_mgr *mgr = to_gtt_mgr(man);
-	s64 result = man->size - atomic64_read(&mgr->available);
+	s64 result = mgr->size - atomic64_read(&mgr->available);
 
 	return (result > 0 ? result : 0) * PAGE_SIZE;
 }
@@ -305,8 +302,8 @@  static void amdgpu_gtt_mgr_debug(struct ttm_resource_manager *man,
 	drm_mm_print(&mgr->mm, printer);
 	spin_unlock(&mgr->lock);
 
-	drm_printf(printer, "man size:%llu pages, gtt available:%lld pages, usage:%lluMB\n",
-		   man->size, (u64)atomic64_read(&mgr->available),
+	drm_printf(printer, "man size:%lu pages, gtt available:%lld pages, usage:%lluMB\n",
+		   mgr->size, (u64)atomic64_read(&mgr->available),
 		   amdgpu_gtt_mgr_usage(man) >> 20);
 }
 
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
index fff9c013f337..732e4004777e 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
@@ -608,7 +608,7 @@  static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file
 			min(adev->gmc.visible_vram_size -
 			    atomic64_read(&adev->visible_pin_size),
 			    vram_gtt.vram_size);
-		vram_gtt.gtt_size = ttm_manager_type(&adev->mman.bdev, TTM_PL_TT)->size;
+		vram_gtt.gtt_size = to_gtt_mgr(ttm_manager_type(&adev->mman.bdev, TTM_PL_TT))->size;
 		vram_gtt.gtt_size *= PAGE_SIZE;
 		vram_gtt.gtt_size -= atomic64_read(&adev->gart_pin_size);
 		return copy_to_user(out, &vram_gtt,
@@ -620,6 +620,7 @@  static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file
 			ttm_manager_type(&adev->mman.bdev, TTM_PL_VRAM);
 		struct ttm_resource_manager *gtt_man =
 			ttm_manager_type(&adev->mman.bdev, TTM_PL_TT);
+		struct amdgpu_gtt_mgr *gtt_mgr = to_gtt_mgr(gtt_man);
 		memset(&mem, 0, sizeof(mem));
 		mem.vram.total_heap_size = adev->gmc.real_vram_size;
 		mem.vram.usable_heap_size = adev->gmc.real_vram_size -
@@ -640,7 +641,7 @@  static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file
 		mem.cpu_accessible_vram.max_allocation =
 			mem.cpu_accessible_vram.usable_heap_size * 3 / 4;
 
-		mem.gtt.total_heap_size = gtt_man->size;
+		mem.gtt.total_heap_size = gtt_mgr->size;
 		mem.gtt.total_heap_size *= PAGE_SIZE;
 		mem.gtt.usable_heap_size = mem.gtt.total_heap_size -
 			atomic64_read(&adev->gart_pin_size);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
index 43f4966331dd..33957d829197 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
@@ -442,25 +442,24 @@  void amdgpu_bo_free_kernel(struct amdgpu_bo **bo, u64 *gpu_addr,
 static bool amdgpu_bo_validate_size(struct amdgpu_device *adev,
 					  unsigned long size, u32 domain)
 {
-	struct ttm_resource_manager *man = NULL;
-
+	unsigned long mgr_size = 0;
 	/*
 	 * If GTT is part of requested domains the check must succeed to
 	 * allow fall back to GTT
 	 */
 	if (domain & AMDGPU_GEM_DOMAIN_GTT) {
-		man = ttm_manager_type(&adev->mman.bdev, TTM_PL_TT);
+		mgr_size = to_gtt_mgr(ttm_manager_type(&adev->mman.bdev, TTM_PL_TT))->size;
 
-		if (size < (man->size << PAGE_SHIFT))
+		if (size < (mgr_size << PAGE_SHIFT))
 			return true;
 		else
 			goto fail;
 	}
 
 	if (domain & AMDGPU_GEM_DOMAIN_VRAM) {
-		man = ttm_manager_type(&adev->mman.bdev, TTM_PL_VRAM);
+		mgr_size = to_vram_mgr(ttm_manager_type(&adev->mman.bdev, TTM_PL_TT))->size;
 
-		if (size < (man->size << PAGE_SHIFT))
+		if (size < (mgr_size << PAGE_SHIFT))
 			return true;
 		else
 			goto fail;
@@ -472,7 +471,7 @@  static bool amdgpu_bo_validate_size(struct amdgpu_device *adev,
 
 fail:
 	DRM_DEBUG("BO size %lu > total memory in domain: %llu\n", size,
-		  man->size << PAGE_SHIFT);
+		  mgr_size << PAGE_SHIFT);
 	return false;
 }
 
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index 28557839f132..ca312ef8c2f8 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -2045,7 +2045,7 @@  void amdgpu_ttm_set_buffer_funcs_status(struct amdgpu_device *adev, bool enable)
 		size = adev->gmc.real_vram_size;
 	else
 		size = adev->gmc.visible_vram_size;
-	man->size = size >> PAGE_SHIFT;
+	to_vram_mgr(man)->size = size >> PAGE_SHIFT;
 	adev->mman.buffer_funcs_enabled = enable;
 }
 
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
index 4a6d92f27b6e..5636ef2b1707 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
@@ -47,15 +47,27 @@  struct amdgpu_vram_mgr {
 	spinlock_t lock;
 	atomic64_t usage;
 	atomic64_t vis_usage;
+	unsigned long size;
 };
 
+static inline struct amdgpu_vram_mgr *to_vram_mgr(struct ttm_resource_manager *man)
+{
+	return container_of(man, struct amdgpu_vram_mgr, manager);
+}
+
 struct amdgpu_gtt_mgr {
 	struct ttm_resource_manager manager;
 	struct drm_mm mm;
 	spinlock_t lock;
 	atomic64_t available;
+	unsigned long size;
 };
 
+static inline struct amdgpu_gtt_mgr *to_gtt_mgr(struct ttm_resource_manager *man)
+{
+	return container_of(man, struct amdgpu_gtt_mgr, manager);
+}
+
 struct amdgpu_mman {
 	struct ttm_bo_device		bdev;
 	bool				mem_global_referenced;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
index 7882efd275d1..d4aa2aa49b4f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
@@ -28,11 +28,6 @@ 
 #include "amdgpu_atomfirmware.h"
 #include "atom.h"
 
-static inline struct amdgpu_vram_mgr *to_vram_mgr(struct ttm_resource_manager *man)
-{
-	return container_of(man, struct amdgpu_vram_mgr, manager);
-}
-
 static inline struct amdgpu_device *to_amdgpu_device(struct amdgpu_vram_mgr *mgr)
 {
 	return container_of(mgr, struct amdgpu_device, mman.vram_mgr);
@@ -180,11 +175,12 @@  int amdgpu_vram_mgr_init(struct amdgpu_device *adev)
 	man->available_caching = TTM_PL_FLAG_UNCACHED | TTM_PL_FLAG_WC;
 	man->default_caching = TTM_PL_FLAG_WC;
 
-	ttm_resource_manager_init(man, adev->gmc.real_vram_size >> PAGE_SHIFT);
+	ttm_resource_manager_init(man);
 
 	man->func = &amdgpu_vram_mgr_func;
 
-	drm_mm_init(&mgr->mm, 0, man->size);
+	mgr->size = adev->gmc.real_vram_size >> PAGE_SHIFT;
+	drm_mm_init(&mgr->mm, 0, mgr->size);
 	spin_lock_init(&mgr->lock);
 
 	/* Add the two VRAM-related sysfs files */
@@ -325,7 +321,7 @@  static int amdgpu_vram_mgr_new(struct ttm_resource_manager *man,
 
 	lpfn = place->lpfn;
 	if (!lpfn)
-		lpfn = man->size;
+		lpfn = mgr->size;
 
 	max_bytes = adev->gmc.mc_vram_size;
 	if (tbo->type != ttm_bo_type_kernel)
@@ -600,8 +596,8 @@  static void amdgpu_vram_mgr_debug(struct ttm_resource_manager *man,
 	drm_mm_print(&mgr->mm, printer);
 	spin_unlock(&mgr->lock);
 
-	drm_printf(printer, "man size:%llu pages, ram usage:%lluMB, vis usage:%lluMB\n",
-		   man->size, amdgpu_vram_mgr_usage(man) >> 20,
+	drm_printf(printer, "man size:%lu pages, ram usage:%lluMB, vis usage:%lluMB\n",
+		   mgr->size, amdgpu_vram_mgr_usage(man) >> 20,
 		   amdgpu_vram_mgr_vis_usage(man) >> 20);
 }
 
diff --git a/drivers/gpu/drm/nouveau/nouveau_ttm.c b/drivers/gpu/drm/nouveau/nouveau_ttm.c
index e6a30865a00b..93685a376a50 100644
--- a/drivers/gpu/drm/nouveau/nouveau_ttm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_ttm.c
@@ -175,8 +175,7 @@  nouveau_ttm_init_vram(struct nouveau_drm *drm)
 		man->func = &nouveau_vram_manager;
 		man->use_io_reserve_lru = true;
 
-		ttm_resource_manager_init(man,
-					  drm->gem.vram_available >> PAGE_SHIFT);
+		ttm_resource_manager_init(man);
 		ttm_set_driver_manager(&drm->ttm.bdev, TTM_PL_VRAM, man);
 		ttm_resource_manager_set_used(man, true);
 		return 0;
@@ -237,7 +236,7 @@  nouveau_ttm_init_gtt(struct nouveau_drm *drm)
 	man->available_caching = available_caching;
 	man->default_caching = default_caching;
 	man->use_tt = true;
-	ttm_resource_manager_init(man, size_pages);
+	ttm_resource_manager_init(man);
 	ttm_set_driver_manager(&drm->ttm.bdev, TTM_PL_TT, man);
 	ttm_resource_manager_set_used(man, true);
 	return 0;
diff --git a/drivers/gpu/drm/radeon/radeon_gem.c b/drivers/gpu/drm/radeon/radeon_gem.c
index 7f5dfe04789e..00258d158cfe 100644
--- a/drivers/gpu/drm/radeon/radeon_gem.c
+++ b/drivers/gpu/drm/radeon/radeon_gem.c
@@ -228,7 +228,7 @@  int radeon_gem_info_ioctl(struct drm_device *dev, void *data,
 
 	man = ttm_manager_type(&rdev->mman.bdev, TTM_PL_VRAM);
 
-	args->vram_size = (u64)man->size << PAGE_SHIFT;
+	args->vram_size = (u64)ttm_range_man_size(man) << PAGE_SHIFT;
 	args->vram_visible = rdev->mc.visible_vram_size;
 	args->vram_visible -= rdev->vram_pin_size;
 	args->gart_size = rdev->mc.gtt_size;
diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
index 3355b69b13d1..e41ec62ff944 100644
--- a/drivers/gpu/drm/radeon/radeon_ttm.c
+++ b/drivers/gpu/drm/radeon/radeon_ttm.c
@@ -843,9 +843,8 @@  void radeon_ttm_set_active_vram_size(struct radeon_device *rdev, u64 size)
 	if (!rdev->mman.initialized)
 		return;
 
-	man = ttm_manager_type(&rdev->mman.bdev, TTM_PL_VRAM);
 	/* this just adjusts TTM size idea, which sets lpfn to the correct value */
-	man->size = size >> PAGE_SHIFT;
+	ttm_range_man_adjust_size(man, size >> PAGE_SHIFT);
 }
 
 static vm_fault_t radeon_ttm_fault(struct vm_fault *vmf)
diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
index ad09329b62d3..cf8176bce4f6 100644
--- a/drivers/gpu/drm/ttm/ttm_bo.c
+++ b/drivers/gpu/drm/ttm/ttm_bo.c
@@ -82,7 +82,6 @@  void ttm_resource_manager_debug(struct ttm_resource_manager *man,
 {
 	drm_printf(p, "    use_type: %d\n", man->use_type);
 	drm_printf(p, "    use_tt: %d\n", man->use_tt);
-	drm_printf(p, "    size: %llu\n", man->size);
 	drm_printf(p, "    available_caching: 0x%08X\n", man->available_caching);
 	drm_printf(p, "    default_caching: 0x%08X\n", man->default_caching);
 	if (man->func && man->func->debug)
@@ -1468,8 +1467,7 @@  int ttm_bo_evict_mm(struct ttm_bo_device *bdev, unsigned mem_type)
 }
 EXPORT_SYMBOL(ttm_bo_evict_mm);
 
-void ttm_resource_manager_init(struct ttm_resource_manager *man,
-			       unsigned long p_size)
+void ttm_resource_manager_init(struct ttm_resource_manager *man)
 {
 	unsigned i;
 
@@ -1477,7 +1475,6 @@  void ttm_resource_manager_init(struct ttm_resource_manager *man,
 	mutex_init(&man->io_reserve_mutex);
 	spin_lock_init(&man->move_lock);
 	INIT_LIST_HEAD(&man->io_reserve_lru);
-	man->size = p_size;
 
 	for (i = 0; i < TTM_MAX_BO_PRIORITY; ++i)
 		INIT_LIST_HEAD(&man->lru[i]);
@@ -1590,7 +1587,7 @@  static void ttm_bo_init_sysman(struct ttm_bo_device *bdev)
 	man->available_caching = TTM_PL_MASK_CACHING;
 	man->default_caching = TTM_PL_FLAG_CACHED;
 
-	ttm_resource_manager_init(man, 0);
+	ttm_resource_manager_init(man);
 	ttm_set_driver_manager(bdev, TTM_PL_SYSTEM, man);
 	ttm_resource_manager_set_used(man, true);
 }
diff --git a/drivers/gpu/drm/ttm/ttm_range_manager.c b/drivers/gpu/drm/ttm/ttm_range_manager.c
index 274a05ca13d3..0dc4b17cc3dc 100644
--- a/drivers/gpu/drm/ttm/ttm_range_manager.c
+++ b/drivers/gpu/drm/ttm/ttm_range_manager.c
@@ -47,6 +47,7 @@  struct ttm_range_manager {
 	struct ttm_resource_manager manager;
 	struct drm_mm mm;
 	spinlock_t lock;
+	uint64_t size;
 };
 
 static inline struct ttm_range_manager *to_range_manager(struct ttm_resource_manager *man)
@@ -68,7 +69,7 @@  static int ttm_range_man_get_node(struct ttm_resource_manager *man,
 
 	lpfn = place->lpfn;
 	if (!lpfn)
-		lpfn = man->size;
+		lpfn = rman->size;
 
 	node = kzalloc(sizeof(*node), GFP_KERNEL);
 	if (!node)
@@ -133,8 +134,9 @@  int ttm_range_man_init(struct ttm_bo_device *bdev,
 
 	man->func = &ttm_range_manager_func;
 
-	ttm_resource_manager_init(man, p_size);
+	ttm_resource_manager_init(man);
 
+	rman->size = p_size;
 	drm_mm_init(&rman->mm, 0, p_size);
 	spin_lock_init(&rman->lock);
 
@@ -185,3 +187,18 @@  static const struct ttm_resource_manager_func ttm_range_manager_func = {
 	.put_node = ttm_range_man_put_node,
 	.debug = ttm_range_man_debug
 };
+
+void ttm_range_man_adjust_size(struct ttm_resource_manager *man,
+			       unsigned long size)
+{
+	struct ttm_range_manager *rman = to_range_manager(man);
+	rman->size = size;
+}
+EXPORT_SYMBOL(ttm_range_man_adjust_size);
+
+unsigned long ttm_range_man_size(struct ttm_resource_manager *man)
+{
+	struct ttm_range_manager *rman = to_range_manager(man);
+	return rman->size;
+}
+EXPORT_SYMBOL(ttm_range_man_size);
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c b/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c
index 3fea7a6c7cfa..a7a2deae2277 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c
@@ -116,7 +116,7 @@  int vmw_gmrid_man_init(struct vmw_private *dev_priv, int type)
 	man->default_caching = TTM_PL_FLAG_CACHED;
 	/* TODO: This is most likely not correct */
 	man->use_tt = true;
-	ttm_resource_manager_init(man, 0);
+	ttm_resource_manager_init(man);
 	spin_lock_init(&gman->lock);
 	gman->used_gmr_pages = 0;
 	ida_init(&gman->gmr_ida);
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_thp.c b/drivers/gpu/drm/vmwgfx/vmwgfx_thp.c
index f594e2e6ab7e..74cdee48b191 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_thp.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_thp.c
@@ -19,6 +19,7 @@  struct vmw_thp_manager {
 	struct ttm_resource_manager manager;
 	struct drm_mm mm;
 	spinlock_t lock;
+	uint64_t size;
 };
 
 static struct vmw_thp_manager *to_thp_manager(struct ttm_resource_manager *man)
@@ -63,7 +64,7 @@  static int vmw_thp_get_node(struct ttm_resource_manager *man,
 
 	lpfn = place->lpfn;
 	if (!lpfn)
-		lpfn = man->size;
+		lpfn = rman->size;
 
 	mode = DRM_MM_INSERT_BEST;
 	if (place->flags & TTM_PL_FLAG_TOPDOWN)
@@ -134,10 +135,10 @@  int vmw_thp_init(struct vmw_private *dev_priv)
 	man->available_caching = TTM_PL_FLAG_CACHED;
 	man->default_caching = TTM_PL_FLAG_CACHED;
 
-	ttm_resource_manager_init(man,
-				  dev_priv->vram_size >> PAGE_SHIFT);
+	ttm_resource_manager_init(man);
 
-	drm_mm_init(&rman->mm, 0, man->size);
+	rman->size = dev_priv->vram_size >> PAGE_SHIFT;
+	drm_mm_init(&rman->mm, 0, rman->size);
 	spin_lock_init(&rman->lock);
 
 	ttm_set_driver_manager(&dev_priv->bdev, TTM_PL_VRAM, &rman->manager);
diff --git a/include/drm/ttm/ttm_bo_api.h b/include/drm/ttm/ttm_bo_api.h
index 770ad2195875..e4bf93482b59 100644
--- a/include/drm/ttm/ttm_bo_api.h
+++ b/include/drm/ttm/ttm_bo_api.h
@@ -537,12 +537,10 @@  int ttm_bo_create(struct ttm_bo_device *bdev, unsigned long size,
  * ttm_resource_manager_init
  *
  * @man: memory manager object to init
- * @p_size: size managed area in pages.
  *
  * Initialise core parts of a manager object.
  */
-void ttm_resource_manager_init(struct ttm_resource_manager *man,
-			       unsigned long p_size);
+void ttm_resource_manager_init(struct ttm_resource_manager *man);
 
 /**
  * ttm_bo_evict_mm
diff --git a/include/drm/ttm/ttm_bo_driver.h b/include/drm/ttm/ttm_bo_driver.h
index eb1c3312e175..c719b4aa3793 100644
--- a/include/drm/ttm/ttm_bo_driver.h
+++ b/include/drm/ttm/ttm_bo_driver.h
@@ -116,7 +116,6 @@  struct ttm_resource_manager_func {
  * managed by this memory type.
  * @gpu_offset: If used, the GPU offset of the first managed page of
  * fixed memory or the first managed location in an aperture.
- * @size: Size of the managed region.
  * @available_caching: A mask of available caching types, TTM_PL_FLAG_XX,
  * as defined in ttm_placement_common.h
  * @default_caching: The default caching policy used for a buffer object
@@ -142,7 +141,6 @@  struct ttm_resource_manager {
 	 */
 	bool use_type;
 	bool use_tt;
-	uint64_t size;
 	uint32_t available_caching;
 	uint32_t default_caching;
 	const struct ttm_resource_manager_func *func;
@@ -883,4 +881,22 @@  int ttm_range_man_fini(struct ttm_bo_device *bdev,
 void ttm_resource_manager_debug(struct ttm_resource_manager *man,
 				struct drm_printer *p);
 
+/**
+ * ttm_range_man_adjust_size
+ *
+ * @man: manager to adjust size for
+ * @p_size: new size.
+ */
+void ttm_range_man_adjust_size(struct ttm_resource_manager *man,
+			       unsigned long p_size);
+
+/**
+ * ttm_range_man_size
+ *
+ * @man: manager to get size for
+ * Returns:
+ * size of range manager.
+ */
+unsigned long ttm_range_man_size(struct ttm_resource_manager *man);
+
 #endif