Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 57adc4ce authored by Christian König's avatar Christian König Committed by Alex Deucher
Browse files

drm/amdgpu: change amdgpu_ttm_set_active_vram_size



Instead of setting the active VRAM size directly provide a the info if
we can use the buffer functions or not.

Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
Acked-by: default avatarChunming zhou <david1.zhou@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent c396ef9b
Loading
Loading
Loading
Loading
+17 −6
Original line number Original line Diff line number Diff line
@@ -1411,7 +1411,7 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
		adev->gmc.visible_vram_size = vis_vram_limit;
		adev->gmc.visible_vram_size = vis_vram_limit;


	/* Change the size here instead of the init above so only lpfn is affected */
	/* Change the size here instead of the init above so only lpfn is affected */
	amdgpu_ttm_set_active_vram_size(adev, adev->gmc.visible_vram_size);
	amdgpu_ttm_set_buffer_funcs_status(adev, false);
#ifdef CONFIG_64BIT
#ifdef CONFIG_64BIT
	adev->mman.aper_base_kaddr = ioremap_wc(adev->gmc.aper_base,
	adev->mman.aper_base_kaddr = ioremap_wc(adev->gmc.aper_base,
						adev->gmc.visible_vram_size);
						adev->gmc.visible_vram_size);
@@ -1526,17 +1526,28 @@ void amdgpu_ttm_fini(struct amdgpu_device *adev)
	DRM_INFO("amdgpu: ttm finalized\n");
	DRM_INFO("amdgpu: ttm finalized\n");
}
}


/* this should only be called at bootup or when userspace
/**
 * isn't running */
 * amdgpu_ttm_set_buffer_funcs_status - enable/disable use of buffer functions
void amdgpu_ttm_set_active_vram_size(struct amdgpu_device *adev, u64 size)
 *
 * @adev: amdgpu_device pointer
 * @enable: true when we can use buffer functions.
 *
 * Enable/disable use of buffer functions during suspend/resume. This should
 * only be called at bootup or when userspace isn't running.
 */
void amdgpu_ttm_set_buffer_funcs_status(struct amdgpu_device *adev, bool enable)
{
{
	struct ttm_mem_type_manager *man;
	struct ttm_mem_type_manager *man = &adev->mman.bdev.man[TTM_PL_VRAM];
	uint64_t size;


	if (!adev->mman.initialized)
	if (!adev->mman.initialized)
		return;
		return;


	man = &adev->mman.bdev.man[TTM_PL_VRAM];
	/* this just adjusts TTM size idea, which sets lpfn to the correct value */
	/* this just adjusts TTM size idea, which sets lpfn to the correct value */
	if (enable)
		size = adev->gmc.real_vram_size;
	else
		size = adev->gmc.visible_vram_size;
	man->size = size >> PAGE_SHIFT;
	man->size = size >> PAGE_SHIFT;
}
}


+2 −1
Original line number Original line Diff line number Diff line
@@ -77,7 +77,8 @@ uint64_t amdgpu_vram_mgr_vis_usage(struct ttm_mem_type_manager *man);


int amdgpu_ttm_init(struct amdgpu_device *adev);
int amdgpu_ttm_init(struct amdgpu_device *adev);
void amdgpu_ttm_fini(struct amdgpu_device *adev);
void amdgpu_ttm_fini(struct amdgpu_device *adev);
void amdgpu_ttm_set_active_vram_size(struct amdgpu_device *adev, u64 size);
void amdgpu_ttm_set_buffer_funcs_status(struct amdgpu_device *adev,
					bool enable);


int amdgpu_copy_buffer(struct amdgpu_ring *ring, uint64_t src_offset,
int amdgpu_copy_buffer(struct amdgpu_ring *ring, uint64_t src_offset,
		       uint64_t dst_offset, uint32_t byte_count,
		       uint64_t dst_offset, uint32_t byte_count,
+2 −2
Original line number Original line Diff line number Diff line
@@ -310,7 +310,7 @@ static void cik_sdma_gfx_stop(struct amdgpu_device *adev)


	if ((adev->mman.buffer_funcs_ring == sdma0) ||
	if ((adev->mman.buffer_funcs_ring == sdma0) ||
	    (adev->mman.buffer_funcs_ring == sdma1))
	    (adev->mman.buffer_funcs_ring == sdma1))
		amdgpu_ttm_set_active_vram_size(adev, adev->gmc.visible_vram_size);
			amdgpu_ttm_set_buffer_funcs_status(adev, false);


	for (i = 0; i < adev->sdma.num_instances; i++) {
	for (i = 0; i < adev->sdma.num_instances; i++) {
		rb_cntl = RREG32(mmSDMA0_GFX_RB_CNTL + sdma_offsets[i]);
		rb_cntl = RREG32(mmSDMA0_GFX_RB_CNTL + sdma_offsets[i]);
@@ -510,7 +510,7 @@ static int cik_sdma_gfx_resume(struct amdgpu_device *adev)
		}
		}


		if (adev->mman.buffer_funcs_ring == ring)
		if (adev->mman.buffer_funcs_ring == ring)
			amdgpu_ttm_set_active_vram_size(adev, adev->gmc.real_vram_size);
			amdgpu_ttm_set_buffer_funcs_status(adev, true);
	}
	}


	return 0;
	return 0;
+2 −2
Original line number Original line Diff line number Diff line
@@ -339,7 +339,7 @@ static void sdma_v2_4_gfx_stop(struct amdgpu_device *adev)


	if ((adev->mman.buffer_funcs_ring == sdma0) ||
	if ((adev->mman.buffer_funcs_ring == sdma0) ||
	    (adev->mman.buffer_funcs_ring == sdma1))
	    (adev->mman.buffer_funcs_ring == sdma1))
		amdgpu_ttm_set_active_vram_size(adev, adev->gmc.visible_vram_size);
		amdgpu_ttm_set_buffer_funcs_status(adev, false);


	for (i = 0; i < adev->sdma.num_instances; i++) {
	for (i = 0; i < adev->sdma.num_instances; i++) {
		rb_cntl = RREG32(mmSDMA0_GFX_RB_CNTL + sdma_offsets[i]);
		rb_cntl = RREG32(mmSDMA0_GFX_RB_CNTL + sdma_offsets[i]);
@@ -484,7 +484,7 @@ static int sdma_v2_4_gfx_resume(struct amdgpu_device *adev)
		}
		}


		if (adev->mman.buffer_funcs_ring == ring)
		if (adev->mman.buffer_funcs_ring == ring)
			amdgpu_ttm_set_active_vram_size(adev, adev->gmc.real_vram_size);
			amdgpu_ttm_set_buffer_funcs_status(adev, true);
	}
	}


	return 0;
	return 0;
+2 −2
Original line number Original line Diff line number Diff line
@@ -510,7 +510,7 @@ static void sdma_v3_0_gfx_stop(struct amdgpu_device *adev)


	if ((adev->mman.buffer_funcs_ring == sdma0) ||
	if ((adev->mman.buffer_funcs_ring == sdma0) ||
	    (adev->mman.buffer_funcs_ring == sdma1))
	    (adev->mman.buffer_funcs_ring == sdma1))
		amdgpu_ttm_set_active_vram_size(adev, adev->gmc.visible_vram_size);
		amdgpu_ttm_set_buffer_funcs_status(adev, false);


	for (i = 0; i < adev->sdma.num_instances; i++) {
	for (i = 0; i < adev->sdma.num_instances; i++) {
		rb_cntl = RREG32(mmSDMA0_GFX_RB_CNTL + sdma_offsets[i]);
		rb_cntl = RREG32(mmSDMA0_GFX_RB_CNTL + sdma_offsets[i]);
@@ -750,7 +750,7 @@ static int sdma_v3_0_gfx_resume(struct amdgpu_device *adev)
		}
		}


		if (adev->mman.buffer_funcs_ring == ring)
		if (adev->mman.buffer_funcs_ring == ring)
			amdgpu_ttm_set_active_vram_size(adev, adev->gmc.real_vram_size);
			amdgpu_ttm_set_buffer_funcs_status(adev, true);
	}
	}


	return 0;
	return 0;
Loading