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:
Linus Torvalds 2009-01-17 14:28:53 -08:00
commit f3b8436ad9
17 changed files with 189 additions and 171 deletions

View File

@ -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);
} }

View File

@ -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;
} }

View File

@ -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))

View File

@ -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);

View File

@ -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);
} }

View File

@ -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;
} }

View File

@ -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);
} }

View File

@ -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;
} }

View File

@ -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;
} }

View File

@ -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; \

View File

@ -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);

View File

@ -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 */

View File

@ -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:

View File

@ -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)

View File

@ -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 {

View File

@ -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;
} }

View File

@ -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;