OSDN Git Service

drm/amdgpu: apply top reserved VA space to pre Vega10 as well
authorChristian König <christian.koenig@amd.com>
Mon, 22 Jan 2018 10:19:50 +0000 (11:19 +0100)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 19 Feb 2018 19:18:30 +0000 (14:18 -0500)
Reserve VA space at the top for older generations as well.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Monk Liu <monk.liu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c

index a99aff7..f828096 100644 (file)
@@ -580,11 +580,11 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file
                        dev_info.ids_flags |= AMDGPU_IDS_FLAGS_PREEMPTION;
 
                vm_size = adev->vm_manager.max_pfn * AMDGPU_GPU_PAGE_SIZE;
+               vm_size -= AMDGPU_VA_RESERVED_SIZE;
                dev_info.virtual_address_offset = AMDGPU_VA_RESERVED_SIZE;
                dev_info.virtual_address_max =
                        min(vm_size, AMDGPU_VA_HOLE_START);
 
-               vm_size -= AMDGPU_VA_RESERVED_SIZE;
                if (vm_size > AMDGPU_VA_HOLE_START) {
                        dev_info.high_va_offset = AMDGPU_VA_HOLE_END;
                        dev_info.high_va_max = AMDGPU_VA_HOLE_END | vm_size;
index b99c5cf..1945fe8 100644 (file)
@@ -469,7 +469,8 @@ static void gmc_v6_0_set_prt(struct amdgpu_device *adev, bool enable)
 
        if (enable) {
                uint32_t low = AMDGPU_VA_RESERVED_SIZE >> AMDGPU_GPU_PAGE_SHIFT;
-               uint32_t high = adev->vm_manager.max_pfn;
+               uint32_t high = adev->vm_manager.max_pfn -
+                       (AMDGPU_VA_RESERVED_SIZE >> AMDGPU_GPU_PAGE_SHIFT);
 
                WREG32(mmVM_PRT_APERTURE0_LOW_ADDR, low);
                WREG32(mmVM_PRT_APERTURE1_LOW_ADDR, low);
index 1137f39..761def0 100644 (file)
@@ -562,7 +562,8 @@ static void gmc_v7_0_set_prt(struct amdgpu_device *adev, bool enable)
 
        if (enable) {
                uint32_t low = AMDGPU_VA_RESERVED_SIZE >> AMDGPU_GPU_PAGE_SHIFT;
-               uint32_t high = adev->vm_manager.max_pfn;
+               uint32_t high = adev->vm_manager.max_pfn -
+                       (AMDGPU_VA_RESERVED_SIZE >> AMDGPU_GPU_PAGE_SHIFT);
 
                WREG32(mmVM_PRT_APERTURE0_LOW_ADDR, low);
                WREG32(mmVM_PRT_APERTURE1_LOW_ADDR, low);
index ce18196..2489be7 100644 (file)
@@ -762,7 +762,8 @@ static void gmc_v8_0_set_prt(struct amdgpu_device *adev, bool enable)
 
        if (enable) {
                uint32_t low = AMDGPU_VA_RESERVED_SIZE >> AMDGPU_GPU_PAGE_SHIFT;
-               uint32_t high = adev->vm_manager.max_pfn;
+               uint32_t high = adev->vm_manager.max_pfn -
+                       (AMDGPU_VA_RESERVED_SIZE >> AMDGPU_GPU_PAGE_SHIFT);
 
                WREG32(mmVM_PRT_APERTURE0_LOW_ADDR, low);
                WREG32(mmVM_PRT_APERTURE1_LOW_ADDR, low);