@@ -153,14 +153,16 @@ static struct mlx5_ib_mr *mlx5_ib_odp_find_mr_lkey(struct mlx5_ib_dev *dev,
153
153
154
154
static void mlx5_ib_page_fault_resume (struct mlx5_ib_qp * qp ,
155
155
struct mlx5_ib_pfault * pfault ,
156
- int error ) {
156
+ int error )
157
+ {
157
158
struct mlx5_ib_dev * dev = to_mdev (qp -> ibqp .pd -> device );
158
- int ret = mlx5_core_page_fault_resume (dev -> mdev , qp -> mqp .qpn ,
159
+ u32 qpn = qp -> trans_qp .base .mqp .qpn ;
160
+ int ret = mlx5_core_page_fault_resume (dev -> mdev ,
161
+ qpn ,
159
162
pfault -> mpfault .flags ,
160
163
error );
161
164
if (ret )
162
- pr_err ("Failed to resolve the page fault on QP 0x%x\n" ,
163
- qp -> mqp .qpn );
165
+ pr_err ("Failed to resolve the page fault on QP 0x%x\n" , qpn );
164
166
}
165
167
166
168
/*
@@ -391,6 +393,7 @@ static int mlx5_ib_mr_initiator_pfault_handler(
391
393
#if defined(DEBUG )
392
394
u32 ctrl_wqe_index , ctrl_qpn ;
393
395
#endif
396
+ u32 qpn = qp -> trans_qp .base .mqp .qpn ;
394
397
395
398
ds = be32_to_cpu (ctrl -> qpn_ds ) & MLX5_WQE_CTRL_DS_MASK ;
396
399
if (ds * MLX5_WQE_DS_UNITS > wqe_length ) {
@@ -401,7 +404,7 @@ static int mlx5_ib_mr_initiator_pfault_handler(
401
404
402
405
if (ds == 0 ) {
403
406
mlx5_ib_err (dev , "Got WQE with zero DS. wqe_index=%x, qpn=%x\n" ,
404
- wqe_index , qp -> mqp . qpn );
407
+ wqe_index , qpn );
405
408
return - EFAULT ;
406
409
}
407
410
@@ -411,16 +414,16 @@ static int mlx5_ib_mr_initiator_pfault_handler(
411
414
MLX5_WQE_CTRL_WQE_INDEX_SHIFT ;
412
415
if (wqe_index != ctrl_wqe_index ) {
413
416
mlx5_ib_err (dev , "Got WQE with invalid wqe_index. wqe_index=0x%x, qpn=0x%x ctrl->wqe_index=0x%x\n" ,
414
- wqe_index , qp -> mqp . qpn ,
417
+ wqe_index , qpn ,
415
418
ctrl_wqe_index );
416
419
return - EFAULT ;
417
420
}
418
421
419
422
ctrl_qpn = (be32_to_cpu (ctrl -> qpn_ds ) & MLX5_WQE_CTRL_QPN_MASK ) >>
420
423
MLX5_WQE_CTRL_QPN_SHIFT ;
421
- if (qp -> mqp . qpn != ctrl_qpn ) {
424
+ if (qpn != ctrl_qpn ) {
422
425
mlx5_ib_err (dev , "Got WQE with incorrect QP number. wqe_index=0x%x, qpn=0x%x ctrl->qpn=0x%x\n" ,
423
- wqe_index , qp -> mqp . qpn ,
426
+ wqe_index , qpn ,
424
427
ctrl_qpn );
425
428
return - EFAULT ;
426
429
}
@@ -537,6 +540,7 @@ static void mlx5_ib_mr_wqe_pfault_handler(struct mlx5_ib_qp *qp,
537
540
int resume_with_error = 0 ;
538
541
u16 wqe_index = pfault -> mpfault .wqe .wqe_index ;
539
542
int requestor = pfault -> mpfault .flags & MLX5_PFAULT_REQUESTOR ;
543
+ u32 qpn = qp -> trans_qp .base .mqp .qpn ;
540
544
541
545
buffer = (char * )__get_free_page (GFP_KERNEL );
542
546
if (!buffer ) {
@@ -546,10 +550,10 @@ static void mlx5_ib_mr_wqe_pfault_handler(struct mlx5_ib_qp *qp,
546
550
}
547
551
548
552
ret = mlx5_ib_read_user_wqe (qp , requestor , wqe_index , buffer ,
549
- PAGE_SIZE );
553
+ PAGE_SIZE , & qp -> trans_qp . base );
550
554
if (ret < 0 ) {
551
555
mlx5_ib_err (dev , "Failed reading a WQE following page fault, error=%x, wqe_index=%x, qpn=%x\n" ,
552
- - ret , wqe_index , qp -> mqp . qpn );
556
+ - ret , wqe_index , qpn );
553
557
resume_with_error = 1 ;
554
558
goto resolve_page_fault ;
555
559
}
@@ -586,7 +590,8 @@ static void mlx5_ib_mr_wqe_pfault_handler(struct mlx5_ib_qp *qp,
586
590
resolve_page_fault :
587
591
mlx5_ib_page_fault_resume (qp , pfault , resume_with_error );
588
592
mlx5_ib_dbg (dev , "PAGE FAULT completed. QP 0x%x resume_with_error=%d, flags: 0x%x\n" ,
589
- qp -> mqp .qpn , resume_with_error , pfault -> mpfault .flags );
593
+ qpn , resume_with_error ,
594
+ pfault -> mpfault .flags );
590
595
591
596
free_page ((unsigned long )buffer );
592
597
}
@@ -753,7 +758,7 @@ void mlx5_ib_odp_create_qp(struct mlx5_ib_qp *qp)
753
758
qp -> disable_page_faults = 1 ;
754
759
spin_lock_init (& qp -> disable_page_faults_lock );
755
760
756
- qp -> mqp .pfault_handler = mlx5_ib_pfault_handler ;
761
+ qp -> trans_qp . base . mqp .pfault_handler = mlx5_ib_pfault_handler ;
757
762
758
763
for (i = 0 ; i < MLX5_IB_PAGEFAULT_CONTEXTS ; ++ i )
759
764
INIT_WORK (& qp -> pagefaults [i ].work , mlx5_ib_qp_pfault_action );
0 commit comments