mr.c (828cf5936bea2438c21a3a6c303b34a2a1f6c3c2) mr.c (85f9e38a5ac7d397f9bb5e57901b2d6af4dcc3b9)
1/*
2 * Copyright (c) 2013-2015, Mellanox Technologies. All rights reserved.
3 * Copyright (c) 2020, Intel Corporation. All rights reserved.
4 *
5 * This software is available to you under a choice of one of two
6 * licenses. You may choose to be licensed under the terms of the GNU
7 * General Public License (GPL) Version 2, available from the file
8 * COPYING in the main directory of this source tree, or the

--- 997 unchanged lines hidden (view full) ---

1006
1007err:
1008 mutex_unlock(&cache->rb_lock);
1009 mlx5_mkey_cache_debugfs_cleanup(dev);
1010 mlx5_ib_warn(dev, "failed to create mkey cache entry\n");
1011 return ret;
1012}
1013
1/*
2 * Copyright (c) 2013-2015, Mellanox Technologies. All rights reserved.
3 * Copyright (c) 2020, Intel Corporation. All rights reserved.
4 *
5 * This software is available to you under a choice of one of two
6 * licenses. You may choose to be licensed under the terms of the GNU
7 * General Public License (GPL) Version 2, available from the file
8 * COPYING in the main directory of this source tree, or the

--- 997 unchanged lines hidden (view full) ---

1006
1007err:
1008 mutex_unlock(&cache->rb_lock);
1009 mlx5_mkey_cache_debugfs_cleanup(dev);
1010 mlx5_ib_warn(dev, "failed to create mkey cache entry\n");
1011 return ret;
1012}
1013
1014int mlx5_mkey_cache_cleanup(struct mlx5_ib_dev *dev)
1014void mlx5_mkey_cache_cleanup(struct mlx5_ib_dev *dev)
1015{
1016 struct rb_root *root = &dev->cache.rb_root;
1017 struct mlx5_cache_ent *ent;
1018 struct rb_node *node;
1019
1020 if (!dev->cache.wq)
1015{
1016 struct rb_root *root = &dev->cache.rb_root;
1017 struct mlx5_cache_ent *ent;
1018 struct rb_node *node;
1019
1020 if (!dev->cache.wq)
1021 return 0;
1021 return;
1022
1023 cancel_delayed_work_sync(&dev->cache.remove_ent_dwork);
1024 mutex_lock(&dev->cache.rb_lock);
1025 for (node = rb_first(root); node; node = rb_next(node)) {
1026 ent = rb_entry(node, struct mlx5_cache_ent, node);
1027 xa_lock_irq(&ent->mkeys);
1028 ent->disabled = true;
1029 xa_unlock_irq(&ent->mkeys);

--- 10 unchanged lines hidden (view full) ---

1040 clean_keys(dev, ent);
1041 rb_erase(&ent->node, root);
1042 kfree(ent);
1043 }
1044 mutex_unlock(&dev->cache.rb_lock);
1045
1046 destroy_workqueue(dev->cache.wq);
1047 del_timer_sync(&dev->delay_timer);
1022
1023 cancel_delayed_work_sync(&dev->cache.remove_ent_dwork);
1024 mutex_lock(&dev->cache.rb_lock);
1025 for (node = rb_first(root); node; node = rb_next(node)) {
1026 ent = rb_entry(node, struct mlx5_cache_ent, node);
1027 xa_lock_irq(&ent->mkeys);
1028 ent->disabled = true;
1029 xa_unlock_irq(&ent->mkeys);

--- 10 unchanged lines hidden (view full) ---

1040 clean_keys(dev, ent);
1041 rb_erase(&ent->node, root);
1042 kfree(ent);
1043 }
1044 mutex_unlock(&dev->cache.rb_lock);
1045
1046 destroy_workqueue(dev->cache.wq);
1047 del_timer_sync(&dev->delay_timer);
1048
1049 return 0;
1050}
1051
1052struct ib_mr *mlx5_ib_get_dma_mr(struct ib_pd *pd, int acc)
1053{
1054 struct mlx5_ib_dev *dev = to_mdev(pd->device);
1055 int inlen = MLX5_ST_SZ_BYTES(create_mkey_in);
1056 struct mlx5_ib_mr *mr;
1057 void *mkc;

--- 1553 unchanged lines hidden ---
1048}
1049
1050struct ib_mr *mlx5_ib_get_dma_mr(struct ib_pd *pd, int acc)
1051{
1052 struct mlx5_ib_dev *dev = to_mdev(pd->device);
1053 int inlen = MLX5_ST_SZ_BYTES(create_mkey_in);
1054 struct mlx5_ib_mr *mr;
1055 void *mkc;

--- 1553 unchanged lines hidden ---