diff options
author | Christian König <christian.koenig@amd.com> | 2017-07-07 07:16:37 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-07-14 11:06:30 -0400 |
commit | bb84284e10ec3447b4bb74cfa493d5c384a0b798 (patch) | |
tree | 421bc521cda998d38963c30abc5eea0fc75f56da /drivers/gpu/drm/amd/amdgpu | |
parent | 6f02a69648f14024213ab65cd4a4a701e40e46ff (diff) |
drm/amdgpu: limit the GTT manager address space
We should only cover the GART size with the GTT manager.
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c index f46a97d91675..5e6b90c6794f 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 { | |||
42 | static int amdgpu_gtt_mgr_init(struct ttm_mem_type_manager *man, | 42 | static int amdgpu_gtt_mgr_init(struct ttm_mem_type_manager *man, |
43 | unsigned long p_size) | 43 | unsigned long p_size) |
44 | { | 44 | { |
45 | struct amdgpu_device *adev = amdgpu_ttm_adev(man->bdev); | ||
45 | struct amdgpu_gtt_mgr *mgr; | 46 | struct amdgpu_gtt_mgr *mgr; |
46 | uint64_t start, size; | 47 | uint64_t start, size; |
47 | 48 | ||
@@ -50,7 +51,7 @@ static int amdgpu_gtt_mgr_init(struct ttm_mem_type_manager *man, | |||
50 | return -ENOMEM; | 51 | return -ENOMEM; |
51 | 52 | ||
52 | start = AMDGPU_GTT_MAX_TRANSFER_SIZE * AMDGPU_GTT_NUM_TRANSFER_WINDOWS; | 53 | start = AMDGPU_GTT_MAX_TRANSFER_SIZE * AMDGPU_GTT_NUM_TRANSFER_WINDOWS; |
53 | size = p_size - start; | 54 | size = (adev->mc.gart_size >> PAGE_SHIFT) - start; |
54 | drm_mm_init(&mgr->mm, start, size); | 55 | drm_mm_init(&mgr->mm, start, size); |
55 | spin_lock_init(&mgr->lock); | 56 | spin_lock_init(&mgr->lock); |
56 | mgr->available = p_size; | 57 | mgr->available = p_size; |
@@ -112,6 +113,7 @@ int amdgpu_gtt_mgr_alloc(struct ttm_mem_type_manager *man, | |||
112 | const struct ttm_place *place, | 113 | const struct ttm_place *place, |
113 | struct ttm_mem_reg *mem) | 114 | struct ttm_mem_reg *mem) |
114 | { | 115 | { |
116 | struct amdgpu_device *adev = amdgpu_ttm_adev(man->bdev); | ||
115 | struct amdgpu_gtt_mgr *mgr = man->priv; | 117 | struct amdgpu_gtt_mgr *mgr = man->priv; |
116 | struct drm_mm_node *node = mem->mm_node; | 118 | struct drm_mm_node *node = mem->mm_node; |
117 | enum drm_mm_insert_mode mode; | 119 | enum drm_mm_insert_mode mode; |
@@ -129,7 +131,7 @@ int amdgpu_gtt_mgr_alloc(struct ttm_mem_type_manager *man, | |||
129 | if (place && place->lpfn) | 131 | if (place && place->lpfn) |
130 | lpfn = place->lpfn; | 132 | lpfn = place->lpfn; |
131 | else | 133 | else |
132 | lpfn = man->size; | 134 | lpfn = adev->gart.num_cpu_pages; |
133 | 135 | ||
134 | mode = DRM_MM_INSERT_BEST; | 136 | mode = DRM_MM_INSERT_BEST; |
135 | if (place && place->flags & TTM_PL_FLAG_TOPDOWN) | 137 | if (place && place->flags & TTM_PL_FLAG_TOPDOWN) |