Author: hselasky
Date: Wed Mar  7 14:03:31 2018
New Revision: 330597
URL: https://svnweb.freebsd.org/changeset/base/330597

Log:
  Disable unsupported disassociate ucontext functionality in mlx5ib(4).
  
  MFC after:    1 week
  Sponsored by: Mellanox Technologies

Modified:
  head/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c

Modified: head/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c
==============================================================================
--- head/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c    Wed Mar  7 13:59:46 2018        
(r330596)
+++ head/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c    Wed Mar  7 14:03:31 2018        
(r330597)
@@ -1241,62 +1241,6 @@ static int mlx5_ib_set_vma_data(struct vm_area_struct 
        return 0;
 }
 
-static void mlx5_ib_disassociate_ucontext(struct ib_ucontext *ibcontext)
-{
-       int ret;
-       struct vm_area_struct *vma;
-       struct mlx5_ib_vma_private_data *vma_private, *n;
-       struct mlx5_ib_ucontext *context = to_mucontext(ibcontext);
-       struct task_struct *owning_process  = NULL;
-       struct mm_struct   *owning_mm       = NULL;
-
-       owning_process = get_pid_task(ibcontext->tgid, PIDTYPE_PID);
-       if (!owning_process)
-               return;
-
-       owning_mm = get_task_mm(owning_process);
-       if (!owning_mm) {
-               pr_info("no mm, disassociate ucontext is pending task 
termination\n");
-               while (1) {
-                       put_task_struct(owning_process);
-                       usleep_range(1000, 2000);
-                       owning_process = get_pid_task(ibcontext->tgid,
-                                                     PIDTYPE_PID);
-                       if (!owning_process /* ||
-                           owning_process->state == TASK_DEAD */) {
-                               pr_info("disassociate ucontext done, task was 
terminated\n");
-                               /* in case task was dead need to release the
-                                * task struct.
-                                */
-                               if (owning_process)
-                                       put_task_struct(owning_process);
-                               return;
-                       }
-               }
-       }
-
-       /* need to protect from a race on closing the vma as part of
-        * mlx5_ib_vma_close.
-        */
-       down_read(&owning_mm->mmap_sem);
-       list_for_each_entry_safe(vma_private, n, &context->vma_private_list,
-                                list) {
-               vma = vma_private->vma;
-               ret = zap_vma_ptes(vma, vma->vm_start,
-                                  PAGE_SIZE);
-               WARN_ONCE(ret, "%s: zap_vma_ptes failed", __func__);
-               /* context going to be destroyed, should
-                * not access ops any more.
-                */
-               vma->vm_ops = NULL;
-               list_del(&vma_private->list);
-               kfree(vma_private);
-       }
-       up_read(&owning_mm->mmap_sem);
-       mmput(owning_mm);
-       put_task_struct(owning_process);
-}
-
 static inline char *mmap_cmd2str(enum mlx5_ib_mmap_cmd cmd)
 {
        switch (cmd) {
@@ -3055,8 +2999,6 @@ static void *mlx5_ib_add(struct mlx5_core_dev *mdev)
                dev->ib_dev.get_vf_stats        = mlx5_ib_get_vf_stats;
                dev->ib_dev.set_vf_guid         = mlx5_ib_set_vf_guid;
        }
-
-       dev->ib_dev.disassociate_ucontext = mlx5_ib_disassociate_ucontext;
 
        mlx5_ib_internal_fill_odp_caps(dev);
 
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to