From: Knut Omang Date: Wed, 1 Jun 2016 06:58:03 +0000 (+0200) Subject: sif: Compile with kernel 4.4.10 X-Git-Tag: v4.1.12-92~129^2~34 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=22d706f9e37c70f12b863fa15feda01eefd57242;p=users%2Fjedix%2Flinux-maple.git sif: Compile with kernel 4.4.10 * Remove obsolete (dummy) unimplemented fast_reg call impl This has changed significantly in 4.4.x and was not implemented for older kernels anyway. * Add ifdefs for new wr struct layout - no longer uses union, instead we have to upcast to the right type to find the qp/request type specific fields * undefine the mtrr code as the mtrr_del function seems not to be made available anymore. The functionality is not used anyway atm. * Some regressions wrt checkpatch Signed-off-by: Knut Omang --- diff --git a/drivers/infiniband/hw/sif/sif_cq.c b/drivers/infiniband/hw/sif/sif_cq.c index c4d01f76172a0..08466881ceed9 100644 --- a/drivers/infiniband/hw/sif/sif_cq.c +++ b/drivers/infiniband/hw/sif/sif_cq.c @@ -385,7 +385,7 @@ static int handle_send_wc(struct sif_dev *sdev, struct sif_cq *cq, { /* send queue descriptor aligned with qp */ struct sif_sq *sq = get_sif_sq(sdev, cqe->qp); - struct sif_sq_sw *sq_sw = sq ? get_sif_sq_sw(sdev, cqe->qp): NULL; + struct sif_sq_sw *sq_sw = sq ? get_sif_sq_sw(sdev, cqe->qp) : NULL; int ret; /* This is a full 32 bit seq.num */ diff --git a/drivers/infiniband/hw/sif/sif_defs.c b/drivers/infiniband/hw/sif/sif_defs.c index 63a6ecd3d3ee0..123509d313a29 100644 --- a/drivers/infiniband/hw/sif/sif_defs.c +++ b/drivers/infiniband/hw/sif/sif_defs.c @@ -73,7 +73,6 @@ enum psif_wr_type ib2sif_wr_op(enum ib_wr_opcode op, bool is_dr) case IB_WR_SEND_WITH_INV: case IB_WR_RDMA_READ_WITH_INV: case IB_WR_LOCAL_INV: - case IB_WR_FAST_REG_MR: default: break; } diff --git a/drivers/infiniband/hw/sif/sif_elog.c b/drivers/infiniband/hw/sif/sif_elog.c index 5547fd64e5595..3fa463d87281a 100644 --- a/drivers/infiniband/hw/sif/sif_elog.c +++ b/drivers/infiniband/hw/sif/sif_elog.c @@ -137,7 +137,7 @@ int sif_elog_init(struct sif_dev *sdev, enum psif_mbox_type eps_num) return misc_register(logdev); } -int sif_elog_deinit(struct sif_dev *sdev, enum psif_mbox_type eps_num) +void sif_elog_deinit(struct sif_dev *sdev, enum psif_mbox_type eps_num) { - return misc_deregister(&sdev->es[eps_num].logdev); + misc_deregister(&sdev->es[eps_num].logdev); } diff --git a/drivers/infiniband/hw/sif/sif_elog.h b/drivers/infiniband/hw/sif/sif_elog.h index 8c0ecdaa7efe8..75588de1208cc 100644 --- a/drivers/infiniband/hw/sif/sif_elog.h +++ b/drivers/infiniband/hw/sif/sif_elog.h @@ -17,7 +17,7 @@ struct sif_dev; int sif_elog_init(struct sif_dev *sdev, enum psif_mbox_type eps_num); -int sif_elog_deinit(struct sif_dev *sdev, enum psif_mbox_type eps_num); +void sif_elog_deinit(struct sif_dev *sdev, enum psif_mbox_type eps_num); void sif_elog_intr(struct sif_dev *sdev, enum psif_mbox_type eps_num); diff --git a/drivers/infiniband/hw/sif/sif_main.c b/drivers/infiniband/hw/sif/sif_main.c index 1890a1a6cb651..b6e0e0e37b63f 100644 --- a/drivers/infiniband/hw/sif/sif_main.c +++ b/drivers/infiniband/hw/sif/sif_main.c @@ -543,12 +543,6 @@ pfail_ioremap2: pfail_bar2: iounmap(sdev->cb_base); pfail_ioremap0: -#ifdef CONFIG_X86 - if (sdev->cbu_mtrr >= 0) - mtrr_del(sdev->cbu_mtrr, - pci_resource_start(pdev, SIF_CBU_BAR), - pci_resource_len(pdev, SIF_CBU_BAR)); -#endif pci_release_region(pdev, SIF_MSIX_BAR); pfail_bar0: return err; @@ -563,12 +557,6 @@ static void sif_bar_deinit(struct pci_dev *pdev) iounmap(sdev->msi_base); pci_release_region(pdev, 2); iounmap(sdev->cb_base); -#ifdef CONFIG_X86 - if (sdev->cbu_mtrr >= 0) - mtrr_del(sdev->cbu_mtrr, - pci_resource_start(pdev, SIF_CBU_BAR), - pci_resource_len(pdev, SIF_CBU_BAR)); -#endif pci_release_region(pdev, 0); } diff --git a/drivers/infiniband/hw/sif/sif_mr.c b/drivers/infiniband/hw/sif/sif_mr.c index 9632f1e759ac8..cf6164036357d 100644 --- a/drivers/infiniband/hw/sif/sif_mr.c +++ b/drivers/infiniband/hw/sif/sif_mr.c @@ -413,26 +413,6 @@ int sif_dereg_mr(struct ib_mr *ibmr) return 0; } -struct ib_mr *sif_alloc_fast_reg_mr(struct ib_pd *ibpd, int max_page_list_len) -{ - sif_logi(ibpd->device, SIF_FMR, "Not implemented"); - return ERR_PTR(-EOPNOTSUPP); -} - -struct ib_fast_reg_page_list *sif_alloc_fast_reg_page_list(struct ib_device - *ibdev, - int page_list_len) -{ - sif_logi(ibdev, SIF_FMR, "Not implemented"); - return ERR_PTR(-EOPNOTSUPP); -} - -void sif_free_fast_reg_page_list(struct ib_fast_reg_page_list *pl) -{ - sif_logi(pl->device, SIF_FMR, "Not implemented"); -} - - /* Line printer for debugfs file */ void sif_dfs_print_key(struct seq_file *s, struct sif_dev *sdev, loff_t pos) { diff --git a/drivers/infiniband/hw/sif/sif_qp.c b/drivers/infiniband/hw/sif/sif_qp.c index ab88057f63915..f804b27baee1b 100644 --- a/drivers/infiniband/hw/sif/sif_qp.c +++ b/drivers/infiniband/hw/sif/sif_qp.c @@ -523,7 +523,7 @@ static int sif_create_pma_qp(struct ib_pd *ibpd, qp->ibqp.device = &sdev->ib_dev; qp->ibqp.real_qp = &qp->ibqp; qp->ibqp.uobject = NULL; - qp->ibqp.qp_type = IB_QPT_GSI; + qp->ibqp.qp_type = IB_QPT_GSI; atomic_set(&qp->ibqp.usecnt, 0); qp->ibqp.event_handler = init_attr->event_handler; qp->ibqp.qp_context = init_attr->qp_context; @@ -953,7 +953,7 @@ int modify_qp(struct sif_dev *sdev, struct sif_qp *qp, switch (cmd.flush) { case FLUSH_RQ: if (unlikely(!rq)) { - ret =-EINVAL; + ret = -EINVAL; sif_log(sdev, SIF_INFO, "flush requested for qp(type %s) with no rq defined", string_enum_psif_qp_trans(qp->type)); @@ -965,7 +965,7 @@ int modify_qp(struct sif_dev *sdev, struct sif_qp *qp, return ret; case FLUSH_SQ: if (unlikely(!sq)) { - ret =-EINVAL; + ret = -EINVAL; sif_log(sdev, SIF_INFO, "flush requested for qp(type %s) with no sq defined", string_enum_psif_qp_trans(qp->type)); diff --git a/drivers/infiniband/hw/sif/sif_r3.c b/drivers/infiniband/hw/sif/sif_r3.c index 06b270d28cc22..679cc7b9cf252 100644 --- a/drivers/infiniband/hw/sif/sif_r3.c +++ b/drivers/infiniband/hw/sif/sif_r3.c @@ -616,9 +616,10 @@ int post_process_wa4074(struct sif_dev *sdev, struct sif_qp *qp) if (last_seq != fence_seq) { sif_log(sdev, SIF_INFO, "last seq (%x) is different than fenced completion (%x)!", last_seq, fence_seq); - /* As the Fenced completion cannot be guaranteed to be the last, software still needs to - * walk and update the CQ to avoid unexpected completion/duplicated completion - * even thought the last completion is the CQ is not generated fenced completion. + /* As the Fenced completion cannot be guaranteed to be the last, software + * still needs to walk and update the CQ to avoid unexpected + * completion/duplicated completion even thought the last completion is + * the CQ is not generated fenced completion. */ } diff --git a/drivers/infiniband/hw/sif/sif_sndrcv.c b/drivers/infiniband/hw/sif/sif_sndrcv.c index 9d62eaa937775..0ebe73d3fefdd 100644 --- a/drivers/infiniband/hw/sif/sif_sndrcv.c +++ b/drivers/infiniband/hw/sif/sif_sndrcv.c @@ -1034,6 +1034,7 @@ static int prep_send_lso(struct sif_qp *qp, struct ib_send_wr *wr, struct psif_c struct psif_sq_entry *sqe; struct psif_rq_scatter *sge; const int stencil_sge = 1; + int ud_hlen; sq = get_sif_sq(sdev, qp->qp_idx); sqe = get_sq_entry(sq, sqe_seq); @@ -1046,6 +1047,7 @@ static int prep_send_lso(struct sif_qp *qp, struct ib_send_wr *wr, struct psif_c return -EINVAL; } + ud_hlen = wr->wr.ud.hlen; wqe->wr.details.send.ud.mss = wr->wr.ud.mss; la->addr = get_sqe_dma(sq, sqe_seq) + sq->sgl_offset; @@ -1054,12 +1056,12 @@ static int prep_send_lso(struct sif_qp *qp, struct ib_send_wr *wr, struct psif_c /* copy stencil to payload-area in send_queue */ p8 = (u8 *)wr->wr.ud.header; - memcpy((u8 *)sqe->payload, p8, wr->wr.ud.hlen); + memcpy((u8 *)sqe->payload, p8, ud_hlen); sge[0].base_addr = get_sqe_dma(sq, sqe_seq) + offsetof(struct psif_sq_entry, payload) + mr_uv2dma(sdev, la->lkey); sge[0].lkey = sq->sg_mr->index; - sge[0].length = wr->wr.ud.hlen; + sge[0].length = ud_hlen; la->length += sge[0].length; sif_log(sdev, SIF_SND,