drm/amdkfd: drop IOMMUv2 support
[linux-2.6-microblaze.git] / drivers / gpu / drm / amd / amdkfd / kfd_events.c
index 8081a94..0f58be6 100644 (file)
@@ -31,7 +31,6 @@
 #include <linux/memory.h>
 #include "kfd_priv.h"
 #include "kfd_events.h"
-#include "kfd_iommu.h"
 #include <linux/device.h>
 
 /*
@@ -1146,87 +1145,6 @@ static void lookup_events_by_type_and_signal(struct kfd_process *p,
        rcu_read_unlock();
 }
 
-#ifdef KFD_SUPPORT_IOMMU_V2
-void kfd_signal_iommu_event(struct kfd_node *dev, u32 pasid,
-               unsigned long address, bool is_write_requested,
-               bool is_execute_requested)
-{
-       struct kfd_hsa_memory_exception_data memory_exception_data;
-       struct vm_area_struct *vma;
-       int user_gpu_id;
-
-       /*
-        * Because we are called from arbitrary context (workqueue) as opposed
-        * to process context, kfd_process could attempt to exit while we are
-        * running so the lookup function increments the process ref count.
-        */
-       struct kfd_process *p = kfd_lookup_process_by_pasid(pasid);
-       struct mm_struct *mm;
-
-       if (!p)
-               return; /* Presumably process exited. */
-
-       /* Take a safe reference to the mm_struct, which may otherwise
-        * disappear even while the kfd_process is still referenced.
-        */
-       mm = get_task_mm(p->lead_thread);
-       if (!mm) {
-               kfd_unref_process(p);
-               return; /* Process is exiting */
-       }
-
-       user_gpu_id = kfd_process_get_user_gpu_id(p, dev->id);
-       if (unlikely(user_gpu_id == -EINVAL)) {
-               WARN_ONCE(1, "Could not get user_gpu_id from dev->id:%x\n", dev->id);
-               return;
-       }
-       memset(&memory_exception_data, 0, sizeof(memory_exception_data));
-
-       mmap_read_lock(mm);
-       vma = find_vma(mm, address);
-
-       memory_exception_data.gpu_id = user_gpu_id;
-       memory_exception_data.va = address;
-       /* Set failure reason */
-       memory_exception_data.failure.NotPresent = 1;
-       memory_exception_data.failure.NoExecute = 0;
-       memory_exception_data.failure.ReadOnly = 0;
-       if (vma && address >= vma->vm_start) {
-               memory_exception_data.failure.NotPresent = 0;
-
-               if (is_write_requested && !(vma->vm_flags & VM_WRITE))
-                       memory_exception_data.failure.ReadOnly = 1;
-               else
-                       memory_exception_data.failure.ReadOnly = 0;
-
-               if (is_execute_requested && !(vma->vm_flags & VM_EXEC))
-                       memory_exception_data.failure.NoExecute = 1;
-               else
-                       memory_exception_data.failure.NoExecute = 0;
-       }
-
-       mmap_read_unlock(mm);
-       mmput(mm);
-
-       pr_debug("notpresent %d, noexecute %d, readonly %d\n",
-                       memory_exception_data.failure.NotPresent,
-                       memory_exception_data.failure.NoExecute,
-                       memory_exception_data.failure.ReadOnly);
-
-       /* Workaround on Raven to not kill the process when memory is freed
-        * before IOMMU is able to finish processing all the excessive PPRs
-        */
-
-       if (KFD_GC_VERSION(dev) != IP_VERSION(9, 1, 0) &&
-           KFD_GC_VERSION(dev) != IP_VERSION(9, 2, 2) &&
-           KFD_GC_VERSION(dev) != IP_VERSION(9, 3, 0))
-               lookup_events_by_type_and_signal(p, KFD_EVENT_TYPE_MEMORY,
-                               &memory_exception_data);
-
-       kfd_unref_process(p);
-}
-#endif /* KFD_SUPPORT_IOMMU_V2 */
-
 void kfd_signal_hw_exception_event(u32 pasid)
 {
        /*