diff options
Diffstat (limited to 'meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1471-drm-amdgpu-Add-kfd2kgd-API-for-submitting-IB.patch')
-rw-r--r-- | meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1471-drm-amdgpu-Add-kfd2kgd-API-for-submitting-IB.patch | 154 |
1 files changed, 0 insertions, 154 deletions
diff --git a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1471-drm-amdgpu-Add-kfd2kgd-API-for-submitting-IB.patch b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1471-drm-amdgpu-Add-kfd2kgd-API-for-submitting-IB.patch deleted file mode 100644 index 1e2a7a36..00000000 --- a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1471-drm-amdgpu-Add-kfd2kgd-API-for-submitting-IB.patch +++ /dev/null @@ -1,154 +0,0 @@ -From 8993ec870c61b7e8260d699fd13db4500d6ae13d Mon Sep 17 00:00:00 2001 -From: Amber Lin <Amber.Lin@amd.com> -Date: Fri, 8 Jul 2016 15:53:47 -0400 -Subject: [PATCH 1471/4131] drm/amdgpu: Add kfd2kgd API for submitting IB - -This interface allows KFD to submit IB to a specific engine and VMID. - -BUG: SWDEV-93847 - -Signed-off-by: Amber Lin <Amber.Lin@amd.com> ---- - drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 55 +++++++++++++++++++++++ - drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 3 ++ - drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c | 3 +- - drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c | 3 +- - drivers/gpu/drm/amd/include/kgd_kfd_interface.h | 7 ++- - 5 files changed, 68 insertions(+), 3 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c -index ea5372b..9e0ddbb 100755 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c -@@ -272,6 +272,61 @@ void amdgpu_amdkfd_cancel_restore_mem(struct amdgpu_device *adev, - cancel_delayed_work_sync(&mem->data2.work); - } - -+int amdgpu_amdkfd_submit_ib(struct kgd_dev *kgd, enum kgd_engine_type engine, -+ uint32_t vmid, uint64_t gpu_addr, -+ uint32_t *ib_cmd, uint32_t ib_len) -+{ -+ struct amdgpu_device *adev = (struct amdgpu_device *)kgd; -+ struct amdgpu_job *job; -+ struct amdgpu_ib *ib; -+ struct amdgpu_ring *ring; -+ struct fence *f = NULL; -+ int ret; -+ -+ switch (engine) { -+ case KGD_ENGINE_MEC1: -+ ring = &adev->gfx.compute_ring[0]; -+ break; -+ case KGD_ENGINE_SDMA1: -+ ring = &adev->sdma.instance[0].ring; -+ break; -+ case KGD_ENGINE_SDMA2: -+ ring = &adev->sdma.instance[1].ring; -+ break; -+ default: -+ pr_err("Invalid engine in IB submission: %d\n", engine); -+ ret = -EINVAL; -+ goto err; -+ } -+ -+ ret = amdgpu_job_alloc(adev, 1, &job, NULL); -+ if (ret) -+ goto err; -+ -+ ib = &job->ibs[0]; -+ memset(ib, 0, sizeof(struct amdgpu_ib)); -+ -+ ib->gpu_addr = gpu_addr; -+ ib->ptr = ib_cmd; -+ ib->length_dw = ib_len; -+ /* This works for NO_HWS. TODO: need to handle without knowing VMID */ -+ job->vm_id = vmid; -+ -+ ret = amdgpu_ib_schedule(ring, 1, ib, NULL, job, &f); -+ if (ret) { -+ DRM_ERROR("amdgpu: failed to schedule IB.\n"); -+ goto err_ib_sched; -+ } -+ -+ ret = fence_wait(f, false); -+ -+err_ib_sched: -+ fence_put(f); -+ amdgpu_job_free(job); -+err: -+ return ret; -+} -+ - u32 pool_to_domain(enum kgd_memory_pool p) - { - switch (p) { -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h -index bbf3404..70b8652 100755 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h -@@ -91,6 +91,9 @@ int amdgpu_amdkfd_schedule_restore_mem(struct amdgpu_device *adev, - unsigned long delay); - void amdgpu_amdkfd_cancel_restore_mem(struct amdgpu_device *adev, - struct kgd_mem *mem); -+int amdgpu_amdkfd_submit_ib(struct kgd_dev *kgd, enum kgd_engine_type engine, -+ uint32_t vmid, uint64_t gpu_addr, -+ uint32_t *ib_cmd, uint32_t ib_len); - - struct kfd2kgd_calls *amdgpu_amdkfd_gfx_7_get_functions(void); - struct kfd2kgd_calls *amdgpu_amdkfd_gfx_8_0_get_functions(void); -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c -index 3e42eaa..65b5e2b 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c -@@ -197,7 +197,8 @@ static const struct kfd2kgd_calls kfd2kgd = { - .unpin_put_sg_table_bo = amdgpu_amdkfd_gpuvm_unpin_put_sg_table, - .get_dmabuf_info = amdgpu_amdkfd_get_dmabuf_info, - .import_dmabuf = amdgpu_amdkfd_gpuvm_import_dmabuf, -- .get_vm_fault_info = amdgpu_amdkfd_gpuvm_get_vm_fault_info -+ .get_vm_fault_info = amdgpu_amdkfd_gpuvm_get_vm_fault_info, -+ .submit_ib = amdgpu_amdkfd_submit_ib - }; - - struct kfd2kgd_calls *amdgpu_amdkfd_gfx_7_get_functions() -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c -index ad92de6..af2fcec 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c -@@ -179,7 +179,8 @@ static const struct kfd2kgd_calls kfd2kgd = { - .unpin_put_sg_table_bo = amdgpu_amdkfd_gpuvm_unpin_put_sg_table, - .get_dmabuf_info = amdgpu_amdkfd_get_dmabuf_info, - .import_dmabuf = amdgpu_amdkfd_gpuvm_import_dmabuf, -- .get_vm_fault_info = amdgpu_amdkfd_gpuvm_get_vm_fault_info -+ .get_vm_fault_info = amdgpu_amdkfd_gpuvm_get_vm_fault_info, -+ .submit_ib = amdgpu_amdkfd_submit_ib - }; - - struct kfd2kgd_calls *amdgpu_amdkfd_gfx_8_0_get_functions() -diff --git a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h -index 3db537b..4ab5eb6 100644 ---- a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h -+++ b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h -@@ -205,6 +205,9 @@ struct kgd2kfd_shared_resources { - * @import_dmabuf: Imports a DMA buffer, creating a new kgd_mem object - * Supports only DMA buffers created by GPU driver on the same GPU - * -+ * @submit_ib: Submits an IB to the engine specified by inserting the IB to -+ * the corresonded ring (ring type). -+ * - * This structure contains function pointers to services that the kgd driver - * provides to amdkfd driver. - * -@@ -339,7 +342,9 @@ struct kfd2kgd_calls { - - int (*get_vm_fault_info)(struct kgd_dev *kgd, - struct kfd_vm_fault_info *info); -- -+ int (*submit_ib)(struct kgd_dev *kgd, enum kgd_engine_type engine, -+ uint32_t vmid, uint64_t gpu_addr, -+ uint32_t *ib_cmd, uint32_t ib_len); - }; - - /** --- -2.7.4 - |