Change-Id: Ib59c9e7f37a10ef1d6335d400ab41fe3cc9e2fb6 Signed-off-by: Monk Liu <Monk.Liu at amd.com> --- drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c | 8 ++++++++ drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h | 2 ++ drivers/gpu/drm/amd/amdgpu/vi.c | 3 +++ 3 files changed, 13 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c index 5b15483..8f9dff5 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c @@ -132,3 +132,11 @@ static void amdgpu_unmap_static_csa(struct amdgpu_device *adev, struct amdgpu_vm vm->vm_virt.vm_csa_addr = vm->vm_virt.vm_gds_addr = 0; } } + +void amdgpu_virt_set_csa_funcs(struct amdgpu_device *adev) { + adev->virt.allocate_csa = amdgpu_allocate_static_csa; + adev->virt.deallocate_csa = amdgpu_deallocate_static_csa; + adev->virt.map_csa = amdgpu_map_static_csa; + adev->virt.unmap_csa = amdgpu_unmap_static_csa; + adev->virt.csa_size = 8 * 1024; /* two page now for VI and AI */ +} diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h index 5aa7f0c..f036d3a 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h @@ -73,4 +73,6 @@ static inline bool is_virtual_machine(void) #endif } +void amdgpu_virt_set_csa_funcs(struct amdgpu_device *adev); + #endif diff --git a/drivers/gpu/drm/amd/amdgpu/vi.c b/drivers/gpu/drm/amd/amdgpu/vi.c index 7350a8f..42e96cb 100644 --- a/drivers/gpu/drm/amd/amdgpu/vi.c +++ b/drivers/gpu/drm/amd/amdgpu/vi.c @@ -455,6 +455,9 @@ static void vi_detect_hw_virtualization(struct amdgpu_device *adev) if (is_virtual_machine()) /* passthrough mode exclus sr-iov mode */ adev->virt.caps |= AMDGPU_PASSTHROUGH_MODE; } + + if (amdgpu_sriov_vf(adev)) + amdgpu_virt_set_csa_funcs(adev); } static const struct amdgpu_allowed_register_entry tonga_allowed_read_registers[] = { -- 2.7.4