diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1321-drm-amdkfd-Fix-doorbell-initialization-and-finalizat.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1321-drm-amdkfd-Fix-doorbell-initialization-and-finalizat.patch | 106 |
1 files changed, 0 insertions, 106 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1321-drm-amdkfd-Fix-doorbell-initialization-and-finalizat.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1321-drm-amdkfd-Fix-doorbell-initialization-and-finalizat.patch deleted file mode 100644 index f9d66da1..00000000 --- a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1321-drm-amdkfd-Fix-doorbell-initialization-and-finalizat.patch +++ /dev/null @@ -1,106 +0,0 @@ -From 1590796b55d30220a2df158daebfa888ea4d01b9 Mon Sep 17 00:00:00 2001 -From: Felix Kuehling <Felix.Kuehling@amd.com> -Date: Fri, 28 Jul 2017 15:51:15 -0400 -Subject: [PATCH 1321/4131] drm/amdkfd: Fix doorbell initialization and - finalization - -Handle errors in doorbell aperture initialization instead of BUG_ON. -iounmap doorbell aperture during finalization. - -Change-Id: I45971955f13c66ea230994d2471264514043b158 -Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> ---- - drivers/gpu/drm/amd/amdkfd/kfd_device.c | 9 ++++++++- - drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c | 13 +++++++++++-- - drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 3 ++- - 3 files changed, 21 insertions(+), 4 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c b/drivers/gpu/drm/amd/amdkfd/kfd_device.c -index 35c0b554..d8b6489 100644 ---- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c -+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c -@@ -611,7 +611,11 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd, - goto kfd_gtt_sa_init_error; - } - -- kfd_doorbell_init(kfd); -+ if (kfd_doorbell_init(kfd)) { -+ dev_err(kfd_device, -+ "Error initializing doorbell aperture\n"); -+ goto kfd_doorbell_error; -+ } - - if (kfd_topology_add_device(kfd) != 0) { - dev_err(kfd_device, -@@ -678,6 +682,8 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd, - kfd_interrupt_error: - kfd_topology_remove_device(kfd); - kfd_topology_add_device_error: -+ kfd_doorbell_fini(kfd); -+kfd_doorbell_error: - kfd_gtt_sa_fini(kfd); - kfd_gtt_sa_init_error: - kfd->kfd2kgd->free_gtt_mem(kfd->kgd, kfd->gtt_mem); -@@ -699,6 +705,7 @@ void kgd2kfd_device_exit(struct kfd_dev *kfd) - device_queue_manager_uninit(kfd->dqm); - kfd_interrupt_exit(kfd); - kfd_topology_remove_device(kfd); -+ kfd_doorbell_fini(kfd); - kfd_gtt_sa_fini(kfd); - kfd->kfd2kgd->free_gtt_mem(kfd->kgd, kfd->gtt_mem); - } -diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c b/drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c -index f4833b2..55a0fda 100644 ---- a/drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c -+++ b/drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c -@@ -58,7 +58,7 @@ size_t kfd_doorbell_process_slice(struct kfd_dev *kfd) - } - - /* Doorbell calculations for device init. */ --void kfd_doorbell_init(struct kfd_dev *kfd) -+int kfd_doorbell_init(struct kfd_dev *kfd) - { - size_t doorbell_start_offset; - size_t doorbell_aperture_size; -@@ -94,7 +94,8 @@ void kfd_doorbell_init(struct kfd_dev *kfd) - kfd->doorbell_kernel_ptr = ioremap(kfd->doorbell_base, - kfd_doorbell_process_slice(kfd)); - -- WARN_ON(!kfd->doorbell_kernel_ptr); -+ if (!kfd->doorbell_kernel_ptr) -+ return -ENOMEM; - - pr_debug("Doorbell initialization:\n"); - pr_debug("doorbell base == 0x%08lX\n", -@@ -114,6 +115,14 @@ void kfd_doorbell_init(struct kfd_dev *kfd) - - pr_debug("doorbell kernel address == 0x%08lX\n", - (uintptr_t)kfd->doorbell_kernel_ptr); -+ -+ return 0; -+} -+ -+void kfd_doorbell_fini(struct kfd_dev *kfd) -+{ -+ if (kfd->doorbell_kernel_ptr) -+ iounmap(kfd->doorbell_kernel_ptr); - } - - int kfd_doorbell_mmap(struct kfd_dev *dev, struct kfd_process *process, -diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h -index 50fe6ca..c8af486 100644 ---- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h -+++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h -@@ -817,7 +817,8 @@ void kfd_pasid_free(unsigned int pasid); - - /* Doorbells */ - size_t kfd_doorbell_process_slice(struct kfd_dev *kfd); --void kfd_doorbell_init(struct kfd_dev *kfd); -+int kfd_doorbell_init(struct kfd_dev *kfd); -+void kfd_doorbell_fini(struct kfd_dev *kfd); - int kfd_doorbell_mmap(struct kfd_dev *kfd, struct kfd_process *process, - struct vm_area_struct *vma); - void __iomem *kfd_get_kernel_doorbell(struct kfd_dev *kfd, --- -2.7.4 - |