for SRIOV usage, CSA is only used per device and each VM will map on it. Change-Id: I0736b6e51329d643343e26968a47a81c3a27035f Signed-off-by: Monk Liu <Monk.Liu at amd.com> --- drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c index 0bfec66..a6bce36 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c @@ -20,4 +20,25 @@ * OTHER DEALINGS IN THE SOFTWARE. * */ -#include "amdgpu.h" \ No newline at end of file +#include "amdgpu.h" +static int amdgpu_allocate_static_csa(struct amdgpu_device *adev) +{ + int r; + void *ptr; + + r = amdgpu_bo_create_kernel(adev, adev->virt.csa_size, PAGE_SIZE, + AMDGPU_GEM_DOMAIN_VRAM, &adev->virt.csa_obj, + &adev->virt.csa_vmid0_addr, &ptr); + if (r) + return r; + + /* gds part take the bottom half buffer */ + adev->virt.gds_vmid0_addr = adev->virt.csa_vmid0_addr + PAGE_SIZE; + memset(ptr, 0, adev->virt.csa_size); + return 0; +} + +static void amdgpu_deallocate_static_csa(struct amdgpu_device *adev) +{ + amdgpu_bo_free_kernel(&adev->virt.csa_obj, &adev->virt.csa_vmid0_addr, NULL); +} -- 2.7.4