aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2017-11-04 11:51:44 -0400
committerAlex Deucher <alexander.deucher@amd.com>2017-12-06 12:47:21 -0500
commitfdd5faaa08f891153ac4fd8cedace6d95bed0968 (patch)
treeb342a5442fab53bd1b44366d070932fca7e13f1d
parentc47b41a79ab5e8faec9aea6c4a06c4d1e4d1132f (diff)
drm/amdgpu: cleanup vm_size handling
It's pointless to have the same value twice, just always use max_pfn. 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>
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c18
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h7
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c1
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c1
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c1
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c13
6 files changed, 17 insertions, 24 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index 1e727da2bb64..122379dfc7d8 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -2576,27 +2576,27 @@ void amdgpu_vm_set_fragment_size(struct amdgpu_device *adev,
2576 * @adev: amdgpu_device pointer 2576 * @adev: amdgpu_device pointer
2577 * @vm_size: the default vm size if it's set auto 2577 * @vm_size: the default vm size if it's set auto
2578 */ 2578 */
2579void amdgpu_vm_adjust_size(struct amdgpu_device *adev, uint64_t vm_size, 2579void amdgpu_vm_adjust_size(struct amdgpu_device *adev, uint32_t vm_size,
2580 uint32_t fragment_size_default) 2580 uint32_t fragment_size_default)
2581{ 2581{
2582 /* adjust vm size firstly */ 2582 /* adjust vm size firstly */
2583 if (amdgpu_vm_size == -1) 2583 if (amdgpu_vm_size != -1)
2584 adev->vm_manager.vm_size = vm_size; 2584 vm_size = amdgpu_vm_size;
2585 else 2585
2586 adev->vm_manager.vm_size = amdgpu_vm_size; 2586 adev->vm_manager.max_pfn = (uint64_t)vm_size << 18;
2587 2587
2588 /* block size depends on vm size */ 2588 /* block size depends on vm size */
2589 if (amdgpu_vm_block_size == -1) 2589 if (amdgpu_vm_block_size == -1)
2590 adev->vm_manager.block_size = 2590 adev->vm_manager.block_size =
2591 amdgpu_vm_get_block_size(adev->vm_manager.vm_size); 2591 amdgpu_vm_get_block_size(vm_size);
2592 else 2592 else
2593 adev->vm_manager.block_size = amdgpu_vm_block_size; 2593 adev->vm_manager.block_size = amdgpu_vm_block_size;
2594 2594
2595 amdgpu_vm_set_fragment_size(adev, fragment_size_default); 2595 amdgpu_vm_set_fragment_size(adev, fragment_size_default);
2596 2596
2597 DRM_INFO("vm size is %llu GB, block size is %u-bit, fragment size is %u-bit\n", 2597 DRM_INFO("vm size is %u GB, block size is %u-bit, fragment size is %u-bit\n",
2598 adev->vm_manager.vm_size, adev->vm_manager.block_size, 2598 vm_size, adev->vm_manager.block_size,
2599 adev->vm_manager.fragment_size); 2599 adev->vm_manager.fragment_size);
2600} 2600}
2601 2601
2602/** 2602/**
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
index bae77353447b..e8f8896d18db 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
@@ -221,7 +221,6 @@ struct amdgpu_vm_manager {
221 221
222 uint64_t max_pfn; 222 uint64_t max_pfn;
223 uint32_t num_level; 223 uint32_t num_level;
224 uint64_t vm_size;
225 uint32_t block_size; 224 uint32_t block_size;
226 uint32_t fragment_size; 225 uint32_t fragment_size;
227 /* vram base address for page table entry */ 226 /* vram base address for page table entry */
@@ -313,9 +312,9 @@ struct amdgpu_bo_va_mapping *amdgpu_vm_bo_lookup_mapping(struct amdgpu_vm *vm,
313void amdgpu_vm_bo_rmv(struct amdgpu_device *adev, 312void amdgpu_vm_bo_rmv(struct amdgpu_device *adev,
314 struct amdgpu_bo_va *bo_va); 313 struct amdgpu_bo_va *bo_va);
315void amdgpu_vm_set_fragment_size(struct amdgpu_device *adev, 314void amdgpu_vm_set_fragment_size(struct amdgpu_device *adev,
316 uint32_t fragment_size_default); 315 uint32_t fragment_size_default);
317void amdgpu_vm_adjust_size(struct amdgpu_device *adev, uint64_t vm_size, 316void amdgpu_vm_adjust_size(struct amdgpu_device *adev, uint32_t vm_size,
318 uint32_t fragment_size_default); 317 uint32_t fragment_size_default);
319int amdgpu_vm_ioctl(struct drm_device *dev, void *data, struct drm_file *filp); 318int amdgpu_vm_ioctl(struct drm_device *dev, void *data, struct drm_file *filp);
320bool amdgpu_vm_need_pipeline_sync(struct amdgpu_ring *ring, 319bool amdgpu_vm_need_pipeline_sync(struct amdgpu_ring *ring,
321 struct amdgpu_job *job); 320 struct amdgpu_job *job);
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
index d2a43db22cff..c8e47c36608e 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
@@ -838,7 +838,6 @@ static int gmc_v6_0_sw_init(void *handle)
838 return r; 838 return r;
839 839
840 amdgpu_vm_adjust_size(adev, 64, 9); 840 amdgpu_vm_adjust_size(adev, 64, 9);
841 adev->vm_manager.max_pfn = adev->vm_manager.vm_size << 18;
842 841
843 adev->mc.mc_mask = 0xffffffffffULL; 842 adev->mc.mc_mask = 0xffffffffffULL;
844 843
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
index 6c6a7e14359c..2b7338e22409 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
@@ -978,7 +978,6 @@ static int gmc_v7_0_sw_init(void *handle)
978 * Max GPUVM size for cayman and SI is 40 bits. 978 * Max GPUVM size for cayman and SI is 40 bits.
979 */ 979 */
980 amdgpu_vm_adjust_size(adev, 64, 9); 980 amdgpu_vm_adjust_size(adev, 64, 9);
981 adev->vm_manager.max_pfn = adev->vm_manager.vm_size << 18;
982 981
983 /* Set the internal MC address mask 982 /* Set the internal MC address mask
984 * This is the max address of the GPU's 983 * This is the max address of the GPU's
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
index edbe0df24d90..e30a96a8f49b 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
@@ -1075,7 +1075,6 @@ static int gmc_v8_0_sw_init(void *handle)
1075 * Max GPUVM size for cayman and SI is 40 bits. 1075 * Max GPUVM size for cayman and SI is 40 bits.
1076 */ 1076 */
1077 amdgpu_vm_adjust_size(adev, 64, 9); 1077 amdgpu_vm_adjust_size(adev, 64, 9);
1078 adev->vm_manager.max_pfn = adev->vm_manager.vm_size << 18;
1079 1078
1080 /* Set the internal MC address mask 1079 /* Set the internal MC address mask
1081 * This is the max address of the GPU's 1080 * This is the max address of the GPU's
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
index 69c9af7af6f4..b067b46a418f 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
@@ -564,7 +564,7 @@ static int gmc_v9_0_sw_init(void *handle)
564 case CHIP_RAVEN: 564 case CHIP_RAVEN:
565 adev->mc.vram_type = AMDGPU_VRAM_TYPE_UNKNOWN; 565 adev->mc.vram_type = AMDGPU_VRAM_TYPE_UNKNOWN;
566 if (adev->rev_id == 0x0 || adev->rev_id == 0x1) { 566 if (adev->rev_id == 0x0 || adev->rev_id == 0x1) {
567 adev->vm_manager.vm_size = 1U << 18; 567 adev->vm_manager.max_pfn = 1ULL << 36;
568 adev->vm_manager.block_size = 9; 568 adev->vm_manager.block_size = 9;
569 adev->vm_manager.num_level = 3; 569 adev->vm_manager.num_level = 3;
570 amdgpu_vm_set_fragment_size(adev, 9); 570 amdgpu_vm_set_fragment_size(adev, 9);
@@ -582,7 +582,7 @@ static int gmc_v9_0_sw_init(void *handle)
582 * vm size is 256TB (48bit), maximum size of Vega10, 582 * vm size is 256TB (48bit), maximum size of Vega10,
583 * block size 512 (9bit) 583 * block size 512 (9bit)
584 */ 584 */
585 adev->vm_manager.vm_size = 1U << 18; 585 adev->vm_manager.max_pfn = 1ULL << 36;
586 adev->vm_manager.block_size = 9; 586 adev->vm_manager.block_size = 9;
587 adev->vm_manager.num_level = 3; 587 adev->vm_manager.num_level = 3;
588 amdgpu_vm_set_fragment_size(adev, 9); 588 amdgpu_vm_set_fragment_size(adev, 9);
@@ -591,10 +591,9 @@ static int gmc_v9_0_sw_init(void *handle)
591 break; 591 break;
592 } 592 }
593 593
594 DRM_INFO("vm size is %llu GB, block size is %u-bit,fragment size is %u-bit\n", 594 DRM_INFO("vm size is %llu GB, block size is %u-bit, fragment size is %u-bit\n",
595 adev->vm_manager.vm_size, 595 adev->vm_manager.max_pfn >> 18, adev->vm_manager.block_size,
596 adev->vm_manager.block_size, 596 adev->vm_manager.fragment_size);
597 adev->vm_manager.fragment_size);
598 597
599 /* This interrupt is VMC page fault.*/ 598 /* This interrupt is VMC page fault.*/
600 r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENTID_VMC, 0, 599 r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENTID_VMC, 0,
@@ -605,8 +604,6 @@ static int gmc_v9_0_sw_init(void *handle)
605 if (r) 604 if (r)
606 return r; 605 return r;
607 606
608 adev->vm_manager.max_pfn = adev->vm_manager.vm_size << 18;
609
610 /* Set the internal MC address mask 607 /* Set the internal MC address mask
611 * This is the max address of the GPU's 608 * This is the max address of the GPU's
612 * internal address space. 609 * internal address space.