Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: IB/ehca: Use consistent types for ehca_plpar_hcall9() IB/ehca: Fix printk format warnings from u64 type change IPoIB: Do not print error messages for multicast join retries IB/mlx4: Fix memory ordering problem when posting LSO sends mlx4_core: Fix min() warning IPoIB: Fix deadlock between ipoib_open() and child interface create IPoIB: Fix hang in napi_disable() if P_Key is never found
This commit is contained in:
commit
f3b8436ad9
|
@ -196,7 +196,7 @@ struct ib_cq *ehca_create_cq(struct ib_device *device, int cqe, int comp_vector,
|
||||||
|
|
||||||
if (h_ret != H_SUCCESS) {
|
if (h_ret != H_SUCCESS) {
|
||||||
ehca_err(device, "hipz_h_alloc_resource_cq() failed "
|
ehca_err(device, "hipz_h_alloc_resource_cq() failed "
|
||||||
"h_ret=%li device=%p", h_ret, device);
|
"h_ret=%lli device=%p", h_ret, device);
|
||||||
cq = ERR_PTR(ehca2ib_return_code(h_ret));
|
cq = ERR_PTR(ehca2ib_return_code(h_ret));
|
||||||
goto create_cq_exit2;
|
goto create_cq_exit2;
|
||||||
}
|
}
|
||||||
|
@ -232,7 +232,7 @@ struct ib_cq *ehca_create_cq(struct ib_device *device, int cqe, int comp_vector,
|
||||||
|
|
||||||
if (h_ret < H_SUCCESS) {
|
if (h_ret < H_SUCCESS) {
|
||||||
ehca_err(device, "hipz_h_register_rpage_cq() failed "
|
ehca_err(device, "hipz_h_register_rpage_cq() failed "
|
||||||
"ehca_cq=%p cq_num=%x h_ret=%li counter=%i "
|
"ehca_cq=%p cq_num=%x h_ret=%lli counter=%i "
|
||||||
"act_pages=%i", my_cq, my_cq->cq_number,
|
"act_pages=%i", my_cq, my_cq->cq_number,
|
||||||
h_ret, counter, param.act_pages);
|
h_ret, counter, param.act_pages);
|
||||||
cq = ERR_PTR(-EINVAL);
|
cq = ERR_PTR(-EINVAL);
|
||||||
|
@ -244,7 +244,7 @@ struct ib_cq *ehca_create_cq(struct ib_device *device, int cqe, int comp_vector,
|
||||||
if ((h_ret != H_SUCCESS) || vpage) {
|
if ((h_ret != H_SUCCESS) || vpage) {
|
||||||
ehca_err(device, "Registration of pages not "
|
ehca_err(device, "Registration of pages not "
|
||||||
"complete ehca_cq=%p cq_num=%x "
|
"complete ehca_cq=%p cq_num=%x "
|
||||||
"h_ret=%li", my_cq, my_cq->cq_number,
|
"h_ret=%lli", my_cq, my_cq->cq_number,
|
||||||
h_ret);
|
h_ret);
|
||||||
cq = ERR_PTR(-EAGAIN);
|
cq = ERR_PTR(-EAGAIN);
|
||||||
goto create_cq_exit4;
|
goto create_cq_exit4;
|
||||||
|
@ -252,7 +252,7 @@ struct ib_cq *ehca_create_cq(struct ib_device *device, int cqe, int comp_vector,
|
||||||
} else {
|
} else {
|
||||||
if (h_ret != H_PAGE_REGISTERED) {
|
if (h_ret != H_PAGE_REGISTERED) {
|
||||||
ehca_err(device, "Registration of page failed "
|
ehca_err(device, "Registration of page failed "
|
||||||
"ehca_cq=%p cq_num=%x h_ret=%li "
|
"ehca_cq=%p cq_num=%x h_ret=%lli "
|
||||||
"counter=%i act_pages=%i",
|
"counter=%i act_pages=%i",
|
||||||
my_cq, my_cq->cq_number,
|
my_cq, my_cq->cq_number,
|
||||||
h_ret, counter, param.act_pages);
|
h_ret, counter, param.act_pages);
|
||||||
|
@ -266,7 +266,7 @@ struct ib_cq *ehca_create_cq(struct ib_device *device, int cqe, int comp_vector,
|
||||||
|
|
||||||
gal = my_cq->galpas.kernel;
|
gal = my_cq->galpas.kernel;
|
||||||
cqx_fec = hipz_galpa_load(gal, CQTEMM_OFFSET(cqx_fec));
|
cqx_fec = hipz_galpa_load(gal, CQTEMM_OFFSET(cqx_fec));
|
||||||
ehca_dbg(device, "ehca_cq=%p cq_num=%x CQX_FEC=%lx",
|
ehca_dbg(device, "ehca_cq=%p cq_num=%x CQX_FEC=%llx",
|
||||||
my_cq, my_cq->cq_number, cqx_fec);
|
my_cq, my_cq->cq_number, cqx_fec);
|
||||||
|
|
||||||
my_cq->ib_cq.cqe = my_cq->nr_of_entries =
|
my_cq->ib_cq.cqe = my_cq->nr_of_entries =
|
||||||
|
@ -307,7 +307,7 @@ create_cq_exit3:
|
||||||
h_ret = hipz_h_destroy_cq(adapter_handle, my_cq, 1);
|
h_ret = hipz_h_destroy_cq(adapter_handle, my_cq, 1);
|
||||||
if (h_ret != H_SUCCESS)
|
if (h_ret != H_SUCCESS)
|
||||||
ehca_err(device, "hipz_h_destroy_cq() failed ehca_cq=%p "
|
ehca_err(device, "hipz_h_destroy_cq() failed ehca_cq=%p "
|
||||||
"cq_num=%x h_ret=%li", my_cq, my_cq->cq_number, h_ret);
|
"cq_num=%x h_ret=%lli", my_cq, my_cq->cq_number, h_ret);
|
||||||
|
|
||||||
create_cq_exit2:
|
create_cq_exit2:
|
||||||
write_lock_irqsave(&ehca_cq_idr_lock, flags);
|
write_lock_irqsave(&ehca_cq_idr_lock, flags);
|
||||||
|
@ -355,7 +355,7 @@ int ehca_destroy_cq(struct ib_cq *cq)
|
||||||
h_ret = hipz_h_destroy_cq(adapter_handle, my_cq, 0);
|
h_ret = hipz_h_destroy_cq(adapter_handle, my_cq, 0);
|
||||||
if (h_ret == H_R_STATE) {
|
if (h_ret == H_R_STATE) {
|
||||||
/* cq in err: read err data and destroy it forcibly */
|
/* cq in err: read err data and destroy it forcibly */
|
||||||
ehca_dbg(device, "ehca_cq=%p cq_num=%x ressource=%lx in err "
|
ehca_dbg(device, "ehca_cq=%p cq_num=%x resource=%llx in err "
|
||||||
"state. Try to delete it forcibly.",
|
"state. Try to delete it forcibly.",
|
||||||
my_cq, cq_num, my_cq->ipz_cq_handle.handle);
|
my_cq, cq_num, my_cq->ipz_cq_handle.handle);
|
||||||
ehca_error_data(shca, my_cq, my_cq->ipz_cq_handle.handle);
|
ehca_error_data(shca, my_cq, my_cq->ipz_cq_handle.handle);
|
||||||
|
@ -365,7 +365,7 @@ int ehca_destroy_cq(struct ib_cq *cq)
|
||||||
cq_num);
|
cq_num);
|
||||||
}
|
}
|
||||||
if (h_ret != H_SUCCESS) {
|
if (h_ret != H_SUCCESS) {
|
||||||
ehca_err(device, "hipz_h_destroy_cq() failed h_ret=%li "
|
ehca_err(device, "hipz_h_destroy_cq() failed h_ret=%lli "
|
||||||
"ehca_cq=%p cq_num=%x", h_ret, my_cq, cq_num);
|
"ehca_cq=%p cq_num=%x", h_ret, my_cq, cq_num);
|
||||||
return ehca2ib_return_code(h_ret);
|
return ehca2ib_return_code(h_ret);
|
||||||
}
|
}
|
||||||
|
|
|
@ -393,7 +393,7 @@ int ehca_modify_port(struct ib_device *ibdev,
|
||||||
hret = hipz_h_modify_port(shca->ipz_hca_handle, port,
|
hret = hipz_h_modify_port(shca->ipz_hca_handle, port,
|
||||||
cap, props->init_type, port_modify_mask);
|
cap, props->init_type, port_modify_mask);
|
||||||
if (hret != H_SUCCESS) {
|
if (hret != H_SUCCESS) {
|
||||||
ehca_err(&shca->ib_device, "Modify port failed h_ret=%li",
|
ehca_err(&shca->ib_device, "Modify port failed h_ret=%lli",
|
||||||
hret);
|
hret);
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,7 +99,7 @@ static void print_error_data(struct ehca_shca *shca, void *data,
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ehca_err(&shca->ib_device,
|
ehca_err(&shca->ib_device,
|
||||||
"QP 0x%x (resource=%lx) has errors.",
|
"QP 0x%x (resource=%llx) has errors.",
|
||||||
qp->ib_qp.qp_num, resource);
|
qp->ib_qp.qp_num, resource);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -108,21 +108,21 @@ static void print_error_data(struct ehca_shca *shca, void *data,
|
||||||
struct ehca_cq *cq = (struct ehca_cq *)data;
|
struct ehca_cq *cq = (struct ehca_cq *)data;
|
||||||
|
|
||||||
ehca_err(&shca->ib_device,
|
ehca_err(&shca->ib_device,
|
||||||
"CQ 0x%x (resource=%lx) has errors.",
|
"CQ 0x%x (resource=%llx) has errors.",
|
||||||
cq->cq_number, resource);
|
cq->cq_number, resource);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
ehca_err(&shca->ib_device,
|
ehca_err(&shca->ib_device,
|
||||||
"Unknown error type: %lx on %s.",
|
"Unknown error type: %llx on %s.",
|
||||||
type, shca->ib_device.name);
|
type, shca->ib_device.name);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
ehca_err(&shca->ib_device, "Error data is available: %lx.", resource);
|
ehca_err(&shca->ib_device, "Error data is available: %llx.", resource);
|
||||||
ehca_err(&shca->ib_device, "EHCA ----- error data begin "
|
ehca_err(&shca->ib_device, "EHCA ----- error data begin "
|
||||||
"---------------------------------------------------");
|
"---------------------------------------------------");
|
||||||
ehca_dmp(rblock, length, "resource=%lx", resource);
|
ehca_dmp(rblock, length, "resource=%llx", resource);
|
||||||
ehca_err(&shca->ib_device, "EHCA ----- error data end "
|
ehca_err(&shca->ib_device, "EHCA ----- error data end "
|
||||||
"----------------------------------------------------");
|
"----------------------------------------------------");
|
||||||
|
|
||||||
|
@ -152,7 +152,7 @@ int ehca_error_data(struct ehca_shca *shca, void *data,
|
||||||
|
|
||||||
if (ret == H_R_STATE)
|
if (ret == H_R_STATE)
|
||||||
ehca_err(&shca->ib_device,
|
ehca_err(&shca->ib_device,
|
||||||
"No error data is available: %lx.", resource);
|
"No error data is available: %llx.", resource);
|
||||||
else if (ret == H_SUCCESS) {
|
else if (ret == H_SUCCESS) {
|
||||||
int length;
|
int length;
|
||||||
|
|
||||||
|
@ -164,7 +164,7 @@ int ehca_error_data(struct ehca_shca *shca, void *data,
|
||||||
print_error_data(shca, data, rblock, length);
|
print_error_data(shca, data, rblock, length);
|
||||||
} else
|
} else
|
||||||
ehca_err(&shca->ib_device,
|
ehca_err(&shca->ib_device,
|
||||||
"Error data could not be fetched: %lx", resource);
|
"Error data could not be fetched: %llx", resource);
|
||||||
|
|
||||||
ehca_free_fw_ctrlblock(rblock);
|
ehca_free_fw_ctrlblock(rblock);
|
||||||
|
|
||||||
|
@ -514,7 +514,7 @@ static inline void process_eqe(struct ehca_shca *shca, struct ehca_eqe *eqe)
|
||||||
struct ehca_cq *cq;
|
struct ehca_cq *cq;
|
||||||
|
|
||||||
eqe_value = eqe->entry;
|
eqe_value = eqe->entry;
|
||||||
ehca_dbg(&shca->ib_device, "eqe_value=%lx", eqe_value);
|
ehca_dbg(&shca->ib_device, "eqe_value=%llx", eqe_value);
|
||||||
if (EHCA_BMASK_GET(EQE_COMPLETION_EVENT, eqe_value)) {
|
if (EHCA_BMASK_GET(EQE_COMPLETION_EVENT, eqe_value)) {
|
||||||
ehca_dbg(&shca->ib_device, "Got completion event");
|
ehca_dbg(&shca->ib_device, "Got completion event");
|
||||||
token = EHCA_BMASK_GET(EQE_CQ_TOKEN, eqe_value);
|
token = EHCA_BMASK_GET(EQE_CQ_TOKEN, eqe_value);
|
||||||
|
@ -603,7 +603,7 @@ void ehca_process_eq(struct ehca_shca *shca, int is_irq)
|
||||||
ret = hipz_h_eoi(eq->ist);
|
ret = hipz_h_eoi(eq->ist);
|
||||||
if (ret != H_SUCCESS)
|
if (ret != H_SUCCESS)
|
||||||
ehca_err(&shca->ib_device,
|
ehca_err(&shca->ib_device,
|
||||||
"bad return code EOI -rc = %ld\n", ret);
|
"bad return code EOI -rc = %lld\n", ret);
|
||||||
ehca_dbg(&shca->ib_device, "deadman found %x eqe", eqe_cnt);
|
ehca_dbg(&shca->ib_device, "deadman found %x eqe", eqe_cnt);
|
||||||
}
|
}
|
||||||
if (unlikely(eqe_cnt == EHCA_EQE_CACHE_SIZE))
|
if (unlikely(eqe_cnt == EHCA_EQE_CACHE_SIZE))
|
||||||
|
|
|
@ -304,7 +304,7 @@ static int ehca_sense_attributes(struct ehca_shca *shca)
|
||||||
|
|
||||||
h_ret = hipz_h_query_hca(shca->ipz_hca_handle, rblock);
|
h_ret = hipz_h_query_hca(shca->ipz_hca_handle, rblock);
|
||||||
if (h_ret != H_SUCCESS) {
|
if (h_ret != H_SUCCESS) {
|
||||||
ehca_gen_err("Cannot query device properties. h_ret=%li",
|
ehca_gen_err("Cannot query device properties. h_ret=%lli",
|
||||||
h_ret);
|
h_ret);
|
||||||
ret = -EPERM;
|
ret = -EPERM;
|
||||||
goto sense_attributes1;
|
goto sense_attributes1;
|
||||||
|
@ -391,7 +391,7 @@ static int ehca_sense_attributes(struct ehca_shca *shca)
|
||||||
port = (struct hipz_query_port *)rblock;
|
port = (struct hipz_query_port *)rblock;
|
||||||
h_ret = hipz_h_query_port(shca->ipz_hca_handle, 1, port);
|
h_ret = hipz_h_query_port(shca->ipz_hca_handle, 1, port);
|
||||||
if (h_ret != H_SUCCESS) {
|
if (h_ret != H_SUCCESS) {
|
||||||
ehca_gen_err("Cannot query port properties. h_ret=%li",
|
ehca_gen_err("Cannot query port properties. h_ret=%lli",
|
||||||
h_ret);
|
h_ret);
|
||||||
ret = -EPERM;
|
ret = -EPERM;
|
||||||
goto sense_attributes1;
|
goto sense_attributes1;
|
||||||
|
@ -682,7 +682,7 @@ static ssize_t ehca_show_adapter_handle(struct device *dev,
|
||||||
{
|
{
|
||||||
struct ehca_shca *shca = dev->driver_data;
|
struct ehca_shca *shca = dev->driver_data;
|
||||||
|
|
||||||
return sprintf(buf, "%lx\n", shca->ipz_hca_handle.handle);
|
return sprintf(buf, "%llx\n", shca->ipz_hca_handle.handle);
|
||||||
|
|
||||||
}
|
}
|
||||||
static DEVICE_ATTR(adapter_handle, S_IRUGO, ehca_show_adapter_handle, NULL);
|
static DEVICE_ATTR(adapter_handle, S_IRUGO, ehca_show_adapter_handle, NULL);
|
||||||
|
|
|
@ -88,7 +88,7 @@ int ehca_attach_mcast(struct ib_qp *ibqp, union ib_gid *gid, u16 lid)
|
||||||
if (h_ret != H_SUCCESS)
|
if (h_ret != H_SUCCESS)
|
||||||
ehca_err(ibqp->device,
|
ehca_err(ibqp->device,
|
||||||
"ehca_qp=%p qp_num=%x hipz_h_attach_mcqp() failed "
|
"ehca_qp=%p qp_num=%x hipz_h_attach_mcqp() failed "
|
||||||
"h_ret=%li", my_qp, ibqp->qp_num, h_ret);
|
"h_ret=%lli", my_qp, ibqp->qp_num, h_ret);
|
||||||
|
|
||||||
return ehca2ib_return_code(h_ret);
|
return ehca2ib_return_code(h_ret);
|
||||||
}
|
}
|
||||||
|
@ -125,7 +125,7 @@ int ehca_detach_mcast(struct ib_qp *ibqp, union ib_gid *gid, u16 lid)
|
||||||
if (h_ret != H_SUCCESS)
|
if (h_ret != H_SUCCESS)
|
||||||
ehca_err(ibqp->device,
|
ehca_err(ibqp->device,
|
||||||
"ehca_qp=%p qp_num=%x hipz_h_detach_mcqp() failed "
|
"ehca_qp=%p qp_num=%x hipz_h_detach_mcqp() failed "
|
||||||
"h_ret=%li", my_qp, ibqp->qp_num, h_ret);
|
"h_ret=%lli", my_qp, ibqp->qp_num, h_ret);
|
||||||
|
|
||||||
return ehca2ib_return_code(h_ret);
|
return ehca2ib_return_code(h_ret);
|
||||||
}
|
}
|
||||||
|
|
|
@ -204,7 +204,7 @@ struct ib_mr *ehca_reg_phys_mr(struct ib_pd *pd,
|
||||||
}
|
}
|
||||||
if ((size == 0) ||
|
if ((size == 0) ||
|
||||||
(((u64)iova_start + size) < (u64)iova_start)) {
|
(((u64)iova_start + size) < (u64)iova_start)) {
|
||||||
ehca_err(pd->device, "bad input values: size=%lx iova_start=%p",
|
ehca_err(pd->device, "bad input values: size=%llx iova_start=%p",
|
||||||
size, iova_start);
|
size, iova_start);
|
||||||
ib_mr = ERR_PTR(-EINVAL);
|
ib_mr = ERR_PTR(-EINVAL);
|
||||||
goto reg_phys_mr_exit0;
|
goto reg_phys_mr_exit0;
|
||||||
|
@ -309,8 +309,8 @@ struct ib_mr *ehca_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (length == 0 || virt + length < virt) {
|
if (length == 0 || virt + length < virt) {
|
||||||
ehca_err(pd->device, "bad input values: length=%lx "
|
ehca_err(pd->device, "bad input values: length=%llx "
|
||||||
"virt_base=%lx", length, virt);
|
"virt_base=%llx", length, virt);
|
||||||
ib_mr = ERR_PTR(-EINVAL);
|
ib_mr = ERR_PTR(-EINVAL);
|
||||||
goto reg_user_mr_exit0;
|
goto reg_user_mr_exit0;
|
||||||
}
|
}
|
||||||
|
@ -373,7 +373,7 @@ reg_user_mr_fallback:
|
||||||
&e_mr->ib.ib_mr.rkey);
|
&e_mr->ib.ib_mr.rkey);
|
||||||
if (ret == -EINVAL && pginfo.hwpage_size > PAGE_SIZE) {
|
if (ret == -EINVAL && pginfo.hwpage_size > PAGE_SIZE) {
|
||||||
ehca_warn(pd->device, "failed to register mr "
|
ehca_warn(pd->device, "failed to register mr "
|
||||||
"with hwpage_size=%lx", hwpage_size);
|
"with hwpage_size=%llx", hwpage_size);
|
||||||
ehca_info(pd->device, "try to register mr with "
|
ehca_info(pd->device, "try to register mr with "
|
||||||
"kpage_size=%lx", PAGE_SIZE);
|
"kpage_size=%lx", PAGE_SIZE);
|
||||||
/*
|
/*
|
||||||
|
@ -509,7 +509,7 @@ int ehca_rereg_phys_mr(struct ib_mr *mr,
|
||||||
goto rereg_phys_mr_exit1;
|
goto rereg_phys_mr_exit1;
|
||||||
if ((new_size == 0) ||
|
if ((new_size == 0) ||
|
||||||
(((u64)iova_start + new_size) < (u64)iova_start)) {
|
(((u64)iova_start + new_size) < (u64)iova_start)) {
|
||||||
ehca_err(mr->device, "bad input values: new_size=%lx "
|
ehca_err(mr->device, "bad input values: new_size=%llx "
|
||||||
"iova_start=%p", new_size, iova_start);
|
"iova_start=%p", new_size, iova_start);
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
goto rereg_phys_mr_exit1;
|
goto rereg_phys_mr_exit1;
|
||||||
|
@ -580,8 +580,8 @@ int ehca_query_mr(struct ib_mr *mr, struct ib_mr_attr *mr_attr)
|
||||||
|
|
||||||
h_ret = hipz_h_query_mr(shca->ipz_hca_handle, e_mr, &hipzout);
|
h_ret = hipz_h_query_mr(shca->ipz_hca_handle, e_mr, &hipzout);
|
||||||
if (h_ret != H_SUCCESS) {
|
if (h_ret != H_SUCCESS) {
|
||||||
ehca_err(mr->device, "hipz_mr_query failed, h_ret=%li mr=%p "
|
ehca_err(mr->device, "hipz_mr_query failed, h_ret=%lli mr=%p "
|
||||||
"hca_hndl=%lx mr_hndl=%lx lkey=%x",
|
"hca_hndl=%llx mr_hndl=%llx lkey=%x",
|
||||||
h_ret, mr, shca->ipz_hca_handle.handle,
|
h_ret, mr, shca->ipz_hca_handle.handle,
|
||||||
e_mr->ipz_mr_handle.handle, mr->lkey);
|
e_mr->ipz_mr_handle.handle, mr->lkey);
|
||||||
ret = ehca2ib_return_code(h_ret);
|
ret = ehca2ib_return_code(h_ret);
|
||||||
|
@ -630,8 +630,8 @@ int ehca_dereg_mr(struct ib_mr *mr)
|
||||||
/* TODO: BUSY: MR still has bound window(s) */
|
/* TODO: BUSY: MR still has bound window(s) */
|
||||||
h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_mr);
|
h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_mr);
|
||||||
if (h_ret != H_SUCCESS) {
|
if (h_ret != H_SUCCESS) {
|
||||||
ehca_err(mr->device, "hipz_free_mr failed, h_ret=%li shca=%p "
|
ehca_err(mr->device, "hipz_free_mr failed, h_ret=%lli shca=%p "
|
||||||
"e_mr=%p hca_hndl=%lx mr_hndl=%lx mr->lkey=%x",
|
"e_mr=%p hca_hndl=%llx mr_hndl=%llx mr->lkey=%x",
|
||||||
h_ret, shca, e_mr, shca->ipz_hca_handle.handle,
|
h_ret, shca, e_mr, shca->ipz_hca_handle.handle,
|
||||||
e_mr->ipz_mr_handle.handle, mr->lkey);
|
e_mr->ipz_mr_handle.handle, mr->lkey);
|
||||||
ret = ehca2ib_return_code(h_ret);
|
ret = ehca2ib_return_code(h_ret);
|
||||||
|
@ -671,8 +671,8 @@ struct ib_mw *ehca_alloc_mw(struct ib_pd *pd)
|
||||||
h_ret = hipz_h_alloc_resource_mw(shca->ipz_hca_handle, e_mw,
|
h_ret = hipz_h_alloc_resource_mw(shca->ipz_hca_handle, e_mw,
|
||||||
e_pd->fw_pd, &hipzout);
|
e_pd->fw_pd, &hipzout);
|
||||||
if (h_ret != H_SUCCESS) {
|
if (h_ret != H_SUCCESS) {
|
||||||
ehca_err(pd->device, "hipz_mw_allocate failed, h_ret=%li "
|
ehca_err(pd->device, "hipz_mw_allocate failed, h_ret=%lli "
|
||||||
"shca=%p hca_hndl=%lx mw=%p",
|
"shca=%p hca_hndl=%llx mw=%p",
|
||||||
h_ret, shca, shca->ipz_hca_handle.handle, e_mw);
|
h_ret, shca, shca->ipz_hca_handle.handle, e_mw);
|
||||||
ib_mw = ERR_PTR(ehca2ib_return_code(h_ret));
|
ib_mw = ERR_PTR(ehca2ib_return_code(h_ret));
|
||||||
goto alloc_mw_exit1;
|
goto alloc_mw_exit1;
|
||||||
|
@ -713,8 +713,8 @@ int ehca_dealloc_mw(struct ib_mw *mw)
|
||||||
|
|
||||||
h_ret = hipz_h_free_resource_mw(shca->ipz_hca_handle, e_mw);
|
h_ret = hipz_h_free_resource_mw(shca->ipz_hca_handle, e_mw);
|
||||||
if (h_ret != H_SUCCESS) {
|
if (h_ret != H_SUCCESS) {
|
||||||
ehca_err(mw->device, "hipz_free_mw failed, h_ret=%li shca=%p "
|
ehca_err(mw->device, "hipz_free_mw failed, h_ret=%lli shca=%p "
|
||||||
"mw=%p rkey=%x hca_hndl=%lx mw_hndl=%lx",
|
"mw=%p rkey=%x hca_hndl=%llx mw_hndl=%llx",
|
||||||
h_ret, shca, mw, mw->rkey, shca->ipz_hca_handle.handle,
|
h_ret, shca, mw, mw->rkey, shca->ipz_hca_handle.handle,
|
||||||
e_mw->ipz_mw_handle.handle);
|
e_mw->ipz_mw_handle.handle);
|
||||||
return ehca2ib_return_code(h_ret);
|
return ehca2ib_return_code(h_ret);
|
||||||
|
@ -840,7 +840,7 @@ int ehca_map_phys_fmr(struct ib_fmr *fmr,
|
||||||
goto map_phys_fmr_exit0;
|
goto map_phys_fmr_exit0;
|
||||||
if (iova % e_fmr->fmr_page_size) {
|
if (iova % e_fmr->fmr_page_size) {
|
||||||
/* only whole-numbered pages */
|
/* only whole-numbered pages */
|
||||||
ehca_err(fmr->device, "bad iova, iova=%lx fmr_page_size=%x",
|
ehca_err(fmr->device, "bad iova, iova=%llx fmr_page_size=%x",
|
||||||
iova, e_fmr->fmr_page_size);
|
iova, e_fmr->fmr_page_size);
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
goto map_phys_fmr_exit0;
|
goto map_phys_fmr_exit0;
|
||||||
|
@ -878,7 +878,7 @@ int ehca_map_phys_fmr(struct ib_fmr *fmr,
|
||||||
map_phys_fmr_exit0:
|
map_phys_fmr_exit0:
|
||||||
if (ret)
|
if (ret)
|
||||||
ehca_err(fmr->device, "ret=%i fmr=%p page_list=%p list_len=%x "
|
ehca_err(fmr->device, "ret=%i fmr=%p page_list=%p list_len=%x "
|
||||||
"iova=%lx", ret, fmr, page_list, list_len, iova);
|
"iova=%llx", ret, fmr, page_list, list_len, iova);
|
||||||
return ret;
|
return ret;
|
||||||
} /* end ehca_map_phys_fmr() */
|
} /* end ehca_map_phys_fmr() */
|
||||||
|
|
||||||
|
@ -964,8 +964,8 @@ int ehca_dealloc_fmr(struct ib_fmr *fmr)
|
||||||
|
|
||||||
h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_fmr);
|
h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_fmr);
|
||||||
if (h_ret != H_SUCCESS) {
|
if (h_ret != H_SUCCESS) {
|
||||||
ehca_err(fmr->device, "hipz_free_mr failed, h_ret=%li e_fmr=%p "
|
ehca_err(fmr->device, "hipz_free_mr failed, h_ret=%lli e_fmr=%p "
|
||||||
"hca_hndl=%lx fmr_hndl=%lx fmr->lkey=%x",
|
"hca_hndl=%llx fmr_hndl=%llx fmr->lkey=%x",
|
||||||
h_ret, e_fmr, shca->ipz_hca_handle.handle,
|
h_ret, e_fmr, shca->ipz_hca_handle.handle,
|
||||||
e_fmr->ipz_mr_handle.handle, fmr->lkey);
|
e_fmr->ipz_mr_handle.handle, fmr->lkey);
|
||||||
ret = ehca2ib_return_code(h_ret);
|
ret = ehca2ib_return_code(h_ret);
|
||||||
|
@ -1007,8 +1007,8 @@ int ehca_reg_mr(struct ehca_shca *shca,
|
||||||
(u64)iova_start, size, hipz_acl,
|
(u64)iova_start, size, hipz_acl,
|
||||||
e_pd->fw_pd, &hipzout);
|
e_pd->fw_pd, &hipzout);
|
||||||
if (h_ret != H_SUCCESS) {
|
if (h_ret != H_SUCCESS) {
|
||||||
ehca_err(&shca->ib_device, "hipz_alloc_mr failed, h_ret=%li "
|
ehca_err(&shca->ib_device, "hipz_alloc_mr failed, h_ret=%lli "
|
||||||
"hca_hndl=%lx", h_ret, shca->ipz_hca_handle.handle);
|
"hca_hndl=%llx", h_ret, shca->ipz_hca_handle.handle);
|
||||||
ret = ehca2ib_return_code(h_ret);
|
ret = ehca2ib_return_code(h_ret);
|
||||||
goto ehca_reg_mr_exit0;
|
goto ehca_reg_mr_exit0;
|
||||||
}
|
}
|
||||||
|
@ -1033,9 +1033,9 @@ int ehca_reg_mr(struct ehca_shca *shca,
|
||||||
ehca_reg_mr_exit1:
|
ehca_reg_mr_exit1:
|
||||||
h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_mr);
|
h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_mr);
|
||||||
if (h_ret != H_SUCCESS) {
|
if (h_ret != H_SUCCESS) {
|
||||||
ehca_err(&shca->ib_device, "h_ret=%li shca=%p e_mr=%p "
|
ehca_err(&shca->ib_device, "h_ret=%lli shca=%p e_mr=%p "
|
||||||
"iova_start=%p size=%lx acl=%x e_pd=%p lkey=%x "
|
"iova_start=%p size=%llx acl=%x e_pd=%p lkey=%x "
|
||||||
"pginfo=%p num_kpages=%lx num_hwpages=%lx ret=%i",
|
"pginfo=%p num_kpages=%llx num_hwpages=%llx ret=%i",
|
||||||
h_ret, shca, e_mr, iova_start, size, acl, e_pd,
|
h_ret, shca, e_mr, iova_start, size, acl, e_pd,
|
||||||
hipzout.lkey, pginfo, pginfo->num_kpages,
|
hipzout.lkey, pginfo, pginfo->num_kpages,
|
||||||
pginfo->num_hwpages, ret);
|
pginfo->num_hwpages, ret);
|
||||||
|
@ -1045,8 +1045,8 @@ ehca_reg_mr_exit1:
|
||||||
ehca_reg_mr_exit0:
|
ehca_reg_mr_exit0:
|
||||||
if (ret)
|
if (ret)
|
||||||
ehca_err(&shca->ib_device, "ret=%i shca=%p e_mr=%p "
|
ehca_err(&shca->ib_device, "ret=%i shca=%p e_mr=%p "
|
||||||
"iova_start=%p size=%lx acl=%x e_pd=%p pginfo=%p "
|
"iova_start=%p size=%llx acl=%x e_pd=%p pginfo=%p "
|
||||||
"num_kpages=%lx num_hwpages=%lx",
|
"num_kpages=%llx num_hwpages=%llx",
|
||||||
ret, shca, e_mr, iova_start, size, acl, e_pd, pginfo,
|
ret, shca, e_mr, iova_start, size, acl, e_pd, pginfo,
|
||||||
pginfo->num_kpages, pginfo->num_hwpages);
|
pginfo->num_kpages, pginfo->num_hwpages);
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -1116,8 +1116,8 @@ int ehca_reg_mr_rpages(struct ehca_shca *shca,
|
||||||
*/
|
*/
|
||||||
if (h_ret != H_SUCCESS) {
|
if (h_ret != H_SUCCESS) {
|
||||||
ehca_err(&shca->ib_device, "last "
|
ehca_err(&shca->ib_device, "last "
|
||||||
"hipz_reg_rpage_mr failed, h_ret=%li "
|
"hipz_reg_rpage_mr failed, h_ret=%lli "
|
||||||
"e_mr=%p i=%x hca_hndl=%lx mr_hndl=%lx"
|
"e_mr=%p i=%x hca_hndl=%llx mr_hndl=%llx"
|
||||||
" lkey=%x", h_ret, e_mr, i,
|
" lkey=%x", h_ret, e_mr, i,
|
||||||
shca->ipz_hca_handle.handle,
|
shca->ipz_hca_handle.handle,
|
||||||
e_mr->ipz_mr_handle.handle,
|
e_mr->ipz_mr_handle.handle,
|
||||||
|
@ -1128,8 +1128,8 @@ int ehca_reg_mr_rpages(struct ehca_shca *shca,
|
||||||
ret = 0;
|
ret = 0;
|
||||||
} else if (h_ret != H_PAGE_REGISTERED) {
|
} else if (h_ret != H_PAGE_REGISTERED) {
|
||||||
ehca_err(&shca->ib_device, "hipz_reg_rpage_mr failed, "
|
ehca_err(&shca->ib_device, "hipz_reg_rpage_mr failed, "
|
||||||
"h_ret=%li e_mr=%p i=%x lkey=%x hca_hndl=%lx "
|
"h_ret=%lli e_mr=%p i=%x lkey=%x hca_hndl=%llx "
|
||||||
"mr_hndl=%lx", h_ret, e_mr, i,
|
"mr_hndl=%llx", h_ret, e_mr, i,
|
||||||
e_mr->ib.ib_mr.lkey,
|
e_mr->ib.ib_mr.lkey,
|
||||||
shca->ipz_hca_handle.handle,
|
shca->ipz_hca_handle.handle,
|
||||||
e_mr->ipz_mr_handle.handle);
|
e_mr->ipz_mr_handle.handle);
|
||||||
|
@ -1145,7 +1145,7 @@ ehca_reg_mr_rpages_exit1:
|
||||||
ehca_reg_mr_rpages_exit0:
|
ehca_reg_mr_rpages_exit0:
|
||||||
if (ret)
|
if (ret)
|
||||||
ehca_err(&shca->ib_device, "ret=%i shca=%p e_mr=%p pginfo=%p "
|
ehca_err(&shca->ib_device, "ret=%i shca=%p e_mr=%p pginfo=%p "
|
||||||
"num_kpages=%lx num_hwpages=%lx", ret, shca, e_mr,
|
"num_kpages=%llx num_hwpages=%llx", ret, shca, e_mr,
|
||||||
pginfo, pginfo->num_kpages, pginfo->num_hwpages);
|
pginfo, pginfo->num_kpages, pginfo->num_hwpages);
|
||||||
return ret;
|
return ret;
|
||||||
} /* end ehca_reg_mr_rpages() */
|
} /* end ehca_reg_mr_rpages() */
|
||||||
|
@ -1184,7 +1184,7 @@ inline int ehca_rereg_mr_rereg1(struct ehca_shca *shca,
|
||||||
ret = ehca_set_pagebuf(pginfo, pginfo->num_hwpages, kpage);
|
ret = ehca_set_pagebuf(pginfo, pginfo->num_hwpages, kpage);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
ehca_err(&shca->ib_device, "set pagebuf failed, e_mr=%p "
|
ehca_err(&shca->ib_device, "set pagebuf failed, e_mr=%p "
|
||||||
"pginfo=%p type=%x num_kpages=%lx num_hwpages=%lx "
|
"pginfo=%p type=%x num_kpages=%llx num_hwpages=%llx "
|
||||||
"kpage=%p", e_mr, pginfo, pginfo->type,
|
"kpage=%p", e_mr, pginfo, pginfo->type,
|
||||||
pginfo->num_kpages, pginfo->num_hwpages, kpage);
|
pginfo->num_kpages, pginfo->num_hwpages, kpage);
|
||||||
goto ehca_rereg_mr_rereg1_exit1;
|
goto ehca_rereg_mr_rereg1_exit1;
|
||||||
|
@ -1205,13 +1205,13 @@ inline int ehca_rereg_mr_rereg1(struct ehca_shca *shca,
|
||||||
* (MW bound or MR is shared)
|
* (MW bound or MR is shared)
|
||||||
*/
|
*/
|
||||||
ehca_warn(&shca->ib_device, "hipz_h_reregister_pmr failed "
|
ehca_warn(&shca->ib_device, "hipz_h_reregister_pmr failed "
|
||||||
"(Rereg1), h_ret=%li e_mr=%p", h_ret, e_mr);
|
"(Rereg1), h_ret=%lli e_mr=%p", h_ret, e_mr);
|
||||||
*pginfo = pginfo_save;
|
*pginfo = pginfo_save;
|
||||||
ret = -EAGAIN;
|
ret = -EAGAIN;
|
||||||
} else if ((u64 *)hipzout.vaddr != iova_start) {
|
} else if ((u64 *)hipzout.vaddr != iova_start) {
|
||||||
ehca_err(&shca->ib_device, "PHYP changed iova_start in "
|
ehca_err(&shca->ib_device, "PHYP changed iova_start in "
|
||||||
"rereg_pmr, iova_start=%p iova_start_out=%lx e_mr=%p "
|
"rereg_pmr, iova_start=%p iova_start_out=%llx e_mr=%p "
|
||||||
"mr_handle=%lx lkey=%x lkey_out=%x", iova_start,
|
"mr_handle=%llx lkey=%x lkey_out=%x", iova_start,
|
||||||
hipzout.vaddr, e_mr, e_mr->ipz_mr_handle.handle,
|
hipzout.vaddr, e_mr, e_mr->ipz_mr_handle.handle,
|
||||||
e_mr->ib.ib_mr.lkey, hipzout.lkey);
|
e_mr->ib.ib_mr.lkey, hipzout.lkey);
|
||||||
ret = -EFAULT;
|
ret = -EFAULT;
|
||||||
|
@ -1235,7 +1235,7 @@ ehca_rereg_mr_rereg1_exit1:
|
||||||
ehca_rereg_mr_rereg1_exit0:
|
ehca_rereg_mr_rereg1_exit0:
|
||||||
if ( ret && (ret != -EAGAIN) )
|
if ( ret && (ret != -EAGAIN) )
|
||||||
ehca_err(&shca->ib_device, "ret=%i lkey=%x rkey=%x "
|
ehca_err(&shca->ib_device, "ret=%i lkey=%x rkey=%x "
|
||||||
"pginfo=%p num_kpages=%lx num_hwpages=%lx",
|
"pginfo=%p num_kpages=%llx num_hwpages=%llx",
|
||||||
ret, *lkey, *rkey, pginfo, pginfo->num_kpages,
|
ret, *lkey, *rkey, pginfo, pginfo->num_kpages,
|
||||||
pginfo->num_hwpages);
|
pginfo->num_hwpages);
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -1263,7 +1263,7 @@ int ehca_rereg_mr(struct ehca_shca *shca,
|
||||||
(e_mr->num_hwpages > MAX_RPAGES) ||
|
(e_mr->num_hwpages > MAX_RPAGES) ||
|
||||||
(pginfo->num_hwpages > e_mr->num_hwpages)) {
|
(pginfo->num_hwpages > e_mr->num_hwpages)) {
|
||||||
ehca_dbg(&shca->ib_device, "Rereg3 case, "
|
ehca_dbg(&shca->ib_device, "Rereg3 case, "
|
||||||
"pginfo->num_hwpages=%lx e_mr->num_hwpages=%x",
|
"pginfo->num_hwpages=%llx e_mr->num_hwpages=%x",
|
||||||
pginfo->num_hwpages, e_mr->num_hwpages);
|
pginfo->num_hwpages, e_mr->num_hwpages);
|
||||||
rereg_1_hcall = 0;
|
rereg_1_hcall = 0;
|
||||||
rereg_3_hcall = 1;
|
rereg_3_hcall = 1;
|
||||||
|
@ -1295,7 +1295,7 @@ int ehca_rereg_mr(struct ehca_shca *shca,
|
||||||
h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_mr);
|
h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_mr);
|
||||||
if (h_ret != H_SUCCESS) {
|
if (h_ret != H_SUCCESS) {
|
||||||
ehca_err(&shca->ib_device, "hipz_free_mr failed, "
|
ehca_err(&shca->ib_device, "hipz_free_mr failed, "
|
||||||
"h_ret=%li e_mr=%p hca_hndl=%lx mr_hndl=%lx "
|
"h_ret=%lli e_mr=%p hca_hndl=%llx mr_hndl=%llx "
|
||||||
"mr->lkey=%x",
|
"mr->lkey=%x",
|
||||||
h_ret, e_mr, shca->ipz_hca_handle.handle,
|
h_ret, e_mr, shca->ipz_hca_handle.handle,
|
||||||
e_mr->ipz_mr_handle.handle,
|
e_mr->ipz_mr_handle.handle,
|
||||||
|
@ -1328,8 +1328,8 @@ int ehca_rereg_mr(struct ehca_shca *shca,
|
||||||
ehca_rereg_mr_exit0:
|
ehca_rereg_mr_exit0:
|
||||||
if (ret)
|
if (ret)
|
||||||
ehca_err(&shca->ib_device, "ret=%i shca=%p e_mr=%p "
|
ehca_err(&shca->ib_device, "ret=%i shca=%p e_mr=%p "
|
||||||
"iova_start=%p size=%lx acl=%x e_pd=%p pginfo=%p "
|
"iova_start=%p size=%llx acl=%x e_pd=%p pginfo=%p "
|
||||||
"num_kpages=%lx lkey=%x rkey=%x rereg_1_hcall=%x "
|
"num_kpages=%llx lkey=%x rkey=%x rereg_1_hcall=%x "
|
||||||
"rereg_3_hcall=%x", ret, shca, e_mr, iova_start, size,
|
"rereg_3_hcall=%x", ret, shca, e_mr, iova_start, size,
|
||||||
acl, e_pd, pginfo, pginfo->num_kpages, *lkey, *rkey,
|
acl, e_pd, pginfo, pginfo->num_kpages, *lkey, *rkey,
|
||||||
rereg_1_hcall, rereg_3_hcall);
|
rereg_1_hcall, rereg_3_hcall);
|
||||||
|
@ -1371,8 +1371,8 @@ int ehca_unmap_one_fmr(struct ehca_shca *shca,
|
||||||
* FMRs are not shared and no MW bound to FMRs
|
* FMRs are not shared and no MW bound to FMRs
|
||||||
*/
|
*/
|
||||||
ehca_err(&shca->ib_device, "hipz_reregister_pmr failed "
|
ehca_err(&shca->ib_device, "hipz_reregister_pmr failed "
|
||||||
"(Rereg1), h_ret=%li e_fmr=%p hca_hndl=%lx "
|
"(Rereg1), h_ret=%lli e_fmr=%p hca_hndl=%llx "
|
||||||
"mr_hndl=%lx lkey=%x lkey_out=%x",
|
"mr_hndl=%llx lkey=%x lkey_out=%x",
|
||||||
h_ret, e_fmr, shca->ipz_hca_handle.handle,
|
h_ret, e_fmr, shca->ipz_hca_handle.handle,
|
||||||
e_fmr->ipz_mr_handle.handle,
|
e_fmr->ipz_mr_handle.handle,
|
||||||
e_fmr->ib.ib_fmr.lkey, hipzout.lkey);
|
e_fmr->ib.ib_fmr.lkey, hipzout.lkey);
|
||||||
|
@ -1383,7 +1383,7 @@ int ehca_unmap_one_fmr(struct ehca_shca *shca,
|
||||||
h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_fmr);
|
h_ret = hipz_h_free_resource_mr(shca->ipz_hca_handle, e_fmr);
|
||||||
if (h_ret != H_SUCCESS) {
|
if (h_ret != H_SUCCESS) {
|
||||||
ehca_err(&shca->ib_device, "hipz_free_mr failed, "
|
ehca_err(&shca->ib_device, "hipz_free_mr failed, "
|
||||||
"h_ret=%li e_fmr=%p hca_hndl=%lx mr_hndl=%lx "
|
"h_ret=%lli e_fmr=%p hca_hndl=%llx mr_hndl=%llx "
|
||||||
"lkey=%x",
|
"lkey=%x",
|
||||||
h_ret, e_fmr, shca->ipz_hca_handle.handle,
|
h_ret, e_fmr, shca->ipz_hca_handle.handle,
|
||||||
e_fmr->ipz_mr_handle.handle,
|
e_fmr->ipz_mr_handle.handle,
|
||||||
|
@ -1447,9 +1447,9 @@ int ehca_reg_smr(struct ehca_shca *shca,
|
||||||
(u64)iova_start, hipz_acl, e_pd->fw_pd,
|
(u64)iova_start, hipz_acl, e_pd->fw_pd,
|
||||||
&hipzout);
|
&hipzout);
|
||||||
if (h_ret != H_SUCCESS) {
|
if (h_ret != H_SUCCESS) {
|
||||||
ehca_err(&shca->ib_device, "hipz_reg_smr failed, h_ret=%li "
|
ehca_err(&shca->ib_device, "hipz_reg_smr failed, h_ret=%lli "
|
||||||
"shca=%p e_origmr=%p e_newmr=%p iova_start=%p acl=%x "
|
"shca=%p e_origmr=%p e_newmr=%p iova_start=%p acl=%x "
|
||||||
"e_pd=%p hca_hndl=%lx mr_hndl=%lx lkey=%x",
|
"e_pd=%p hca_hndl=%llx mr_hndl=%llx lkey=%x",
|
||||||
h_ret, shca, e_origmr, e_newmr, iova_start, acl, e_pd,
|
h_ret, shca, e_origmr, e_newmr, iova_start, acl, e_pd,
|
||||||
shca->ipz_hca_handle.handle,
|
shca->ipz_hca_handle.handle,
|
||||||
e_origmr->ipz_mr_handle.handle,
|
e_origmr->ipz_mr_handle.handle,
|
||||||
|
@ -1527,7 +1527,7 @@ int ehca_reg_internal_maxmr(
|
||||||
&e_mr->ib.ib_mr.rkey);
|
&e_mr->ib.ib_mr.rkey);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
ehca_err(&shca->ib_device, "reg of internal max MR failed, "
|
ehca_err(&shca->ib_device, "reg of internal max MR failed, "
|
||||||
"e_mr=%p iova_start=%p size_maxmr=%lx num_kpages=%x "
|
"e_mr=%p iova_start=%p size_maxmr=%llx num_kpages=%x "
|
||||||
"num_hwpages=%x", e_mr, iova_start, size_maxmr,
|
"num_hwpages=%x", e_mr, iova_start, size_maxmr,
|
||||||
num_kpages, num_hwpages);
|
num_kpages, num_hwpages);
|
||||||
goto ehca_reg_internal_maxmr_exit1;
|
goto ehca_reg_internal_maxmr_exit1;
|
||||||
|
@ -1573,8 +1573,8 @@ int ehca_reg_maxmr(struct ehca_shca *shca,
|
||||||
(u64)iova_start, hipz_acl, e_pd->fw_pd,
|
(u64)iova_start, hipz_acl, e_pd->fw_pd,
|
||||||
&hipzout);
|
&hipzout);
|
||||||
if (h_ret != H_SUCCESS) {
|
if (h_ret != H_SUCCESS) {
|
||||||
ehca_err(&shca->ib_device, "hipz_reg_smr failed, h_ret=%li "
|
ehca_err(&shca->ib_device, "hipz_reg_smr failed, h_ret=%lli "
|
||||||
"e_origmr=%p hca_hndl=%lx mr_hndl=%lx lkey=%x",
|
"e_origmr=%p hca_hndl=%llx mr_hndl=%llx lkey=%x",
|
||||||
h_ret, e_origmr, shca->ipz_hca_handle.handle,
|
h_ret, e_origmr, shca->ipz_hca_handle.handle,
|
||||||
e_origmr->ipz_mr_handle.handle,
|
e_origmr->ipz_mr_handle.handle,
|
||||||
e_origmr->ib.ib_mr.lkey);
|
e_origmr->ib.ib_mr.lkey);
|
||||||
|
@ -1651,28 +1651,28 @@ int ehca_mr_chk_buf_and_calc_size(struct ib_phys_buf *phys_buf_array,
|
||||||
/* check first buffer */
|
/* check first buffer */
|
||||||
if (((u64)iova_start & ~PAGE_MASK) != (pbuf->addr & ~PAGE_MASK)) {
|
if (((u64)iova_start & ~PAGE_MASK) != (pbuf->addr & ~PAGE_MASK)) {
|
||||||
ehca_gen_err("iova_start/addr mismatch, iova_start=%p "
|
ehca_gen_err("iova_start/addr mismatch, iova_start=%p "
|
||||||
"pbuf->addr=%lx pbuf->size=%lx",
|
"pbuf->addr=%llx pbuf->size=%llx",
|
||||||
iova_start, pbuf->addr, pbuf->size);
|
iova_start, pbuf->addr, pbuf->size);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
if (((pbuf->addr + pbuf->size) % PAGE_SIZE) &&
|
if (((pbuf->addr + pbuf->size) % PAGE_SIZE) &&
|
||||||
(num_phys_buf > 1)) {
|
(num_phys_buf > 1)) {
|
||||||
ehca_gen_err("addr/size mismatch in 1st buf, pbuf->addr=%lx "
|
ehca_gen_err("addr/size mismatch in 1st buf, pbuf->addr=%llx "
|
||||||
"pbuf->size=%lx", pbuf->addr, pbuf->size);
|
"pbuf->size=%llx", pbuf->addr, pbuf->size);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < num_phys_buf; i++) {
|
for (i = 0; i < num_phys_buf; i++) {
|
||||||
if ((i > 0) && (pbuf->addr % PAGE_SIZE)) {
|
if ((i > 0) && (pbuf->addr % PAGE_SIZE)) {
|
||||||
ehca_gen_err("bad address, i=%x pbuf->addr=%lx "
|
ehca_gen_err("bad address, i=%x pbuf->addr=%llx "
|
||||||
"pbuf->size=%lx",
|
"pbuf->size=%llx",
|
||||||
i, pbuf->addr, pbuf->size);
|
i, pbuf->addr, pbuf->size);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
if (((i > 0) && /* not 1st */
|
if (((i > 0) && /* not 1st */
|
||||||
(i < (num_phys_buf - 1)) && /* not last */
|
(i < (num_phys_buf - 1)) && /* not last */
|
||||||
(pbuf->size % PAGE_SIZE)) || (pbuf->size == 0)) {
|
(pbuf->size % PAGE_SIZE)) || (pbuf->size == 0)) {
|
||||||
ehca_gen_err("bad size, i=%x pbuf->size=%lx",
|
ehca_gen_err("bad size, i=%x pbuf->size=%llx",
|
||||||
i, pbuf->size);
|
i, pbuf->size);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
@ -1705,7 +1705,7 @@ int ehca_fmr_check_page_list(struct ehca_mr *e_fmr,
|
||||||
page = page_list;
|
page = page_list;
|
||||||
for (i = 0; i < list_len; i++) {
|
for (i = 0; i < list_len; i++) {
|
||||||
if (*page % e_fmr->fmr_page_size) {
|
if (*page % e_fmr->fmr_page_size) {
|
||||||
ehca_gen_err("bad page, i=%x *page=%lx page=%p fmr=%p "
|
ehca_gen_err("bad page, i=%x *page=%llx page=%p fmr=%p "
|
||||||
"fmr_page_size=%x", i, *page, page, e_fmr,
|
"fmr_page_size=%x", i, *page, page, e_fmr,
|
||||||
e_fmr->fmr_page_size);
|
e_fmr->fmr_page_size);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
@ -1743,9 +1743,9 @@ static int ehca_set_pagebuf_user1(struct ehca_mr_pginfo *pginfo,
|
||||||
(pginfo->next_hwpage *
|
(pginfo->next_hwpage *
|
||||||
pginfo->hwpage_size));
|
pginfo->hwpage_size));
|
||||||
if ( !(*kpage) ) {
|
if ( !(*kpage) ) {
|
||||||
ehca_gen_err("pgaddr=%lx "
|
ehca_gen_err("pgaddr=%llx "
|
||||||
"chunk->page_list[i]=%lx "
|
"chunk->page_list[i]=%llx "
|
||||||
"i=%x next_hwpage=%lx",
|
"i=%x next_hwpage=%llx",
|
||||||
pgaddr, (u64)sg_dma_address(
|
pgaddr, (u64)sg_dma_address(
|
||||||
&chunk->page_list[i]),
|
&chunk->page_list[i]),
|
||||||
i, pginfo->next_hwpage);
|
i, pginfo->next_hwpage);
|
||||||
|
@ -1795,11 +1795,11 @@ static int ehca_check_kpages_per_ate(struct scatterlist *page_list,
|
||||||
for (t = start_idx; t <= end_idx; t++) {
|
for (t = start_idx; t <= end_idx; t++) {
|
||||||
u64 pgaddr = page_to_pfn(sg_page(&page_list[t])) << PAGE_SHIFT;
|
u64 pgaddr = page_to_pfn(sg_page(&page_list[t])) << PAGE_SHIFT;
|
||||||
if (ehca_debug_level >= 3)
|
if (ehca_debug_level >= 3)
|
||||||
ehca_gen_dbg("chunk_page=%lx value=%016lx", pgaddr,
|
ehca_gen_dbg("chunk_page=%llx value=%016llx", pgaddr,
|
||||||
*(u64 *)abs_to_virt(phys_to_abs(pgaddr)));
|
*(u64 *)abs_to_virt(phys_to_abs(pgaddr)));
|
||||||
if (pgaddr - PAGE_SIZE != *prev_pgaddr) {
|
if (pgaddr - PAGE_SIZE != *prev_pgaddr) {
|
||||||
ehca_gen_err("uncontiguous page found pgaddr=%lx "
|
ehca_gen_err("uncontiguous page found pgaddr=%llx "
|
||||||
"prev_pgaddr=%lx page_list_i=%x",
|
"prev_pgaddr=%llx page_list_i=%x",
|
||||||
pgaddr, *prev_pgaddr, t);
|
pgaddr, *prev_pgaddr, t);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
@ -1833,7 +1833,7 @@ static int ehca_set_pagebuf_user2(struct ehca_mr_pginfo *pginfo,
|
||||||
<< PAGE_SHIFT );
|
<< PAGE_SHIFT );
|
||||||
*kpage = phys_to_abs(pgaddr);
|
*kpage = phys_to_abs(pgaddr);
|
||||||
if ( !(*kpage) ) {
|
if ( !(*kpage) ) {
|
||||||
ehca_gen_err("pgaddr=%lx i=%x",
|
ehca_gen_err("pgaddr=%llx i=%x",
|
||||||
pgaddr, i);
|
pgaddr, i);
|
||||||
ret = -EFAULT;
|
ret = -EFAULT;
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -1846,8 +1846,8 @@ static int ehca_set_pagebuf_user2(struct ehca_mr_pginfo *pginfo,
|
||||||
if (pginfo->hwpage_cnt) {
|
if (pginfo->hwpage_cnt) {
|
||||||
ehca_gen_err(
|
ehca_gen_err(
|
||||||
"invalid alignment "
|
"invalid alignment "
|
||||||
"pgaddr=%lx i=%x "
|
"pgaddr=%llx i=%x "
|
||||||
"mr_pgsize=%lx",
|
"mr_pgsize=%llx",
|
||||||
pgaddr, i,
|
pgaddr, i,
|
||||||
pginfo->hwpage_size);
|
pginfo->hwpage_size);
|
||||||
ret = -EFAULT;
|
ret = -EFAULT;
|
||||||
|
@ -1866,8 +1866,8 @@ static int ehca_set_pagebuf_user2(struct ehca_mr_pginfo *pginfo,
|
||||||
if (ehca_debug_level >= 3) {
|
if (ehca_debug_level >= 3) {
|
||||||
u64 val = *(u64 *)abs_to_virt(
|
u64 val = *(u64 *)abs_to_virt(
|
||||||
phys_to_abs(pgaddr));
|
phys_to_abs(pgaddr));
|
||||||
ehca_gen_dbg("kpage=%lx chunk_page=%lx "
|
ehca_gen_dbg("kpage=%llx chunk_page=%llx "
|
||||||
"value=%016lx",
|
"value=%016llx",
|
||||||
*kpage, pgaddr, val);
|
*kpage, pgaddr, val);
|
||||||
}
|
}
|
||||||
prev_pgaddr = pgaddr;
|
prev_pgaddr = pgaddr;
|
||||||
|
@ -1944,9 +1944,9 @@ static int ehca_set_pagebuf_phys(struct ehca_mr_pginfo *pginfo,
|
||||||
if ((pginfo->kpage_cnt >= pginfo->num_kpages) ||
|
if ((pginfo->kpage_cnt >= pginfo->num_kpages) ||
|
||||||
(pginfo->hwpage_cnt >= pginfo->num_hwpages)) {
|
(pginfo->hwpage_cnt >= pginfo->num_hwpages)) {
|
||||||
ehca_gen_err("kpage_cnt >= num_kpages, "
|
ehca_gen_err("kpage_cnt >= num_kpages, "
|
||||||
"kpage_cnt=%lx num_kpages=%lx "
|
"kpage_cnt=%llx num_kpages=%llx "
|
||||||
"hwpage_cnt=%lx "
|
"hwpage_cnt=%llx "
|
||||||
"num_hwpages=%lx i=%x",
|
"num_hwpages=%llx i=%x",
|
||||||
pginfo->kpage_cnt,
|
pginfo->kpage_cnt,
|
||||||
pginfo->num_kpages,
|
pginfo->num_kpages,
|
||||||
pginfo->hwpage_cnt,
|
pginfo->hwpage_cnt,
|
||||||
|
@ -1957,8 +1957,8 @@ static int ehca_set_pagebuf_phys(struct ehca_mr_pginfo *pginfo,
|
||||||
(pbuf->addr & ~(pginfo->hwpage_size - 1)) +
|
(pbuf->addr & ~(pginfo->hwpage_size - 1)) +
|
||||||
(pginfo->next_hwpage * pginfo->hwpage_size));
|
(pginfo->next_hwpage * pginfo->hwpage_size));
|
||||||
if ( !(*kpage) && pbuf->addr ) {
|
if ( !(*kpage) && pbuf->addr ) {
|
||||||
ehca_gen_err("pbuf->addr=%lx pbuf->size=%lx "
|
ehca_gen_err("pbuf->addr=%llx pbuf->size=%llx "
|
||||||
"next_hwpage=%lx", pbuf->addr,
|
"next_hwpage=%llx", pbuf->addr,
|
||||||
pbuf->size, pginfo->next_hwpage);
|
pbuf->size, pginfo->next_hwpage);
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
|
@ -1996,8 +1996,8 @@ static int ehca_set_pagebuf_fmr(struct ehca_mr_pginfo *pginfo,
|
||||||
*kpage = phys_to_abs((*fmrlist & ~(pginfo->hwpage_size - 1)) +
|
*kpage = phys_to_abs((*fmrlist & ~(pginfo->hwpage_size - 1)) +
|
||||||
pginfo->next_hwpage * pginfo->hwpage_size);
|
pginfo->next_hwpage * pginfo->hwpage_size);
|
||||||
if ( !(*kpage) ) {
|
if ( !(*kpage) ) {
|
||||||
ehca_gen_err("*fmrlist=%lx fmrlist=%p "
|
ehca_gen_err("*fmrlist=%llx fmrlist=%p "
|
||||||
"next_listelem=%lx next_hwpage=%lx",
|
"next_listelem=%llx next_hwpage=%llx",
|
||||||
*fmrlist, fmrlist,
|
*fmrlist, fmrlist,
|
||||||
pginfo->u.fmr.next_listelem,
|
pginfo->u.fmr.next_listelem,
|
||||||
pginfo->next_hwpage);
|
pginfo->next_hwpage);
|
||||||
|
@ -2025,7 +2025,7 @@ static int ehca_set_pagebuf_fmr(struct ehca_mr_pginfo *pginfo,
|
||||||
~(pginfo->hwpage_size - 1));
|
~(pginfo->hwpage_size - 1));
|
||||||
if (prev + pginfo->u.fmr.fmr_pgsize != p) {
|
if (prev + pginfo->u.fmr.fmr_pgsize != p) {
|
||||||
ehca_gen_err("uncontiguous fmr pages "
|
ehca_gen_err("uncontiguous fmr pages "
|
||||||
"found prev=%lx p=%lx "
|
"found prev=%llx p=%llx "
|
||||||
"idx=%x", prev, p, i + j);
|
"idx=%x", prev, p, i + j);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -331,7 +331,7 @@ static inline int init_qp_queue(struct ehca_shca *shca,
|
||||||
if (cnt == (nr_q_pages - 1)) { /* last page! */
|
if (cnt == (nr_q_pages - 1)) { /* last page! */
|
||||||
if (h_ret != expected_hret) {
|
if (h_ret != expected_hret) {
|
||||||
ehca_err(ib_dev, "hipz_qp_register_rpage() "
|
ehca_err(ib_dev, "hipz_qp_register_rpage() "
|
||||||
"h_ret=%li", h_ret);
|
"h_ret=%lli", h_ret);
|
||||||
ret = ehca2ib_return_code(h_ret);
|
ret = ehca2ib_return_code(h_ret);
|
||||||
goto init_qp_queue1;
|
goto init_qp_queue1;
|
||||||
}
|
}
|
||||||
|
@ -345,7 +345,7 @@ static inline int init_qp_queue(struct ehca_shca *shca,
|
||||||
} else {
|
} else {
|
||||||
if (h_ret != H_PAGE_REGISTERED) {
|
if (h_ret != H_PAGE_REGISTERED) {
|
||||||
ehca_err(ib_dev, "hipz_qp_register_rpage() "
|
ehca_err(ib_dev, "hipz_qp_register_rpage() "
|
||||||
"h_ret=%li", h_ret);
|
"h_ret=%lli", h_ret);
|
||||||
ret = ehca2ib_return_code(h_ret);
|
ret = ehca2ib_return_code(h_ret);
|
||||||
goto init_qp_queue1;
|
goto init_qp_queue1;
|
||||||
}
|
}
|
||||||
|
@ -709,7 +709,7 @@ static struct ehca_qp *internal_create_qp(
|
||||||
|
|
||||||
h_ret = hipz_h_alloc_resource_qp(shca->ipz_hca_handle, &parms);
|
h_ret = hipz_h_alloc_resource_qp(shca->ipz_hca_handle, &parms);
|
||||||
if (h_ret != H_SUCCESS) {
|
if (h_ret != H_SUCCESS) {
|
||||||
ehca_err(pd->device, "h_alloc_resource_qp() failed h_ret=%li",
|
ehca_err(pd->device, "h_alloc_resource_qp() failed h_ret=%lli",
|
||||||
h_ret);
|
h_ret);
|
||||||
ret = ehca2ib_return_code(h_ret);
|
ret = ehca2ib_return_code(h_ret);
|
||||||
goto create_qp_exit1;
|
goto create_qp_exit1;
|
||||||
|
@ -1010,7 +1010,7 @@ struct ib_srq *ehca_create_srq(struct ib_pd *pd,
|
||||||
mqpcb, my_qp->galpas.kernel);
|
mqpcb, my_qp->galpas.kernel);
|
||||||
if (hret != H_SUCCESS) {
|
if (hret != H_SUCCESS) {
|
||||||
ehca_err(pd->device, "Could not modify SRQ to INIT "
|
ehca_err(pd->device, "Could not modify SRQ to INIT "
|
||||||
"ehca_qp=%p qp_num=%x h_ret=%li",
|
"ehca_qp=%p qp_num=%x h_ret=%lli",
|
||||||
my_qp, my_qp->real_qp_num, hret);
|
my_qp, my_qp->real_qp_num, hret);
|
||||||
goto create_srq2;
|
goto create_srq2;
|
||||||
}
|
}
|
||||||
|
@ -1024,7 +1024,7 @@ struct ib_srq *ehca_create_srq(struct ib_pd *pd,
|
||||||
mqpcb, my_qp->galpas.kernel);
|
mqpcb, my_qp->galpas.kernel);
|
||||||
if (hret != H_SUCCESS) {
|
if (hret != H_SUCCESS) {
|
||||||
ehca_err(pd->device, "Could not enable SRQ "
|
ehca_err(pd->device, "Could not enable SRQ "
|
||||||
"ehca_qp=%p qp_num=%x h_ret=%li",
|
"ehca_qp=%p qp_num=%x h_ret=%lli",
|
||||||
my_qp, my_qp->real_qp_num, hret);
|
my_qp, my_qp->real_qp_num, hret);
|
||||||
goto create_srq2;
|
goto create_srq2;
|
||||||
}
|
}
|
||||||
|
@ -1038,7 +1038,7 @@ struct ib_srq *ehca_create_srq(struct ib_pd *pd,
|
||||||
mqpcb, my_qp->galpas.kernel);
|
mqpcb, my_qp->galpas.kernel);
|
||||||
if (hret != H_SUCCESS) {
|
if (hret != H_SUCCESS) {
|
||||||
ehca_err(pd->device, "Could not modify SRQ to RTR "
|
ehca_err(pd->device, "Could not modify SRQ to RTR "
|
||||||
"ehca_qp=%p qp_num=%x h_ret=%li",
|
"ehca_qp=%p qp_num=%x h_ret=%lli",
|
||||||
my_qp, my_qp->real_qp_num, hret);
|
my_qp, my_qp->real_qp_num, hret);
|
||||||
goto create_srq2;
|
goto create_srq2;
|
||||||
}
|
}
|
||||||
|
@ -1078,7 +1078,7 @@ static int prepare_sqe_rts(struct ehca_qp *my_qp, struct ehca_shca *shca,
|
||||||
&bad_send_wqe_p, NULL, 2);
|
&bad_send_wqe_p, NULL, 2);
|
||||||
if (h_ret != H_SUCCESS) {
|
if (h_ret != H_SUCCESS) {
|
||||||
ehca_err(&shca->ib_device, "hipz_h_disable_and_get_wqe() failed"
|
ehca_err(&shca->ib_device, "hipz_h_disable_and_get_wqe() failed"
|
||||||
" ehca_qp=%p qp_num=%x h_ret=%li",
|
" ehca_qp=%p qp_num=%x h_ret=%lli",
|
||||||
my_qp, qp_num, h_ret);
|
my_qp, qp_num, h_ret);
|
||||||
return ehca2ib_return_code(h_ret);
|
return ehca2ib_return_code(h_ret);
|
||||||
}
|
}
|
||||||
|
@ -1134,7 +1134,7 @@ static int calc_left_cqes(u64 wqe_p, struct ipz_queue *ipz_queue,
|
||||||
|
|
||||||
if (ipz_queue_abs_to_offset(ipz_queue, wqe_p, &q_ofs)) {
|
if (ipz_queue_abs_to_offset(ipz_queue, wqe_p, &q_ofs)) {
|
||||||
ehca_gen_err("Invalid offset for calculating left cqes "
|
ehca_gen_err("Invalid offset for calculating left cqes "
|
||||||
"wqe_p=%#lx wqe_v=%p\n", wqe_p, wqe_v);
|
"wqe_p=%#llx wqe_v=%p\n", wqe_p, wqe_v);
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1168,7 +1168,7 @@ static int check_for_left_cqes(struct ehca_qp *my_qp, struct ehca_shca *shca)
|
||||||
&send_wqe_p, &recv_wqe_p, 4);
|
&send_wqe_p, &recv_wqe_p, 4);
|
||||||
if (h_ret != H_SUCCESS) {
|
if (h_ret != H_SUCCESS) {
|
||||||
ehca_err(&shca->ib_device, "disable_and_get_wqe() "
|
ehca_err(&shca->ib_device, "disable_and_get_wqe() "
|
||||||
"failed ehca_qp=%p qp_num=%x h_ret=%li",
|
"failed ehca_qp=%p qp_num=%x h_ret=%lli",
|
||||||
my_qp, qp_num, h_ret);
|
my_qp, qp_num, h_ret);
|
||||||
return ehca2ib_return_code(h_ret);
|
return ehca2ib_return_code(h_ret);
|
||||||
}
|
}
|
||||||
|
@ -1261,7 +1261,7 @@ static int internal_modify_qp(struct ib_qp *ibqp,
|
||||||
mqpcb, my_qp->galpas.kernel);
|
mqpcb, my_qp->galpas.kernel);
|
||||||
if (h_ret != H_SUCCESS) {
|
if (h_ret != H_SUCCESS) {
|
||||||
ehca_err(ibqp->device, "hipz_h_query_qp() failed "
|
ehca_err(ibqp->device, "hipz_h_query_qp() failed "
|
||||||
"ehca_qp=%p qp_num=%x h_ret=%li",
|
"ehca_qp=%p qp_num=%x h_ret=%lli",
|
||||||
my_qp, ibqp->qp_num, h_ret);
|
my_qp, ibqp->qp_num, h_ret);
|
||||||
ret = ehca2ib_return_code(h_ret);
|
ret = ehca2ib_return_code(h_ret);
|
||||||
goto modify_qp_exit1;
|
goto modify_qp_exit1;
|
||||||
|
@ -1690,7 +1690,7 @@ static int internal_modify_qp(struct ib_qp *ibqp,
|
||||||
|
|
||||||
if (h_ret != H_SUCCESS) {
|
if (h_ret != H_SUCCESS) {
|
||||||
ret = ehca2ib_return_code(h_ret);
|
ret = ehca2ib_return_code(h_ret);
|
||||||
ehca_err(ibqp->device, "hipz_h_modify_qp() failed h_ret=%li "
|
ehca_err(ibqp->device, "hipz_h_modify_qp() failed h_ret=%lli "
|
||||||
"ehca_qp=%p qp_num=%x", h_ret, my_qp, ibqp->qp_num);
|
"ehca_qp=%p qp_num=%x", h_ret, my_qp, ibqp->qp_num);
|
||||||
goto modify_qp_exit2;
|
goto modify_qp_exit2;
|
||||||
}
|
}
|
||||||
|
@ -1723,7 +1723,7 @@ static int internal_modify_qp(struct ib_qp *ibqp,
|
||||||
ret = ehca2ib_return_code(h_ret);
|
ret = ehca2ib_return_code(h_ret);
|
||||||
ehca_err(ibqp->device, "ENABLE in context of "
|
ehca_err(ibqp->device, "ENABLE in context of "
|
||||||
"RESET_2_INIT failed! Maybe you didn't get "
|
"RESET_2_INIT failed! Maybe you didn't get "
|
||||||
"a LID h_ret=%li ehca_qp=%p qp_num=%x",
|
"a LID h_ret=%lli ehca_qp=%p qp_num=%x",
|
||||||
h_ret, my_qp, ibqp->qp_num);
|
h_ret, my_qp, ibqp->qp_num);
|
||||||
goto modify_qp_exit2;
|
goto modify_qp_exit2;
|
||||||
}
|
}
|
||||||
|
@ -1909,7 +1909,7 @@ int ehca_query_qp(struct ib_qp *qp,
|
||||||
if (h_ret != H_SUCCESS) {
|
if (h_ret != H_SUCCESS) {
|
||||||
ret = ehca2ib_return_code(h_ret);
|
ret = ehca2ib_return_code(h_ret);
|
||||||
ehca_err(qp->device, "hipz_h_query_qp() failed "
|
ehca_err(qp->device, "hipz_h_query_qp() failed "
|
||||||
"ehca_qp=%p qp_num=%x h_ret=%li",
|
"ehca_qp=%p qp_num=%x h_ret=%lli",
|
||||||
my_qp, qp->qp_num, h_ret);
|
my_qp, qp->qp_num, h_ret);
|
||||||
goto query_qp_exit1;
|
goto query_qp_exit1;
|
||||||
}
|
}
|
||||||
|
@ -2074,7 +2074,7 @@ int ehca_modify_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr,
|
||||||
|
|
||||||
if (h_ret != H_SUCCESS) {
|
if (h_ret != H_SUCCESS) {
|
||||||
ret = ehca2ib_return_code(h_ret);
|
ret = ehca2ib_return_code(h_ret);
|
||||||
ehca_err(ibsrq->device, "hipz_h_modify_qp() failed h_ret=%li "
|
ehca_err(ibsrq->device, "hipz_h_modify_qp() failed h_ret=%lli "
|
||||||
"ehca_qp=%p qp_num=%x",
|
"ehca_qp=%p qp_num=%x",
|
||||||
h_ret, my_qp, my_qp->real_qp_num);
|
h_ret, my_qp, my_qp->real_qp_num);
|
||||||
}
|
}
|
||||||
|
@ -2108,7 +2108,7 @@ int ehca_query_srq(struct ib_srq *srq, struct ib_srq_attr *srq_attr)
|
||||||
if (h_ret != H_SUCCESS) {
|
if (h_ret != H_SUCCESS) {
|
||||||
ret = ehca2ib_return_code(h_ret);
|
ret = ehca2ib_return_code(h_ret);
|
||||||
ehca_err(srq->device, "hipz_h_query_qp() failed "
|
ehca_err(srq->device, "hipz_h_query_qp() failed "
|
||||||
"ehca_qp=%p qp_num=%x h_ret=%li",
|
"ehca_qp=%p qp_num=%x h_ret=%lli",
|
||||||
my_qp, my_qp->real_qp_num, h_ret);
|
my_qp, my_qp->real_qp_num, h_ret);
|
||||||
goto query_srq_exit1;
|
goto query_srq_exit1;
|
||||||
}
|
}
|
||||||
|
@ -2179,7 +2179,7 @@ static int internal_destroy_qp(struct ib_device *dev, struct ehca_qp *my_qp,
|
||||||
|
|
||||||
h_ret = hipz_h_destroy_qp(shca->ipz_hca_handle, my_qp);
|
h_ret = hipz_h_destroy_qp(shca->ipz_hca_handle, my_qp);
|
||||||
if (h_ret != H_SUCCESS) {
|
if (h_ret != H_SUCCESS) {
|
||||||
ehca_err(dev, "hipz_h_destroy_qp() failed h_ret=%li "
|
ehca_err(dev, "hipz_h_destroy_qp() failed h_ret=%lli "
|
||||||
"ehca_qp=%p qp_num=%x", h_ret, my_qp, qp_num);
|
"ehca_qp=%p qp_num=%x", h_ret, my_qp, qp_num);
|
||||||
return ehca2ib_return_code(h_ret);
|
return ehca2ib_return_code(h_ret);
|
||||||
}
|
}
|
||||||
|
|
|
@ -822,7 +822,7 @@ static int generate_flush_cqes(struct ehca_qp *my_qp, struct ib_cq *cq,
|
||||||
offset = qmap->next_wqe_idx * ipz_queue->qe_size;
|
offset = qmap->next_wqe_idx * ipz_queue->qe_size;
|
||||||
wqe = (struct ehca_wqe *)ipz_qeit_calc(ipz_queue, offset);
|
wqe = (struct ehca_wqe *)ipz_qeit_calc(ipz_queue, offset);
|
||||||
if (!wqe) {
|
if (!wqe) {
|
||||||
ehca_err(cq->device, "Invalid wqe offset=%#lx on "
|
ehca_err(cq->device, "Invalid wqe offset=%#llx on "
|
||||||
"qp_num=%#x", offset, my_qp->real_qp_num);
|
"qp_num=%#x", offset, my_qp->real_qp_num);
|
||||||
return nr;
|
return nr;
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,7 +85,7 @@ u64 ehca_define_sqp(struct ehca_shca *shca,
|
||||||
|
|
||||||
if (ret != H_SUCCESS) {
|
if (ret != H_SUCCESS) {
|
||||||
ehca_err(&shca->ib_device,
|
ehca_err(&shca->ib_device,
|
||||||
"Can't define AQP1 for port %x. h_ret=%li",
|
"Can't define AQP1 for port %x. h_ret=%lli",
|
||||||
port, ret);
|
port, ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -116,7 +116,7 @@ extern int ehca_debug_level;
|
||||||
unsigned char *deb = (unsigned char *)(adr); \
|
unsigned char *deb = (unsigned char *)(adr); \
|
||||||
for (x = 0; x < l; x += 16) { \
|
for (x = 0; x < l; x += 16) { \
|
||||||
printk(KERN_INFO "EHCA_DMP:%s " format \
|
printk(KERN_INFO "EHCA_DMP:%s " format \
|
||||||
" adr=%p ofs=%04x %016lx %016lx\n", \
|
" adr=%p ofs=%04x %016llx %016llx\n", \
|
||||||
__func__, ##args, deb, x, \
|
__func__, ##args, deb, x, \
|
||||||
*((u64 *)&deb[0]), *((u64 *)&deb[8])); \
|
*((u64 *)&deb[0]), *((u64 *)&deb[8])); \
|
||||||
deb += 16; \
|
deb += 16; \
|
||||||
|
|
|
@ -114,7 +114,7 @@ static int ehca_mmap_fw(struct vm_area_struct *vma, struct h_galpas *galpas,
|
||||||
|
|
||||||
physical = galpas->user.fw_handle;
|
physical = galpas->user.fw_handle;
|
||||||
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
||||||
ehca_gen_dbg("vsize=%lx physical=%lx", vsize, physical);
|
ehca_gen_dbg("vsize=%llx physical=%llx", vsize, physical);
|
||||||
/* VM_IO | VM_RESERVED are set by remap_pfn_range() */
|
/* VM_IO | VM_RESERVED are set by remap_pfn_range() */
|
||||||
ret = remap_4k_pfn(vma, vma->vm_start, physical >> EHCA_PAGESHIFT,
|
ret = remap_4k_pfn(vma, vma->vm_start, physical >> EHCA_PAGESHIFT,
|
||||||
vma->vm_page_prot);
|
vma->vm_page_prot);
|
||||||
|
|
|
@ -226,7 +226,7 @@ u64 hipz_h_alloc_resource_eq(const struct ipz_adapter_handle adapter_handle,
|
||||||
u32 *eq_ist)
|
u32 *eq_ist)
|
||||||
{
|
{
|
||||||
u64 ret;
|
u64 ret;
|
||||||
u64 outs[PLPAR_HCALL9_BUFSIZE];
|
unsigned long outs[PLPAR_HCALL9_BUFSIZE];
|
||||||
u64 allocate_controls;
|
u64 allocate_controls;
|
||||||
|
|
||||||
/* resource type */
|
/* resource type */
|
||||||
|
@ -249,7 +249,7 @@ u64 hipz_h_alloc_resource_eq(const struct ipz_adapter_handle adapter_handle,
|
||||||
*eq_ist = (u32)outs[5];
|
*eq_ist = (u32)outs[5];
|
||||||
|
|
||||||
if (ret == H_NOT_ENOUGH_RESOURCES)
|
if (ret == H_NOT_ENOUGH_RESOURCES)
|
||||||
ehca_gen_err("Not enough resource - ret=%li ", ret);
|
ehca_gen_err("Not enough resource - ret=%lli ", ret);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -270,7 +270,7 @@ u64 hipz_h_alloc_resource_cq(const struct ipz_adapter_handle adapter_handle,
|
||||||
struct ehca_alloc_cq_parms *param)
|
struct ehca_alloc_cq_parms *param)
|
||||||
{
|
{
|
||||||
u64 ret;
|
u64 ret;
|
||||||
u64 outs[PLPAR_HCALL9_BUFSIZE];
|
unsigned long outs[PLPAR_HCALL9_BUFSIZE];
|
||||||
|
|
||||||
ret = ehca_plpar_hcall9(H_ALLOC_RESOURCE, outs,
|
ret = ehca_plpar_hcall9(H_ALLOC_RESOURCE, outs,
|
||||||
adapter_handle.handle, /* r4 */
|
adapter_handle.handle, /* r4 */
|
||||||
|
@ -287,7 +287,7 @@ u64 hipz_h_alloc_resource_cq(const struct ipz_adapter_handle adapter_handle,
|
||||||
hcp_galpas_ctor(&cq->galpas, outs[5], outs[6]);
|
hcp_galpas_ctor(&cq->galpas, outs[5], outs[6]);
|
||||||
|
|
||||||
if (ret == H_NOT_ENOUGH_RESOURCES)
|
if (ret == H_NOT_ENOUGH_RESOURCES)
|
||||||
ehca_gen_err("Not enough resources. ret=%li", ret);
|
ehca_gen_err("Not enough resources. ret=%lli", ret);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -297,7 +297,7 @@ u64 hipz_h_alloc_resource_qp(const struct ipz_adapter_handle adapter_handle,
|
||||||
{
|
{
|
||||||
u64 ret;
|
u64 ret;
|
||||||
u64 allocate_controls, max_r10_reg, r11, r12;
|
u64 allocate_controls, max_r10_reg, r11, r12;
|
||||||
u64 outs[PLPAR_HCALL9_BUFSIZE];
|
unsigned long outs[PLPAR_HCALL9_BUFSIZE];
|
||||||
|
|
||||||
allocate_controls =
|
allocate_controls =
|
||||||
EHCA_BMASK_SET(H_ALL_RES_QP_ENHANCED_OPS, parms->ext_type)
|
EHCA_BMASK_SET(H_ALL_RES_QP_ENHANCED_OPS, parms->ext_type)
|
||||||
|
@ -362,7 +362,7 @@ u64 hipz_h_alloc_resource_qp(const struct ipz_adapter_handle adapter_handle,
|
||||||
hcp_galpas_ctor(&parms->galpas, outs[6], outs[6]);
|
hcp_galpas_ctor(&parms->galpas, outs[6], outs[6]);
|
||||||
|
|
||||||
if (ret == H_NOT_ENOUGH_RESOURCES)
|
if (ret == H_NOT_ENOUGH_RESOURCES)
|
||||||
ehca_gen_err("Not enough resources. ret=%li", ret);
|
ehca_gen_err("Not enough resources. ret=%lli", ret);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -454,7 +454,7 @@ u64 hipz_h_register_rpage_eq(const struct ipz_adapter_handle adapter_handle,
|
||||||
const u64 count)
|
const u64 count)
|
||||||
{
|
{
|
||||||
if (count != 1) {
|
if (count != 1) {
|
||||||
ehca_gen_err("Ppage counter=%lx", count);
|
ehca_gen_err("Ppage counter=%llx", count);
|
||||||
return H_PARAMETER;
|
return H_PARAMETER;
|
||||||
}
|
}
|
||||||
return hipz_h_register_rpage(adapter_handle,
|
return hipz_h_register_rpage(adapter_handle,
|
||||||
|
@ -489,7 +489,7 @@ u64 hipz_h_register_rpage_cq(const struct ipz_adapter_handle adapter_handle,
|
||||||
const struct h_galpa gal)
|
const struct h_galpa gal)
|
||||||
{
|
{
|
||||||
if (count != 1) {
|
if (count != 1) {
|
||||||
ehca_gen_err("Page counter=%lx", count);
|
ehca_gen_err("Page counter=%llx", count);
|
||||||
return H_PARAMETER;
|
return H_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -508,7 +508,7 @@ u64 hipz_h_register_rpage_qp(const struct ipz_adapter_handle adapter_handle,
|
||||||
const struct h_galpa galpa)
|
const struct h_galpa galpa)
|
||||||
{
|
{
|
||||||
if (count > 1) {
|
if (count > 1) {
|
||||||
ehca_gen_err("Page counter=%lx", count);
|
ehca_gen_err("Page counter=%llx", count);
|
||||||
return H_PARAMETER;
|
return H_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -525,7 +525,7 @@ u64 hipz_h_disable_and_get_wqe(const struct ipz_adapter_handle adapter_handle,
|
||||||
int dis_and_get_function_code)
|
int dis_and_get_function_code)
|
||||||
{
|
{
|
||||||
u64 ret;
|
u64 ret;
|
||||||
u64 outs[PLPAR_HCALL9_BUFSIZE];
|
unsigned long outs[PLPAR_HCALL9_BUFSIZE];
|
||||||
|
|
||||||
ret = ehca_plpar_hcall9(H_DISABLE_AND_GETC, outs,
|
ret = ehca_plpar_hcall9(H_DISABLE_AND_GETC, outs,
|
||||||
adapter_handle.handle, /* r4 */
|
adapter_handle.handle, /* r4 */
|
||||||
|
@ -548,7 +548,7 @@ u64 hipz_h_modify_qp(const struct ipz_adapter_handle adapter_handle,
|
||||||
struct h_galpa gal)
|
struct h_galpa gal)
|
||||||
{
|
{
|
||||||
u64 ret;
|
u64 ret;
|
||||||
u64 outs[PLPAR_HCALL9_BUFSIZE];
|
unsigned long outs[PLPAR_HCALL9_BUFSIZE];
|
||||||
ret = ehca_plpar_hcall9(H_MODIFY_QP, outs,
|
ret = ehca_plpar_hcall9(H_MODIFY_QP, outs,
|
||||||
adapter_handle.handle, /* r4 */
|
adapter_handle.handle, /* r4 */
|
||||||
qp_handle.handle, /* r5 */
|
qp_handle.handle, /* r5 */
|
||||||
|
@ -557,7 +557,7 @@ u64 hipz_h_modify_qp(const struct ipz_adapter_handle adapter_handle,
|
||||||
0, 0, 0, 0, 0);
|
0, 0, 0, 0, 0);
|
||||||
|
|
||||||
if (ret == H_NOT_ENOUGH_RESOURCES)
|
if (ret == H_NOT_ENOUGH_RESOURCES)
|
||||||
ehca_gen_err("Insufficient resources ret=%li", ret);
|
ehca_gen_err("Insufficient resources ret=%lli", ret);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -579,7 +579,7 @@ u64 hipz_h_destroy_qp(const struct ipz_adapter_handle adapter_handle,
|
||||||
struct ehca_qp *qp)
|
struct ehca_qp *qp)
|
||||||
{
|
{
|
||||||
u64 ret;
|
u64 ret;
|
||||||
u64 outs[PLPAR_HCALL9_BUFSIZE];
|
unsigned long outs[PLPAR_HCALL9_BUFSIZE];
|
||||||
|
|
||||||
ret = hcp_galpas_dtor(&qp->galpas);
|
ret = hcp_galpas_dtor(&qp->galpas);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
@ -593,7 +593,7 @@ u64 hipz_h_destroy_qp(const struct ipz_adapter_handle adapter_handle,
|
||||||
qp->ipz_qp_handle.handle, /* r6 */
|
qp->ipz_qp_handle.handle, /* r6 */
|
||||||
0, 0, 0, 0, 0, 0);
|
0, 0, 0, 0, 0, 0);
|
||||||
if (ret == H_HARDWARE)
|
if (ret == H_HARDWARE)
|
||||||
ehca_gen_err("HCA not operational. ret=%li", ret);
|
ehca_gen_err("HCA not operational. ret=%lli", ret);
|
||||||
|
|
||||||
ret = ehca_plpar_hcall_norets(H_FREE_RESOURCE,
|
ret = ehca_plpar_hcall_norets(H_FREE_RESOURCE,
|
||||||
adapter_handle.handle, /* r4 */
|
adapter_handle.handle, /* r4 */
|
||||||
|
@ -601,7 +601,7 @@ u64 hipz_h_destroy_qp(const struct ipz_adapter_handle adapter_handle,
|
||||||
0, 0, 0, 0, 0);
|
0, 0, 0, 0, 0);
|
||||||
|
|
||||||
if (ret == H_RESOURCE)
|
if (ret == H_RESOURCE)
|
||||||
ehca_gen_err("Resource still in use. ret=%li", ret);
|
ehca_gen_err("Resource still in use. ret=%lli", ret);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -625,7 +625,7 @@ u64 hipz_h_define_aqp1(const struct ipz_adapter_handle adapter_handle,
|
||||||
u32 * bma_qp_nr)
|
u32 * bma_qp_nr)
|
||||||
{
|
{
|
||||||
u64 ret;
|
u64 ret;
|
||||||
u64 outs[PLPAR_HCALL9_BUFSIZE];
|
unsigned long outs[PLPAR_HCALL9_BUFSIZE];
|
||||||
|
|
||||||
ret = ehca_plpar_hcall9(H_DEFINE_AQP1, outs,
|
ret = ehca_plpar_hcall9(H_DEFINE_AQP1, outs,
|
||||||
adapter_handle.handle, /* r4 */
|
adapter_handle.handle, /* r4 */
|
||||||
|
@ -636,7 +636,7 @@ u64 hipz_h_define_aqp1(const struct ipz_adapter_handle adapter_handle,
|
||||||
*bma_qp_nr = (u32)outs[1];
|
*bma_qp_nr = (u32)outs[1];
|
||||||
|
|
||||||
if (ret == H_ALIAS_EXIST)
|
if (ret == H_ALIAS_EXIST)
|
||||||
ehca_gen_err("AQP1 already exists. ret=%li", ret);
|
ehca_gen_err("AQP1 already exists. ret=%lli", ret);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -658,7 +658,7 @@ u64 hipz_h_attach_mcqp(const struct ipz_adapter_handle adapter_handle,
|
||||||
0, 0);
|
0, 0);
|
||||||
|
|
||||||
if (ret == H_NOT_ENOUGH_RESOURCES)
|
if (ret == H_NOT_ENOUGH_RESOURCES)
|
||||||
ehca_gen_err("Not enough resources. ret=%li", ret);
|
ehca_gen_err("Not enough resources. ret=%lli", ret);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -697,7 +697,7 @@ u64 hipz_h_destroy_cq(const struct ipz_adapter_handle adapter_handle,
|
||||||
0, 0, 0, 0);
|
0, 0, 0, 0);
|
||||||
|
|
||||||
if (ret == H_RESOURCE)
|
if (ret == H_RESOURCE)
|
||||||
ehca_gen_err("H_FREE_RESOURCE failed ret=%li ", ret);
|
ehca_gen_err("H_FREE_RESOURCE failed ret=%lli ", ret);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -719,7 +719,7 @@ u64 hipz_h_destroy_eq(const struct ipz_adapter_handle adapter_handle,
|
||||||
0, 0, 0, 0, 0);
|
0, 0, 0, 0, 0);
|
||||||
|
|
||||||
if (ret == H_RESOURCE)
|
if (ret == H_RESOURCE)
|
||||||
ehca_gen_err("Resource in use. ret=%li ", ret);
|
ehca_gen_err("Resource in use. ret=%lli ", ret);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -733,7 +733,7 @@ u64 hipz_h_alloc_resource_mr(const struct ipz_adapter_handle adapter_handle,
|
||||||
struct ehca_mr_hipzout_parms *outparms)
|
struct ehca_mr_hipzout_parms *outparms)
|
||||||
{
|
{
|
||||||
u64 ret;
|
u64 ret;
|
||||||
u64 outs[PLPAR_HCALL9_BUFSIZE];
|
unsigned long outs[PLPAR_HCALL9_BUFSIZE];
|
||||||
|
|
||||||
ret = ehca_plpar_hcall9(H_ALLOC_RESOURCE, outs,
|
ret = ehca_plpar_hcall9(H_ALLOC_RESOURCE, outs,
|
||||||
adapter_handle.handle, /* r4 */
|
adapter_handle.handle, /* r4 */
|
||||||
|
@ -774,9 +774,9 @@ u64 hipz_h_register_rpage_mr(const struct ipz_adapter_handle adapter_handle,
|
||||||
|
|
||||||
if ((count > 1) && (logical_address_of_page & (EHCA_PAGESIZE-1))) {
|
if ((count > 1) && (logical_address_of_page & (EHCA_PAGESIZE-1))) {
|
||||||
ehca_gen_err("logical_address_of_page not on a 4k boundary "
|
ehca_gen_err("logical_address_of_page not on a 4k boundary "
|
||||||
"adapter_handle=%lx mr=%p mr_handle=%lx "
|
"adapter_handle=%llx mr=%p mr_handle=%llx "
|
||||||
"pagesize=%x queue_type=%x "
|
"pagesize=%x queue_type=%x "
|
||||||
"logical_address_of_page=%lx count=%lx",
|
"logical_address_of_page=%llx count=%llx",
|
||||||
adapter_handle.handle, mr,
|
adapter_handle.handle, mr,
|
||||||
mr->ipz_mr_handle.handle, pagesize, queue_type,
|
mr->ipz_mr_handle.handle, pagesize, queue_type,
|
||||||
logical_address_of_page, count);
|
logical_address_of_page, count);
|
||||||
|
@ -794,7 +794,7 @@ u64 hipz_h_query_mr(const struct ipz_adapter_handle adapter_handle,
|
||||||
struct ehca_mr_hipzout_parms *outparms)
|
struct ehca_mr_hipzout_parms *outparms)
|
||||||
{
|
{
|
||||||
u64 ret;
|
u64 ret;
|
||||||
u64 outs[PLPAR_HCALL9_BUFSIZE];
|
unsigned long outs[PLPAR_HCALL9_BUFSIZE];
|
||||||
|
|
||||||
ret = ehca_plpar_hcall9(H_QUERY_MR, outs,
|
ret = ehca_plpar_hcall9(H_QUERY_MR, outs,
|
||||||
adapter_handle.handle, /* r4 */
|
adapter_handle.handle, /* r4 */
|
||||||
|
@ -828,7 +828,7 @@ u64 hipz_h_reregister_pmr(const struct ipz_adapter_handle adapter_handle,
|
||||||
struct ehca_mr_hipzout_parms *outparms)
|
struct ehca_mr_hipzout_parms *outparms)
|
||||||
{
|
{
|
||||||
u64 ret;
|
u64 ret;
|
||||||
u64 outs[PLPAR_HCALL9_BUFSIZE];
|
unsigned long outs[PLPAR_HCALL9_BUFSIZE];
|
||||||
|
|
||||||
ret = ehca_plpar_hcall9(H_REREGISTER_PMR, outs,
|
ret = ehca_plpar_hcall9(H_REREGISTER_PMR, outs,
|
||||||
adapter_handle.handle, /* r4 */
|
adapter_handle.handle, /* r4 */
|
||||||
|
@ -855,7 +855,7 @@ u64 hipz_h_register_smr(const struct ipz_adapter_handle adapter_handle,
|
||||||
struct ehca_mr_hipzout_parms *outparms)
|
struct ehca_mr_hipzout_parms *outparms)
|
||||||
{
|
{
|
||||||
u64 ret;
|
u64 ret;
|
||||||
u64 outs[PLPAR_HCALL9_BUFSIZE];
|
unsigned long outs[PLPAR_HCALL9_BUFSIZE];
|
||||||
|
|
||||||
ret = ehca_plpar_hcall9(H_REGISTER_SMR, outs,
|
ret = ehca_plpar_hcall9(H_REGISTER_SMR, outs,
|
||||||
adapter_handle.handle, /* r4 */
|
adapter_handle.handle, /* r4 */
|
||||||
|
@ -877,7 +877,7 @@ u64 hipz_h_alloc_resource_mw(const struct ipz_adapter_handle adapter_handle,
|
||||||
struct ehca_mw_hipzout_parms *outparms)
|
struct ehca_mw_hipzout_parms *outparms)
|
||||||
{
|
{
|
||||||
u64 ret;
|
u64 ret;
|
||||||
u64 outs[PLPAR_HCALL9_BUFSIZE];
|
unsigned long outs[PLPAR_HCALL9_BUFSIZE];
|
||||||
|
|
||||||
ret = ehca_plpar_hcall9(H_ALLOC_RESOURCE, outs,
|
ret = ehca_plpar_hcall9(H_ALLOC_RESOURCE, outs,
|
||||||
adapter_handle.handle, /* r4 */
|
adapter_handle.handle, /* r4 */
|
||||||
|
@ -895,7 +895,7 @@ u64 hipz_h_query_mw(const struct ipz_adapter_handle adapter_handle,
|
||||||
struct ehca_mw_hipzout_parms *outparms)
|
struct ehca_mw_hipzout_parms *outparms)
|
||||||
{
|
{
|
||||||
u64 ret;
|
u64 ret;
|
||||||
u64 outs[PLPAR_HCALL9_BUFSIZE];
|
unsigned long outs[PLPAR_HCALL9_BUFSIZE];
|
||||||
|
|
||||||
ret = ehca_plpar_hcall9(H_QUERY_MW, outs,
|
ret = ehca_plpar_hcall9(H_QUERY_MW, outs,
|
||||||
adapter_handle.handle, /* r4 */
|
adapter_handle.handle, /* r4 */
|
||||||
|
|
|
@ -1462,7 +1462,8 @@ static void __set_data_seg(struct mlx4_wqe_data_seg *dseg, struct ib_sge *sg)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int build_lso_seg(struct mlx4_wqe_lso_seg *wqe, struct ib_send_wr *wr,
|
static int build_lso_seg(struct mlx4_wqe_lso_seg *wqe, struct ib_send_wr *wr,
|
||||||
struct mlx4_ib_qp *qp, unsigned *lso_seg_len)
|
struct mlx4_ib_qp *qp, unsigned *lso_seg_len,
|
||||||
|
__be32 *lso_hdr_sz)
|
||||||
{
|
{
|
||||||
unsigned halign = ALIGN(sizeof *wqe + wr->wr.ud.hlen, 16);
|
unsigned halign = ALIGN(sizeof *wqe + wr->wr.ud.hlen, 16);
|
||||||
|
|
||||||
|
@ -1479,12 +1480,8 @@ static int build_lso_seg(struct mlx4_wqe_lso_seg *wqe, struct ib_send_wr *wr,
|
||||||
|
|
||||||
memcpy(wqe->header, wr->wr.ud.header, wr->wr.ud.hlen);
|
memcpy(wqe->header, wr->wr.ud.header, wr->wr.ud.hlen);
|
||||||
|
|
||||||
/* make sure LSO header is written before overwriting stamping */
|
*lso_hdr_sz = cpu_to_be32((wr->wr.ud.mss - wr->wr.ud.hlen) << 16 |
|
||||||
wmb();
|
wr->wr.ud.hlen);
|
||||||
|
|
||||||
wqe->mss_hdr_size = cpu_to_be32((wr->wr.ud.mss - wr->wr.ud.hlen) << 16 |
|
|
||||||
wr->wr.ud.hlen);
|
|
||||||
|
|
||||||
*lso_seg_len = halign;
|
*lso_seg_len = halign;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1518,6 +1515,9 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
|
||||||
int uninitialized_var(stamp);
|
int uninitialized_var(stamp);
|
||||||
int uninitialized_var(size);
|
int uninitialized_var(size);
|
||||||
unsigned uninitialized_var(seglen);
|
unsigned uninitialized_var(seglen);
|
||||||
|
__be32 dummy;
|
||||||
|
__be32 *lso_wqe;
|
||||||
|
__be32 uninitialized_var(lso_hdr_sz);
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
spin_lock_irqsave(&qp->sq.lock, flags);
|
spin_lock_irqsave(&qp->sq.lock, flags);
|
||||||
|
@ -1525,6 +1525,8 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
|
||||||
ind = qp->sq_next_wqe;
|
ind = qp->sq_next_wqe;
|
||||||
|
|
||||||
for (nreq = 0; wr; ++nreq, wr = wr->next) {
|
for (nreq = 0; wr; ++nreq, wr = wr->next) {
|
||||||
|
lso_wqe = &dummy;
|
||||||
|
|
||||||
if (mlx4_wq_overflow(&qp->sq, nreq, qp->ibqp.send_cq)) {
|
if (mlx4_wq_overflow(&qp->sq, nreq, qp->ibqp.send_cq)) {
|
||||||
err = -ENOMEM;
|
err = -ENOMEM;
|
||||||
*bad_wr = wr;
|
*bad_wr = wr;
|
||||||
|
@ -1606,11 +1608,12 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
|
||||||
size += sizeof (struct mlx4_wqe_datagram_seg) / 16;
|
size += sizeof (struct mlx4_wqe_datagram_seg) / 16;
|
||||||
|
|
||||||
if (wr->opcode == IB_WR_LSO) {
|
if (wr->opcode == IB_WR_LSO) {
|
||||||
err = build_lso_seg(wqe, wr, qp, &seglen);
|
err = build_lso_seg(wqe, wr, qp, &seglen, &lso_hdr_sz);
|
||||||
if (unlikely(err)) {
|
if (unlikely(err)) {
|
||||||
*bad_wr = wr;
|
*bad_wr = wr;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
lso_wqe = (__be32 *) wqe;
|
||||||
wqe += seglen;
|
wqe += seglen;
|
||||||
size += seglen / 16;
|
size += seglen / 16;
|
||||||
}
|
}
|
||||||
|
@ -1652,6 +1655,14 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
|
||||||
for (i = wr->num_sge - 1; i >= 0; --i, --dseg)
|
for (i = wr->num_sge - 1; i >= 0; --i, --dseg)
|
||||||
set_data_seg(dseg, wr->sg_list + i);
|
set_data_seg(dseg, wr->sg_list + i);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Possibly overwrite stamping in cacheline with LSO
|
||||||
|
* segment only after making sure all data segments
|
||||||
|
* are written.
|
||||||
|
*/
|
||||||
|
wmb();
|
||||||
|
*lso_wqe = lso_hdr_sz;
|
||||||
|
|
||||||
ctrl->fence_size = (wr->send_flags & IB_SEND_FENCE ?
|
ctrl->fence_size = (wr->send_flags & IB_SEND_FENCE ?
|
||||||
MLX4_WQE_CTRL_FENCE : 0) | size;
|
MLX4_WQE_CTRL_FENCE : 0) | size;
|
||||||
|
|
||||||
|
@ -1686,7 +1697,6 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
|
||||||
stamp_send_wqe(qp, stamp, size * 16);
|
stamp_send_wqe(qp, stamp, size * 16);
|
||||||
ind = pad_wraparound(qp, ind);
|
ind = pad_wraparound(qp, ind);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
out:
|
out:
|
||||||
|
|
|
@ -106,23 +106,17 @@ int ipoib_open(struct net_device *dev)
|
||||||
|
|
||||||
ipoib_dbg(priv, "bringing up interface\n");
|
ipoib_dbg(priv, "bringing up interface\n");
|
||||||
|
|
||||||
set_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags);
|
if (!test_and_set_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags))
|
||||||
|
napi_enable(&priv->napi);
|
||||||
|
|
||||||
if (ipoib_pkey_dev_delay_open(dev))
|
if (ipoib_pkey_dev_delay_open(dev))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
napi_enable(&priv->napi);
|
if (ipoib_ib_dev_open(dev))
|
||||||
|
goto err_disable;
|
||||||
|
|
||||||
if (ipoib_ib_dev_open(dev)) {
|
if (ipoib_ib_dev_up(dev))
|
||||||
napi_disable(&priv->napi);
|
goto err_stop;
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ipoib_ib_dev_up(dev)) {
|
|
||||||
ipoib_ib_dev_stop(dev, 1);
|
|
||||||
napi_disable(&priv->napi);
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!test_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags)) {
|
if (!test_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags)) {
|
||||||
struct ipoib_dev_priv *cpriv;
|
struct ipoib_dev_priv *cpriv;
|
||||||
|
@ -144,6 +138,15 @@ int ipoib_open(struct net_device *dev)
|
||||||
netif_start_queue(dev);
|
netif_start_queue(dev);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
err_stop:
|
||||||
|
ipoib_ib_dev_stop(dev, 1);
|
||||||
|
|
||||||
|
err_disable:
|
||||||
|
napi_disable(&priv->napi);
|
||||||
|
clear_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags);
|
||||||
|
|
||||||
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ipoib_stop(struct net_device *dev)
|
static int ipoib_stop(struct net_device *dev)
|
||||||
|
|
|
@ -409,7 +409,7 @@ static int ipoib_mcast_join_complete(int status,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mcast->logcount++ < 20) {
|
if (mcast->logcount++ < 20) {
|
||||||
if (status == -ETIMEDOUT) {
|
if (status == -ETIMEDOUT || status == -EAGAIN) {
|
||||||
ipoib_dbg_mcast(priv, "multicast join failed for %pI6, status %d\n",
|
ipoib_dbg_mcast(priv, "multicast join failed for %pI6, status %d\n",
|
||||||
mcast->mcmember.mgid.raw, status);
|
mcast->mcmember.mgid.raw, status);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -61,6 +61,7 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey)
|
||||||
|
|
||||||
ppriv = netdev_priv(pdev);
|
ppriv = netdev_priv(pdev);
|
||||||
|
|
||||||
|
rtnl_lock();
|
||||||
mutex_lock(&ppriv->vlan_mutex);
|
mutex_lock(&ppriv->vlan_mutex);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -111,7 +112,7 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey)
|
||||||
goto device_init_failed;
|
goto device_init_failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
result = register_netdev(priv->dev);
|
result = register_netdevice(priv->dev);
|
||||||
if (result) {
|
if (result) {
|
||||||
ipoib_warn(priv, "failed to initialize; error %i", result);
|
ipoib_warn(priv, "failed to initialize; error %i", result);
|
||||||
goto register_failed;
|
goto register_failed;
|
||||||
|
@ -134,12 +135,13 @@ int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey)
|
||||||
list_add_tail(&priv->list, &ppriv->child_intfs);
|
list_add_tail(&priv->list, &ppriv->child_intfs);
|
||||||
|
|
||||||
mutex_unlock(&ppriv->vlan_mutex);
|
mutex_unlock(&ppriv->vlan_mutex);
|
||||||
|
rtnl_unlock();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
sysfs_failed:
|
sysfs_failed:
|
||||||
ipoib_delete_debug_files(priv->dev);
|
ipoib_delete_debug_files(priv->dev);
|
||||||
unregister_netdev(priv->dev);
|
unregister_netdevice(priv->dev);
|
||||||
|
|
||||||
register_failed:
|
register_failed:
|
||||||
ipoib_dev_cleanup(priv->dev);
|
ipoib_dev_cleanup(priv->dev);
|
||||||
|
@ -149,6 +151,7 @@ device_init_failed:
|
||||||
|
|
||||||
err:
|
err:
|
||||||
mutex_unlock(&ppriv->vlan_mutex);
|
mutex_unlock(&ppriv->vlan_mutex);
|
||||||
|
rtnl_unlock();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -162,10 +165,11 @@ int ipoib_vlan_delete(struct net_device *pdev, unsigned short pkey)
|
||||||
|
|
||||||
ppriv = netdev_priv(pdev);
|
ppriv = netdev_priv(pdev);
|
||||||
|
|
||||||
|
rtnl_lock();
|
||||||
mutex_lock(&ppriv->vlan_mutex);
|
mutex_lock(&ppriv->vlan_mutex);
|
||||||
list_for_each_entry_safe(priv, tpriv, &ppriv->child_intfs, list) {
|
list_for_each_entry_safe(priv, tpriv, &ppriv->child_intfs, list) {
|
||||||
if (priv->pkey == pkey) {
|
if (priv->pkey == pkey) {
|
||||||
unregister_netdev(priv->dev);
|
unregister_netdevice(priv->dev);
|
||||||
ipoib_dev_cleanup(priv->dev);
|
ipoib_dev_cleanup(priv->dev);
|
||||||
list_del(&priv->list);
|
list_del(&priv->list);
|
||||||
free_netdev(priv->dev);
|
free_netdev(priv->dev);
|
||||||
|
@ -175,6 +179,7 @@ int ipoib_vlan_delete(struct net_device *pdev, unsigned short pkey)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mutex_unlock(&ppriv->vlan_mutex);
|
mutex_unlock(&ppriv->vlan_mutex);
|
||||||
|
rtnl_unlock();
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -107,9 +107,9 @@ u64 mlx4_make_profile(struct mlx4_dev *dev,
|
||||||
profile[MLX4_RES_AUXC].num = request->num_qp;
|
profile[MLX4_RES_AUXC].num = request->num_qp;
|
||||||
profile[MLX4_RES_SRQ].num = request->num_srq;
|
profile[MLX4_RES_SRQ].num = request->num_srq;
|
||||||
profile[MLX4_RES_CQ].num = request->num_cq;
|
profile[MLX4_RES_CQ].num = request->num_cq;
|
||||||
profile[MLX4_RES_EQ].num = min(dev_cap->max_eqs,
|
profile[MLX4_RES_EQ].num = min_t(unsigned, dev_cap->max_eqs,
|
||||||
dev_cap->reserved_eqs +
|
dev_cap->reserved_eqs +
|
||||||
num_possible_cpus() + 1);
|
num_possible_cpus() + 1);
|
||||||
profile[MLX4_RES_DMPT].num = request->num_mpt;
|
profile[MLX4_RES_DMPT].num = request->num_mpt;
|
||||||
profile[MLX4_RES_CMPT].num = MLX4_NUM_CMPTS;
|
profile[MLX4_RES_CMPT].num = MLX4_NUM_CMPTS;
|
||||||
profile[MLX4_RES_MTT].num = request->num_mtt;
|
profile[MLX4_RES_MTT].num = request->num_mtt;
|
||||||
|
|
Loading…
Reference in New Issue