Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma

Pull rdma fixes from Jason Gunthorpe:
"Small set of three regression fixing patches, things are looking
pretty good here.

- Fix cxgb4 to work again with non-4k page sizes

- NULL pointer oops in SRP during sg_reset"

* tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma:
iw_cxgb4: cq/qp mask depends on bar2 pages in a host page
cxgb4: Export sge_host_page_size to ulds
RDMA/srp: Rework SCSI device reset handling

+15 -12
+13 -2
drivers/infiniband/hw/cxgb4/device.c
··· 783 783 static int c4iw_rdev_open(struct c4iw_rdev *rdev) 784 784 { 785 785 int err; 786 + unsigned int factor; 786 787 787 788 c4iw_init_dev_ucontext(rdev, &rdev->uctx); 788 789 ··· 807 806 return -EINVAL; 808 807 } 809 808 810 - rdev->qpmask = rdev->lldi.udb_density - 1; 811 - rdev->cqmask = rdev->lldi.ucq_density - 1; 809 + /* This implementation requires a sge_host_page_size <= PAGE_SIZE. */ 810 + if (rdev->lldi.sge_host_page_size > PAGE_SIZE) { 811 + pr_err("%s: unsupported sge host page size %u\n", 812 + pci_name(rdev->lldi.pdev), 813 + rdev->lldi.sge_host_page_size); 814 + return -EINVAL; 815 + } 816 + 817 + factor = PAGE_SIZE / rdev->lldi.sge_host_page_size; 818 + rdev->qpmask = (rdev->lldi.udb_density * factor) - 1; 819 + rdev->cqmask = (rdev->lldi.ucq_density * factor) - 1; 820 + 812 821 pr_debug("dev %s stag start 0x%0x size 0x%0x num stags %d pbl start 0x%0x size 0x%0x rq start 0x%0x size 0x%0x qp qid start %u size %u cq qid start %u size %u srq size %u\n", 813 822 pci_name(rdev->lldi.pdev), rdev->lldi.vr->stag.start, 814 823 rdev->lldi.vr->stag.size, c4iw_num_stags(rdev),
-10
drivers/infiniband/ulp/srp/ib_srp.c
··· 3032 3032 { 3033 3033 struct srp_target_port *target = host_to_target(scmnd->device->host); 3034 3034 struct srp_rdma_ch *ch; 3035 - int i, j; 3036 3035 u8 status; 3037 3036 3038 3037 shost_printk(KERN_ERR, target->scsi_host, "SRP reset_device called\n"); ··· 3042 3043 return FAILED; 3043 3044 if (status) 3044 3045 return FAILED; 3045 - 3046 - for (i = 0; i < target->ch_count; i++) { 3047 - ch = &target->ch[i]; 3048 - for (j = 0; j < target->req_ring_size; ++j) { 3049 - struct srp_request *req = &ch->req_ring[j]; 3050 - 3051 - srp_finish_req(ch, req, scmnd->device, DID_RESET << 16); 3052 - } 3053 - } 3054 3046 3055 3047 return SUCCESS; 3056 3048 }
+1
drivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.c
··· 660 660 lld->cclk_ps = 1000000000 / adap->params.vpd.cclk; 661 661 lld->udb_density = 1 << adap->params.sge.eq_qpp; 662 662 lld->ucq_density = 1 << adap->params.sge.iq_qpp; 663 + lld->sge_host_page_size = 1 << (adap->params.sge.hps + 10); 663 664 lld->filt_mode = adap->params.tp.vlan_pri_map; 664 665 /* MODQ_REQ_MAP sets queues 0-3 to chan 0-3 */ 665 666 for (i = 0; i < NCHAN; i++)
+1
drivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.h
··· 336 336 unsigned int cclk_ps; /* Core clock period in psec */ 337 337 unsigned short udb_density; /* # of user DB/page */ 338 338 unsigned short ucq_density; /* # of user CQs/page */ 339 + unsigned int sge_host_page_size; /* SGE host page size */ 339 340 unsigned short filt_mode; /* filter optional components */ 340 341 unsigned short tx_modq[NCHAN]; /* maps each tx channel to a */ 341 342 /* scheduler queue */