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 --- |