Skip to content

Commit a606b0f

Browse files
matanb10dledford
authored andcommitted
net/mlx5: Refactor mlx5_core_mr to mkey
Mlx5's mkey mechanism is also used for memory windows. The current code base uses MR (memory region) naming, which is inaccurate. Changing MR to mkey in order to represent its different usages more accurately. Signed-off-by: Matan Barak <[email protected]> Reviewed-by: Yishai Hadas <[email protected]> Signed-off-by: Doug Ledford <[email protected]>
1 parent 56e11d6 commit a606b0f

File tree

10 files changed

+98
-94
lines changed

10 files changed

+98
-94
lines changed

drivers/infiniband/hw/mlx5/cq.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,7 @@ static int mlx5_poll_one(struct mlx5_ib_cq *cq,
434434
struct mlx5_core_qp *mqp;
435435
struct mlx5_ib_wq *wq;
436436
struct mlx5_sig_err_cqe *sig_err_cqe;
437-
struct mlx5_core_mr *mmr;
437+
struct mlx5_core_mkey *mmkey;
438438
struct mlx5_ib_mr *mr;
439439
uint8_t opcode;
440440
uint32_t qpn;
@@ -539,17 +539,17 @@ static int mlx5_poll_one(struct mlx5_ib_cq *cq,
539539
case MLX5_CQE_SIG_ERR:
540540
sig_err_cqe = (struct mlx5_sig_err_cqe *)cqe64;
541541

542-
read_lock(&dev->mdev->priv.mr_table.lock);
543-
mmr = __mlx5_mr_lookup(dev->mdev,
544-
mlx5_base_mkey(be32_to_cpu(sig_err_cqe->mkey)));
545-
if (unlikely(!mmr)) {
546-
read_unlock(&dev->mdev->priv.mr_table.lock);
542+
read_lock(&dev->mdev->priv.mkey_table.lock);
543+
mmkey = __mlx5_mr_lookup(dev->mdev,
544+
mlx5_base_mkey(be32_to_cpu(sig_err_cqe->mkey)));
545+
if (unlikely(!mmkey)) {
546+
read_unlock(&dev->mdev->priv.mkey_table.lock);
547547
mlx5_ib_warn(dev, "CQE@CQ %06x for unknown MR %6x\n",
548548
cq->mcq.cqn, be32_to_cpu(sig_err_cqe->mkey));
549549
return -EINVAL;
550550
}
551551

552-
mr = to_mibmr(mmr);
552+
mr = to_mibmr(mmkey);
553553
get_sig_err_item(sig_err_cqe, &mr->sig->err_item);
554554
mr->sig->sig_err_exists = true;
555555
mr->sig->sigerr_count++;
@@ -561,7 +561,7 @@ static int mlx5_poll_one(struct mlx5_ib_cq *cq,
561561
mr->sig->err_item.expected,
562562
mr->sig->err_item.actual);
563563

564-
read_unlock(&dev->mdev->priv.mr_table.lock);
564+
read_unlock(&dev->mdev->priv.mkey_table.lock);
565565
goto repoll;
566566
}
567567

drivers/infiniband/hw/mlx5/mlx5_ib.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,7 @@ struct mlx5_ib_mr {
446446
int ndescs;
447447
int max_descs;
448448
int desc_size;
449-
struct mlx5_core_mr mmr;
449+
struct mlx5_core_mkey mmkey;
450450
struct ib_umem *umem;
451451
struct mlx5_shared_mr_info *smr_info;
452452
struct list_head list;
@@ -603,9 +603,9 @@ static inline struct mlx5_ib_qp *to_mibqp(struct mlx5_core_qp *mqp)
603603
return container_of(mqp, struct mlx5_ib_qp_base, mqp)->container_mibqp;
604604
}
605605

606-
static inline struct mlx5_ib_mr *to_mibmr(struct mlx5_core_mr *mmr)
606+
static inline struct mlx5_ib_mr *to_mibmr(struct mlx5_core_mkey *mmkey)
607607
{
608-
return container_of(mmr, struct mlx5_ib_mr, mmr);
608+
return container_of(mmkey, struct mlx5_ib_mr, mmkey);
609609
}
610610

611611
static inline struct mlx5_ib_pd *to_mpd(struct ib_pd *ibpd)

drivers/infiniband/hw/mlx5/mr.c

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ static int clean_mr(struct mlx5_ib_mr *mr);
5757

5858
static int destroy_mkey(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr)
5959
{
60-
int err = mlx5_core_destroy_mkey(dev->mdev, &mr->mmr);
60+
int err = mlx5_core_destroy_mkey(dev->mdev, &mr->mmkey);
6161

6262
#ifdef CONFIG_INFINIBAND_ON_DEMAND_PAGING
6363
/* Wait until all page fault handlers using the mr complete. */
@@ -120,7 +120,7 @@ static void reg_mr_callback(int status, void *context)
120120
struct mlx5_cache_ent *ent = &cache->ent[c];
121121
u8 key;
122122
unsigned long flags;
123-
struct mlx5_mr_table *table = &dev->mdev->priv.mr_table;
123+
struct mlx5_mkey_table *table = &dev->mdev->priv.mkey_table;
124124
int err;
125125

126126
spin_lock_irqsave(&ent->lock, flags);
@@ -147,7 +147,7 @@ static void reg_mr_callback(int status, void *context)
147147
spin_lock_irqsave(&dev->mdev->priv.mkey_lock, flags);
148148
key = dev->mdev->priv.mkey_key++;
149149
spin_unlock_irqrestore(&dev->mdev->priv.mkey_lock, flags);
150-
mr->mmr.key = mlx5_idx_to_mkey(be32_to_cpu(mr->out.mkey) & 0xffffff) | key;
150+
mr->mmkey.key = mlx5_idx_to_mkey(be32_to_cpu(mr->out.mkey) & 0xffffff) | key;
151151

152152
cache->last_add = jiffies;
153153

@@ -158,10 +158,10 @@ static void reg_mr_callback(int status, void *context)
158158
spin_unlock_irqrestore(&ent->lock, flags);
159159

160160
write_lock_irqsave(&table->lock, flags);
161-
err = radix_tree_insert(&table->tree, mlx5_base_mkey(mr->mmr.key),
162-
&mr->mmr);
161+
err = radix_tree_insert(&table->tree, mlx5_base_mkey(mr->mmkey.key),
162+
&mr->mmkey);
163163
if (err)
164-
pr_err("Error inserting to mr tree. 0x%x\n", -err);
164+
pr_err("Error inserting to mkey tree. 0x%x\n", -err);
165165
write_unlock_irqrestore(&table->lock, flags);
166166
}
167167

@@ -202,7 +202,7 @@ static int add_keys(struct mlx5_ib_dev *dev, int c, int num)
202202
spin_lock_irq(&ent->lock);
203203
ent->pending++;
204204
spin_unlock_irq(&ent->lock);
205-
err = mlx5_core_create_mkey(dev->mdev, &mr->mmr, in,
205+
err = mlx5_core_create_mkey(dev->mdev, &mr->mmkey, in,
206206
sizeof(*in), reg_mr_callback,
207207
mr, &mr->out);
208208
if (err) {
@@ -691,14 +691,14 @@ struct ib_mr *mlx5_ib_get_dma_mr(struct ib_pd *pd, int acc)
691691
seg->qpn_mkey7_0 = cpu_to_be32(0xffffff << 8);
692692
seg->start_addr = 0;
693693

694-
err = mlx5_core_create_mkey(mdev, &mr->mmr, in, sizeof(*in), NULL, NULL,
694+
err = mlx5_core_create_mkey(mdev, &mr->mmkey, in, sizeof(*in), NULL, NULL,
695695
NULL);
696696
if (err)
697697
goto err_in;
698698

699699
kfree(in);
700-
mr->ibmr.lkey = mr->mmr.key;
701-
mr->ibmr.rkey = mr->mmr.key;
700+
mr->ibmr.lkey = mr->mmkey.key;
701+
mr->ibmr.rkey = mr->mmkey.key;
702702
mr->umem = NULL;
703703

704704
return &mr->ibmr;
@@ -897,7 +897,7 @@ static struct mlx5_ib_mr *reg_umr(struct ib_pd *pd, struct ib_umem *umem,
897897

898898
memset(&umrwr, 0, sizeof(umrwr));
899899
umrwr.wr.wr_id = (u64)(unsigned long)&umr_context;
900-
prep_umr_reg_wqe(pd, &umrwr.wr, &sg, dma, npages, mr->mmr.key,
900+
prep_umr_reg_wqe(pd, &umrwr.wr, &sg, dma, npages, mr->mmkey.key,
901901
page_shift, virt_addr, len, access_flags);
902902

903903
mlx5_ib_init_umr_context(&umr_context);
@@ -914,9 +914,9 @@ static struct mlx5_ib_mr *reg_umr(struct ib_pd *pd, struct ib_umem *umem,
914914
}
915915
}
916916

917-
mr->mmr.iova = virt_addr;
918-
mr->mmr.size = len;
919-
mr->mmr.pd = to_mpd(pd)->pdn;
917+
mr->mmkey.iova = virt_addr;
918+
mr->mmkey.size = len;
919+
mr->mmkey.pd = to_mpd(pd)->pdn;
920920

921921
mr->live = 1;
922922

@@ -1027,7 +1027,7 @@ int mlx5_ib_update_mtt(struct mlx5_ib_mr *mr, u64 start_page_index, int npages,
10271027
wr.wr.opcode = MLX5_IB_WR_UMR;
10281028
wr.npages = sg.length / sizeof(u64);
10291029
wr.page_shift = PAGE_SHIFT;
1030-
wr.mkey = mr->mmr.key;
1030+
wr.mkey = mr->mmkey.key;
10311031
wr.target.offset = start_page_index;
10321032

10331033
mlx5_ib_init_umr_context(&umr_context);
@@ -1100,7 +1100,7 @@ static struct mlx5_ib_mr *reg_create(struct ib_mr *ibmr, struct ib_pd *pd,
11001100
in->seg.qpn_mkey7_0 = cpu_to_be32(0xffffff << 8);
11011101
in->xlat_oct_act_size = cpu_to_be32(get_octo_len(virt_addr, length,
11021102
1 << page_shift));
1103-
err = mlx5_core_create_mkey(dev->mdev, &mr->mmr, in, inlen, NULL,
1103+
err = mlx5_core_create_mkey(dev->mdev, &mr->mmkey, in, inlen, NULL,
11041104
NULL, NULL);
11051105
if (err) {
11061106
mlx5_ib_warn(dev, "create mkey failed\n");
@@ -1111,7 +1111,7 @@ static struct mlx5_ib_mr *reg_create(struct ib_mr *ibmr, struct ib_pd *pd,
11111111
mr->live = 1;
11121112
kvfree(in);
11131113

1114-
mlx5_ib_dbg(dev, "mkey = 0x%x\n", mr->mmr.key);
1114+
mlx5_ib_dbg(dev, "mkey = 0x%x\n", mr->mmkey.key);
11151115

11161116
return mr;
11171117

@@ -1130,8 +1130,8 @@ static void set_mr_fileds(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr,
11301130
{
11311131
mr->npages = npages;
11321132
atomic_add(npages, &dev->mdev->priv.reg_pages);
1133-
mr->ibmr.lkey = mr->mmr.key;
1134-
mr->ibmr.rkey = mr->mmr.key;
1133+
mr->ibmr.lkey = mr->mmkey.key;
1134+
mr->ibmr.rkey = mr->mmkey.key;
11351135
mr->ibmr.length = length;
11361136
mr->access_flags = access_flags;
11371137
}
@@ -1179,7 +1179,7 @@ struct ib_mr *mlx5_ib_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,
11791179
goto error;
11801180
}
11811181

1182-
mlx5_ib_dbg(dev, "mkey 0x%x\n", mr->mmr.key);
1182+
mlx5_ib_dbg(dev, "mkey 0x%x\n", mr->mmkey.key);
11831183

11841184
mr->umem = umem;
11851185
set_mr_fileds(dev, mr, npages, length, access_flags);
@@ -1205,7 +1205,7 @@ static int unreg_umr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr)
12051205

12061206
memset(&umrwr.wr, 0, sizeof(umrwr));
12071207
umrwr.wr.wr_id = (u64)(unsigned long)&umr_context;
1208-
prep_umr_unreg_wqe(dev, &umrwr.wr, mr->mmr.key);
1208+
prep_umr_unreg_wqe(dev, &umrwr.wr, mr->mmkey.key);
12091209

12101210
mlx5_ib_init_umr_context(&umr_context);
12111211
down(&umrc->sem);
@@ -1259,7 +1259,7 @@ static int rereg_umr(struct ib_pd *pd, struct mlx5_ib_mr *mr, u64 virt_addr,
12591259
umrwr.wr.send_flags |= MLX5_IB_SEND_UMR_UPDATE_TRANSLATION;
12601260
}
12611261

1262-
prep_umr_wqe_common(pd, &umrwr.wr, &sg, dma, npages, mr->mmr.key,
1262+
prep_umr_wqe_common(pd, &umrwr.wr, &sg, dma, npages, mr->mmkey.key,
12631263
page_shift);
12641264

12651265
if (flags & IB_MR_REREG_PD) {
@@ -1371,7 +1371,7 @@ int mlx5_ib_rereg_user_mr(struct ib_mr *ib_mr, int flags, u64 start,
13711371

13721372
if (flags & IB_MR_REREG_PD) {
13731373
ib_mr->pd = pd;
1374-
mr->mmr.pd = to_mpd(pd)->pdn;
1374+
mr->mmkey.pd = to_mpd(pd)->pdn;
13751375
}
13761376

13771377
if (flags & IB_MR_REREG_ACCESS)
@@ -1380,8 +1380,8 @@ int mlx5_ib_rereg_user_mr(struct ib_mr *ib_mr, int flags, u64 start,
13801380
if (flags & IB_MR_REREG_TRANS) {
13811381
atomic_sub(mr->npages, &dev->mdev->priv.reg_pages);
13821382
set_mr_fileds(dev, mr, npages, len, access_flags);
1383-
mr->mmr.iova = addr;
1384-
mr->mmr.size = len;
1383+
mr->mmkey.iova = addr;
1384+
mr->mmkey.size = len;
13851385
}
13861386
#ifdef CONFIG_INFINIBAND_ON_DEMAND_PAGING
13871387
update_odp_mr(mr);
@@ -1461,7 +1461,7 @@ static int clean_mr(struct mlx5_ib_mr *mr)
14611461
err = destroy_mkey(dev, mr);
14621462
if (err) {
14631463
mlx5_ib_warn(dev, "failed to destroy mkey 0x%x (%d)\n",
1464-
mr->mmr.key, err);
1464+
mr->mmkey.key, err);
14651465
return err;
14661466
}
14671467
} else {
@@ -1587,13 +1587,13 @@ struct ib_mr *mlx5_ib_alloc_mr(struct ib_pd *pd,
15871587
}
15881588

15891589
in->seg.flags = MLX5_PERM_UMR_EN | access_mode;
1590-
err = mlx5_core_create_mkey(dev->mdev, &mr->mmr, in, sizeof(*in),
1590+
err = mlx5_core_create_mkey(dev->mdev, &mr->mmkey, in, sizeof(*in),
15911591
NULL, NULL, NULL);
15921592
if (err)
15931593
goto err_destroy_psv;
15941594

1595-
mr->ibmr.lkey = mr->mmr.key;
1596-
mr->ibmr.rkey = mr->mmr.key;
1595+
mr->ibmr.lkey = mr->mmkey.key;
1596+
mr->ibmr.rkey = mr->mmkey.key;
15971597
mr->umem = NULL;
15981598
kfree(in);
15991599

drivers/infiniband/hw/mlx5/odp.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -142,13 +142,13 @@ static struct mlx5_ib_mr *mlx5_ib_odp_find_mr_lkey(struct mlx5_ib_dev *dev,
142142
u32 key)
143143
{
144144
u32 base_key = mlx5_base_mkey(key);
145-
struct mlx5_core_mr *mmr = __mlx5_mr_lookup(dev->mdev, base_key);
146-
struct mlx5_ib_mr *mr = container_of(mmr, struct mlx5_ib_mr, mmr);
145+
struct mlx5_core_mkey *mmkey = __mlx5_mr_lookup(dev->mdev, base_key);
146+
struct mlx5_ib_mr *mr = container_of(mmkey, struct mlx5_ib_mr, mmkey);
147147

148-
if (!mmr || mmr->key != key || !mr->live)
148+
if (!mmkey || mmkey->key != key || !mr->live)
149149
return NULL;
150150

151-
return container_of(mmr, struct mlx5_ib_mr, mmr);
151+
return container_of(mmkey, struct mlx5_ib_mr, mmkey);
152152
}
153153

154154
static void mlx5_ib_page_fault_resume(struct mlx5_ib_qp *qp,
@@ -232,7 +232,7 @@ static int pagefault_single_data_segment(struct mlx5_ib_qp *qp,
232232
io_virt += pfault->mpfault.bytes_committed;
233233
bcnt -= pfault->mpfault.bytes_committed;
234234

235-
start_idx = (io_virt - (mr->mmr.iova & PAGE_MASK)) >> PAGE_SHIFT;
235+
start_idx = (io_virt - (mr->mmkey.iova & PAGE_MASK)) >> PAGE_SHIFT;
236236

237237
if (mr->umem->writable)
238238
access_mask |= ODP_WRITE_ALLOWED_BIT;

drivers/net/ethernet/mellanox/mlx5/core/en.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -515,7 +515,7 @@ struct mlx5e_priv {
515515
struct mlx5_uar cq_uar;
516516
u32 pdn;
517517
u32 tdn;
518-
struct mlx5_core_mr mr;
518+
struct mlx5_core_mkey mkey;
519519
struct mlx5e_rq drop_rq;
520520

521521
struct mlx5e_channel **channel;

drivers/net/ethernet/mellanox/mlx5/core/en_main.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -982,7 +982,7 @@ static int mlx5e_open_channel(struct mlx5e_priv *priv, int ix,
982982
c->cpu = cpu;
983983
c->pdev = &priv->mdev->pdev->dev;
984984
c->netdev = priv->netdev;
985-
c->mkey_be = cpu_to_be32(priv->mr.key);
985+
c->mkey_be = cpu_to_be32(priv->mkey.key);
986986
c->num_tc = priv->params.num_tc;
987987

988988
mlx5e_build_channeltc_to_txq_map(priv, ix);
@@ -2194,7 +2194,7 @@ static void mlx5e_build_netdev(struct net_device *netdev)
21942194
}
21952195

21962196
static int mlx5e_create_mkey(struct mlx5e_priv *priv, u32 pdn,
2197-
struct mlx5_core_mr *mr)
2197+
struct mlx5_core_mkey *mkey)
21982198
{
21992199
struct mlx5_core_dev *mdev = priv->mdev;
22002200
struct mlx5_create_mkey_mbox_in *in;
@@ -2210,7 +2210,7 @@ static int mlx5e_create_mkey(struct mlx5e_priv *priv, u32 pdn,
22102210
in->seg.flags_pd = cpu_to_be32(pdn | MLX5_MKEY_LEN64);
22112211
in->seg.qpn_mkey7_0 = cpu_to_be32(0xffffff << 8);
22122212

2213-
err = mlx5_core_create_mkey(mdev, mr, in, sizeof(*in), NULL, NULL,
2213+
err = mlx5_core_create_mkey(mdev, mkey, in, sizeof(*in), NULL, NULL,
22142214
NULL);
22152215

22162216
kvfree(in);
@@ -2259,7 +2259,7 @@ static void *mlx5e_create_netdev(struct mlx5_core_dev *mdev)
22592259
goto err_dealloc_pd;
22602260
}
22612261

2262-
err = mlx5e_create_mkey(priv, priv->pdn, &priv->mr);
2262+
err = mlx5e_create_mkey(priv, priv->pdn, &priv->mkey);
22632263
if (err) {
22642264
mlx5_core_err(mdev, "create mkey failed, %d\n", err);
22652265
goto err_dealloc_transport_domain;
@@ -2333,7 +2333,7 @@ static void *mlx5e_create_netdev(struct mlx5_core_dev *mdev)
23332333
mlx5e_destroy_tises(priv);
23342334

23352335
err_destroy_mkey:
2336-
mlx5_core_destroy_mkey(mdev, &priv->mr);
2336+
mlx5_core_destroy_mkey(mdev, &priv->mkey);
23372337

23382338
err_dealloc_transport_domain:
23392339
mlx5_core_dealloc_transport_domain(mdev, priv->tdn);
@@ -2367,7 +2367,7 @@ static void mlx5e_destroy_netdev(struct mlx5_core_dev *mdev, void *vpriv)
23672367
mlx5e_destroy_rqt(priv, MLX5E_INDIRECTION_RQT);
23682368
mlx5e_close_drop_rq(priv);
23692369
mlx5e_destroy_tises(priv);
2370-
mlx5_core_destroy_mkey(priv->mdev, &priv->mr);
2370+
mlx5_core_destroy_mkey(priv->mdev, &priv->mkey);
23712371
mlx5_core_dealloc_transport_domain(priv->mdev, priv->tdn);
23722372
mlx5_core_dealloc_pd(priv->mdev, priv->pdn);
23732373
mlx5_unmap_free_uar(priv->mdev, &priv->cq_uar);

drivers/net/ethernet/mellanox/mlx5/core/main.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1117,7 +1117,7 @@ static int mlx5_load_one(struct mlx5_core_dev *dev, struct mlx5_priv *priv)
11171117
mlx5_init_cq_table(dev);
11181118
mlx5_init_qp_table(dev);
11191119
mlx5_init_srq_table(dev);
1120-
mlx5_init_mr_table(dev);
1120+
mlx5_init_mkey_table(dev);
11211121

11221122
err = mlx5_init_fs(dev);
11231123
if (err) {
@@ -1164,7 +1164,7 @@ static int mlx5_load_one(struct mlx5_core_dev *dev, struct mlx5_priv *priv)
11641164
err_reg_dev:
11651165
mlx5_cleanup_fs(dev);
11661166
err_fs:
1167-
mlx5_cleanup_mr_table(dev);
1167+
mlx5_cleanup_mkey_table(dev);
11681168
mlx5_cleanup_srq_table(dev);
11691169
mlx5_cleanup_qp_table(dev);
11701170
mlx5_cleanup_cq_table(dev);
@@ -1237,7 +1237,7 @@ static int mlx5_unload_one(struct mlx5_core_dev *dev, struct mlx5_priv *priv)
12371237
#endif
12381238

12391239
mlx5_cleanup_fs(dev);
1240-
mlx5_cleanup_mr_table(dev);
1240+
mlx5_cleanup_mkey_table(dev);
12411241
mlx5_cleanup_srq_table(dev);
12421242
mlx5_cleanup_qp_table(dev);
12431243
mlx5_cleanup_cq_table(dev);

0 commit comments

Comments
 (0)