Merge tag 'for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma
Pull second round of rdma updates from Doug Ledford: "This can be split out into just two categories: - fixes to the RDMA R/W API in regards to SG list length limits (about 5 patches) - fixes/features for the Intel hfi1 driver (everything else) The hfi1 driver is still being brought to full feature support by Intel, and they have a lot of people working on it, so that amounts to almost the entirety of this pull request" * tag 'for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma: (84 commits) IB/hfi1: Add cache evict LRU list IB/hfi1: Fix memory leak during unexpected shutdown IB/hfi1: Remove unneeded mm argument in remove function IB/hfi1: Consistently call ops->remove outside spinlock IB/hfi1: Use evict mmu rb operation IB/hfi1: Add evict operation to the mmu rb handler IB/hfi1: Fix TID caching actions IB/hfi1: Make the cache handler own its rb tree root IB/hfi1: Make use of mm consistent IB/hfi1: Fix user SDMA racy user request claim IB/hfi1: Fix error condition that needs to clean up IB/hfi1: Release node on insert failure IB/hfi1: Validate SDMA user iovector count IB/hfi1: Validate SDMA user request index IB/hfi1: Use the same capability state for all shared contexts IB/hfi1: Prevent null pointer dereference IB/hfi1: Rename TID mmu_rb_* functions IB/hfi1: Remove unneeded empty check in hfi1_mmu_rb_unregister() IB/hfi1: Restructure hfi1_file_open IB/hfi1: Make iovec loop index easy to understand ...
このコミットが含まれているのは:
@@ -137,8 +137,6 @@ isert_create_qp(struct isert_conn *isert_conn,
|
||||
attr.cap.max_recv_wr = ISERT_QP_MAX_RECV_DTOS + 1;
|
||||
attr.cap.max_rdma_ctxs = ISCSI_DEF_XMIT_CMDS_MAX;
|
||||
attr.cap.max_send_sge = device->ib_device->attrs.max_sge;
|
||||
isert_conn->max_sge = min(device->ib_device->attrs.max_sge,
|
||||
device->ib_device->attrs.max_sge_rd);
|
||||
attr.cap.max_recv_sge = 1;
|
||||
attr.sq_sig_type = IB_SIGNAL_REQ_WR;
|
||||
attr.qp_type = IB_QPT_RC;
|
||||
|
@@ -138,7 +138,6 @@ struct isert_conn {
|
||||
u32 responder_resources;
|
||||
u32 initiator_depth;
|
||||
bool pi_support;
|
||||
u32 max_sge;
|
||||
struct iser_rx_desc *login_req_buf;
|
||||
char *login_rsp_buf;
|
||||
u64 login_req_dma;
|
||||
|
@@ -1601,6 +1601,7 @@ static int srpt_create_ch_ib(struct srpt_rdma_ch *ch)
|
||||
struct ib_qp_init_attr *qp_init;
|
||||
struct srpt_port *sport = ch->sport;
|
||||
struct srpt_device *sdev = sport->sdev;
|
||||
const struct ib_device_attr *attrs = &sdev->device->attrs;
|
||||
u32 srp_sq_size = sport->port_attrib.srp_sq_size;
|
||||
int ret;
|
||||
|
||||
@@ -1638,7 +1639,7 @@ retry:
|
||||
*/
|
||||
qp_init->cap.max_send_wr = srp_sq_size / 2;
|
||||
qp_init->cap.max_rdma_ctxs = srp_sq_size / 2;
|
||||
qp_init->cap.max_send_sge = SRPT_DEF_SG_PER_WQE;
|
||||
qp_init->cap.max_send_sge = min(attrs->max_sge, SRPT_MAX_SG_PER_WQE);
|
||||
qp_init->port_num = ch->sport->port;
|
||||
|
||||
ch->qp = ib_create_qp(sdev->pd, qp_init);
|
||||
@@ -2261,7 +2262,7 @@ static void srpt_queue_response(struct se_cmd *cmd)
|
||||
container_of(cmd, struct srpt_send_ioctx, cmd);
|
||||
struct srpt_rdma_ch *ch = ioctx->ch;
|
||||
struct srpt_device *sdev = ch->sport->sdev;
|
||||
struct ib_send_wr send_wr, *first_wr = NULL, *bad_wr;
|
||||
struct ib_send_wr send_wr, *first_wr = &send_wr, *bad_wr;
|
||||
struct ib_sge sge;
|
||||
enum srpt_command_state state;
|
||||
unsigned long flags;
|
||||
@@ -2302,11 +2303,8 @@ static void srpt_queue_response(struct se_cmd *cmd)
|
||||
struct srpt_rw_ctx *ctx = &ioctx->rw_ctxs[i];
|
||||
|
||||
first_wr = rdma_rw_ctx_wrs(&ctx->rw, ch->qp,
|
||||
ch->sport->port, NULL,
|
||||
first_wr ? first_wr : &send_wr);
|
||||
ch->sport->port, NULL, first_wr);
|
||||
}
|
||||
} else {
|
||||
first_wr = &send_wr;
|
||||
}
|
||||
|
||||
if (state != SRPT_STATE_MGMT)
|
||||
|
@@ -106,7 +106,11 @@ enum {
|
||||
SRP_LOGIN_RSP_MULTICHAN_MAINTAINED = 0x2,
|
||||
|
||||
SRPT_DEF_SG_TABLESIZE = 128,
|
||||
SRPT_DEF_SG_PER_WQE = 16,
|
||||
/*
|
||||
* An experimentally determined value that avoids that QP creation
|
||||
* fails due to "swiotlb buffer is full" on systems using the swiotlb.
|
||||
*/
|
||||
SRPT_MAX_SG_PER_WQE = 16,
|
||||
|
||||
MIN_SRPT_SQ_SIZE = 16,
|
||||
DEF_SRPT_SQ_SIZE = 4096,
|
||||
|
新しいイシューから参照
ユーザーをブロックする