提交 4da27d6d 编写于 作者: J Joachim Fenkes 提交者: Roland Dreier

IB/ehca: Move high-volume debug output to higher debug levels

Signed-off-by: NJoachim Fenkes <fenkes@de.ibm.com>
Signed-off-by: NRoland Dreier <rolandd@cisco.com>
上级 863fb09f
...@@ -633,7 +633,7 @@ static inline int find_next_online_cpu(struct ehca_comp_pool *pool) ...@@ -633,7 +633,7 @@ static inline int find_next_online_cpu(struct ehca_comp_pool *pool)
unsigned long flags; unsigned long flags;
WARN_ON_ONCE(!in_interrupt()); WARN_ON_ONCE(!in_interrupt());
if (ehca_debug_level) if (ehca_debug_level >= 3)
ehca_dmp(&cpu_online_map, sizeof(cpumask_t), ""); ehca_dmp(&cpu_online_map, sizeof(cpumask_t), "");
spin_lock_irqsave(&pool->last_cpu_lock, flags); spin_lock_irqsave(&pool->last_cpu_lock, flags);
......
...@@ -85,8 +85,8 @@ module_param_named(lock_hcalls, ehca_lock_hcalls, bool, S_IRUGO); ...@@ -85,8 +85,8 @@ module_param_named(lock_hcalls, ehca_lock_hcalls, bool, S_IRUGO);
MODULE_PARM_DESC(open_aqp1, MODULE_PARM_DESC(open_aqp1,
"AQP1 on startup (0: no (default), 1: yes)"); "AQP1 on startup (0: no (default), 1: yes)");
MODULE_PARM_DESC(debug_level, MODULE_PARM_DESC(debug_level,
"debug level" "Amount of debug output (0: none (default), 1: traces, "
" (0: no debug traces (default), 1: with debug traces)"); "2: some dumps, 3: lots)");
MODULE_PARM_DESC(hw_level, MODULE_PARM_DESC(hw_level,
"hardware level" "hardware level"
" (0: autosensing (default), 1: v. 0.20, 2: v. 0.21)"); " (0: autosensing (default), 1: v. 0.20, 2: v. 0.21)");
...@@ -275,6 +275,7 @@ static int ehca_sense_attributes(struct ehca_shca *shca) ...@@ -275,6 +275,7 @@ static int ehca_sense_attributes(struct ehca_shca *shca)
u64 h_ret; u64 h_ret;
struct hipz_query_hca *rblock; struct hipz_query_hca *rblock;
struct hipz_query_port *port; struct hipz_query_port *port;
const char *loc_code;
static const u32 pgsize_map[] = { static const u32 pgsize_map[] = {
HCA_CAP_MR_PGSIZE_4K, 0x1000, HCA_CAP_MR_PGSIZE_4K, 0x1000,
...@@ -283,6 +284,12 @@ static int ehca_sense_attributes(struct ehca_shca *shca) ...@@ -283,6 +284,12 @@ static int ehca_sense_attributes(struct ehca_shca *shca)
HCA_CAP_MR_PGSIZE_16M, 0x1000000, HCA_CAP_MR_PGSIZE_16M, 0x1000000,
}; };
ehca_gen_dbg("Probing adapter %s...",
shca->ofdev->node->full_name);
loc_code = of_get_property(shca->ofdev->node, "ibm,loc-code", NULL);
if (loc_code)
ehca_gen_dbg(" ... location lode=%s", loc_code);
rblock = ehca_alloc_fw_ctrlblock(GFP_KERNEL); rblock = ehca_alloc_fw_ctrlblock(GFP_KERNEL);
if (!rblock) { if (!rblock) {
ehca_gen_err("Cannot allocate rblock memory."); ehca_gen_err("Cannot allocate rblock memory.");
...@@ -567,8 +574,7 @@ static int ehca_destroy_aqp1(struct ehca_sport *sport) ...@@ -567,8 +574,7 @@ static int ehca_destroy_aqp1(struct ehca_sport *sport)
static ssize_t ehca_show_debug_level(struct device_driver *ddp, char *buf) static ssize_t ehca_show_debug_level(struct device_driver *ddp, char *buf)
{ {
return snprintf(buf, PAGE_SIZE, "%d\n", return snprintf(buf, PAGE_SIZE, "%d\n", ehca_debug_level);
ehca_debug_level);
} }
static ssize_t ehca_store_debug_level(struct device_driver *ddp, static ssize_t ehca_store_debug_level(struct device_driver *ddp,
......
...@@ -1794,8 +1794,9 @@ static int ehca_check_kpages_per_ate(struct scatterlist *page_list, ...@@ -1794,8 +1794,9 @@ static int ehca_check_kpages_per_ate(struct scatterlist *page_list,
int t; int t;
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;
ehca_gen_dbg("chunk_page=%lx value=%016lx", pgaddr, if (ehca_debug_level >= 3)
*(u64 *)abs_to_virt(phys_to_abs(pgaddr))); ehca_gen_dbg("chunk_page=%lx value=%016lx", 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=%lx "
"prev_pgaddr=%lx page_list_i=%x", "prev_pgaddr=%lx page_list_i=%x",
...@@ -1862,10 +1863,13 @@ static int ehca_set_pagebuf_user2(struct ehca_mr_pginfo *pginfo, ...@@ -1862,10 +1863,13 @@ static int ehca_set_pagebuf_user2(struct ehca_mr_pginfo *pginfo,
pgaddr & pgaddr &
~(pginfo->hwpage_size - 1)); ~(pginfo->hwpage_size - 1));
} }
ehca_gen_dbg("kpage=%lx chunk_page=%lx " if (ehca_debug_level >= 3) {
"value=%016lx", *kpage, pgaddr, u64 val = *(u64 *)abs_to_virt(
*(u64 *)abs_to_virt( phys_to_abs(pgaddr));
phys_to_abs(pgaddr))); ehca_gen_dbg("kpage=%lx chunk_page=%lx "
"value=%016lx",
*kpage, pgaddr, val);
}
prev_pgaddr = pgaddr; prev_pgaddr = pgaddr;
i++; i++;
pginfo->kpage_cnt++; pginfo->kpage_cnt++;
......
...@@ -966,7 +966,7 @@ static int prepare_sqe_rts(struct ehca_qp *my_qp, struct ehca_shca *shca, ...@@ -966,7 +966,7 @@ static int prepare_sqe_rts(struct ehca_qp *my_qp, struct ehca_shca *shca,
qp_num, bad_send_wqe_p); qp_num, bad_send_wqe_p);
/* convert wqe pointer to vadr */ /* convert wqe pointer to vadr */
bad_send_wqe_v = abs_to_virt((u64)bad_send_wqe_p); bad_send_wqe_v = abs_to_virt((u64)bad_send_wqe_p);
if (ehca_debug_level) if (ehca_debug_level >= 2)
ehca_dmp(bad_send_wqe_v, 32, "qp_num=%x bad_wqe", qp_num); ehca_dmp(bad_send_wqe_v, 32, "qp_num=%x bad_wqe", qp_num);
squeue = &my_qp->ipz_squeue; squeue = &my_qp->ipz_squeue;
if (ipz_queue_abs_to_offset(squeue, (u64)bad_send_wqe_p, &q_ofs)) { if (ipz_queue_abs_to_offset(squeue, (u64)bad_send_wqe_p, &q_ofs)) {
...@@ -979,7 +979,7 @@ static int prepare_sqe_rts(struct ehca_qp *my_qp, struct ehca_shca *shca, ...@@ -979,7 +979,7 @@ static int prepare_sqe_rts(struct ehca_qp *my_qp, struct ehca_shca *shca,
wqe = (struct ehca_wqe *)ipz_qeit_calc(squeue, q_ofs); wqe = (struct ehca_wqe *)ipz_qeit_calc(squeue, q_ofs);
*bad_wqe_cnt = 0; *bad_wqe_cnt = 0;
while (wqe->optype != 0xff && wqe->wqef != 0xff) { while (wqe->optype != 0xff && wqe->wqef != 0xff) {
if (ehca_debug_level) if (ehca_debug_level >= 2)
ehca_dmp(wqe, 32, "qp_num=%x wqe", qp_num); ehca_dmp(wqe, 32, "qp_num=%x wqe", qp_num);
wqe->nr_of_data_seg = 0; /* suppress data access */ wqe->nr_of_data_seg = 0; /* suppress data access */
wqe->wqef = WQEF_PURGE; /* WQE to be purged */ wqe->wqef = WQEF_PURGE; /* WQE to be purged */
...@@ -1451,7 +1451,7 @@ static int internal_modify_qp(struct ib_qp *ibqp, ...@@ -1451,7 +1451,7 @@ static int internal_modify_qp(struct ib_qp *ibqp,
/* no support for max_send/recv_sge yet */ /* no support for max_send/recv_sge yet */
} }
if (ehca_debug_level) if (ehca_debug_level >= 2)
ehca_dmp(mqpcb, 4*70, "qp_num=%x", ibqp->qp_num); ehca_dmp(mqpcb, 4*70, "qp_num=%x", ibqp->qp_num);
h_ret = hipz_h_modify_qp(shca->ipz_hca_handle, h_ret = hipz_h_modify_qp(shca->ipz_hca_handle,
...@@ -1766,7 +1766,7 @@ int ehca_query_qp(struct ib_qp *qp, ...@@ -1766,7 +1766,7 @@ int ehca_query_qp(struct ib_qp *qp,
if (qp_init_attr) if (qp_init_attr)
*qp_init_attr = my_qp->init_attr; *qp_init_attr = my_qp->init_attr;
if (ehca_debug_level) if (ehca_debug_level >= 2)
ehca_dmp(qpcb, 4*70, "qp_num=%x", qp->qp_num); ehca_dmp(qpcb, 4*70, "qp_num=%x", qp->qp_num);
query_qp_exit1: query_qp_exit1:
...@@ -1814,7 +1814,7 @@ int ehca_modify_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr, ...@@ -1814,7 +1814,7 @@ int ehca_modify_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr,
goto modify_srq_exit0; goto modify_srq_exit0;
} }
if (ehca_debug_level) if (ehca_debug_level >= 2)
ehca_dmp(mqpcb, 4*70, "qp_num=%x", my_qp->real_qp_num); ehca_dmp(mqpcb, 4*70, "qp_num=%x", my_qp->real_qp_num);
h_ret = hipz_h_modify_qp(shca->ipz_hca_handle, my_qp->ipz_qp_handle, h_ret = hipz_h_modify_qp(shca->ipz_hca_handle, my_qp->ipz_qp_handle,
...@@ -1867,7 +1867,7 @@ int ehca_query_srq(struct ib_srq *srq, struct ib_srq_attr *srq_attr) ...@@ -1867,7 +1867,7 @@ int ehca_query_srq(struct ib_srq *srq, struct ib_srq_attr *srq_attr)
srq_attr->srq_limit = EHCA_BMASK_GET( srq_attr->srq_limit = EHCA_BMASK_GET(
MQPCB_CURR_SRQ_LIMIT, qpcb->curr_srq_limit); MQPCB_CURR_SRQ_LIMIT, qpcb->curr_srq_limit);
if (ehca_debug_level) if (ehca_debug_level >= 2)
ehca_dmp(qpcb, 4*70, "qp_num=%x", my_qp->real_qp_num); ehca_dmp(qpcb, 4*70, "qp_num=%x", my_qp->real_qp_num);
query_srq_exit1: query_srq_exit1:
......
...@@ -81,7 +81,7 @@ static inline int ehca_write_rwqe(struct ipz_queue *ipz_rqueue, ...@@ -81,7 +81,7 @@ static inline int ehca_write_rwqe(struct ipz_queue *ipz_rqueue,
recv_wr->sg_list[cnt_ds].length; recv_wr->sg_list[cnt_ds].length;
} }
if (ehca_debug_level) { if (ehca_debug_level >= 3) {
ehca_gen_dbg("RECEIVE WQE written into ipz_rqueue=%p", ehca_gen_dbg("RECEIVE WQE written into ipz_rqueue=%p",
ipz_rqueue); ipz_rqueue);
ehca_dmp(wqe_p, 16*(6 + wqe_p->nr_of_data_seg), "recv wqe"); ehca_dmp(wqe_p, 16*(6 + wqe_p->nr_of_data_seg), "recv wqe");
...@@ -281,7 +281,7 @@ static inline int ehca_write_swqe(struct ehca_qp *qp, ...@@ -281,7 +281,7 @@ static inline int ehca_write_swqe(struct ehca_qp *qp,
return -EINVAL; return -EINVAL;
} }
if (ehca_debug_level) { if (ehca_debug_level >= 3) {
ehca_gen_dbg("SEND WQE written into queue qp=%p ", qp); ehca_gen_dbg("SEND WQE written into queue qp=%p ", qp);
ehca_dmp( wqe_p, 16*(6 + wqe_p->nr_of_data_seg), "send wqe"); ehca_dmp( wqe_p, 16*(6 + wqe_p->nr_of_data_seg), "send wqe");
} }
...@@ -459,13 +459,14 @@ int ehca_post_send(struct ib_qp *qp, ...@@ -459,13 +459,14 @@ int ehca_post_send(struct ib_qp *qp,
goto post_send_exit0; goto post_send_exit0;
} }
wqe_cnt++; wqe_cnt++;
ehca_dbg(qp->device, "ehca_qp=%p qp_num=%x wqe_cnt=%d",
my_qp, qp->qp_num, wqe_cnt);
} /* eof for cur_send_wr */ } /* eof for cur_send_wr */
post_send_exit0: post_send_exit0:
iosync(); /* serialize GAL register access */ iosync(); /* serialize GAL register access */
hipz_update_sqa(my_qp, wqe_cnt); hipz_update_sqa(my_qp, wqe_cnt);
if (unlikely(ret || ehca_debug_level >= 2))
ehca_dbg(qp->device, "ehca_qp=%p qp_num=%x wqe_cnt=%d ret=%i",
my_qp, qp->qp_num, wqe_cnt, ret);
my_qp->message_count += wqe_cnt; my_qp->message_count += wqe_cnt;
spin_unlock_irqrestore(&my_qp->spinlock_s, flags); spin_unlock_irqrestore(&my_qp->spinlock_s, flags);
return ret; return ret;
...@@ -525,13 +526,14 @@ static int internal_post_recv(struct ehca_qp *my_qp, ...@@ -525,13 +526,14 @@ static int internal_post_recv(struct ehca_qp *my_qp,
goto post_recv_exit0; goto post_recv_exit0;
} }
wqe_cnt++; wqe_cnt++;
ehca_dbg(dev, "ehca_qp=%p qp_num=%x wqe_cnt=%d",
my_qp, my_qp->real_qp_num, wqe_cnt);
} /* eof for cur_recv_wr */ } /* eof for cur_recv_wr */
post_recv_exit0: post_recv_exit0:
iosync(); /* serialize GAL register access */ iosync(); /* serialize GAL register access */
hipz_update_rqa(my_qp, wqe_cnt); hipz_update_rqa(my_qp, wqe_cnt);
if (unlikely(ret || ehca_debug_level >= 2))
ehca_dbg(dev, "ehca_qp=%p qp_num=%x wqe_cnt=%d ret=%i",
my_qp, my_qp->real_qp_num, wqe_cnt, ret);
spin_unlock_irqrestore(&my_qp->spinlock_r, flags); spin_unlock_irqrestore(&my_qp->spinlock_r, flags);
return ret; return ret;
} }
...@@ -575,16 +577,17 @@ static inline int ehca_poll_cq_one(struct ib_cq *cq, struct ib_wc *wc) ...@@ -575,16 +577,17 @@ static inline int ehca_poll_cq_one(struct ib_cq *cq, struct ib_wc *wc)
struct ehca_cq *my_cq = container_of(cq, struct ehca_cq, ib_cq); struct ehca_cq *my_cq = container_of(cq, struct ehca_cq, ib_cq);
struct ehca_cqe *cqe; struct ehca_cqe *cqe;
struct ehca_qp *my_qp; struct ehca_qp *my_qp;
int cqe_count = 0; int cqe_count = 0, is_error;
poll_cq_one_read_cqe: poll_cq_one_read_cqe:
cqe = (struct ehca_cqe *) cqe = (struct ehca_cqe *)
ipz_qeit_get_inc_valid(&my_cq->ipz_queue); ipz_qeit_get_inc_valid(&my_cq->ipz_queue);
if (!cqe) { if (!cqe) {
ret = -EAGAIN; ret = -EAGAIN;
ehca_dbg(cq->device, "Completion queue is empty ehca_cq=%p " if (ehca_debug_level >= 3)
"cq_num=%x ret=%i", my_cq, my_cq->cq_number, ret); ehca_dbg(cq->device, "Completion queue is empty "
goto poll_cq_one_exit0; "my_cq=%p cq_num=%x", my_cq, my_cq->cq_number);
goto poll_cq_one_exit0;
} }
/* prevents loads being reordered across this point */ /* prevents loads being reordered across this point */
...@@ -614,7 +617,7 @@ static inline int ehca_poll_cq_one(struct ib_cq *cq, struct ib_wc *wc) ...@@ -614,7 +617,7 @@ static inline int ehca_poll_cq_one(struct ib_cq *cq, struct ib_wc *wc)
ehca_dbg(cq->device, ehca_dbg(cq->device,
"Got CQE with purged bit qp_num=%x src_qp=%x", "Got CQE with purged bit qp_num=%x src_qp=%x",
cqe->local_qp_number, cqe->remote_qp_number); cqe->local_qp_number, cqe->remote_qp_number);
if (ehca_debug_level) if (ehca_debug_level >= 2)
ehca_dmp(cqe, 64, "qp_num=%x src_qp=%x", ehca_dmp(cqe, 64, "qp_num=%x src_qp=%x",
cqe->local_qp_number, cqe->local_qp_number,
cqe->remote_qp_number); cqe->remote_qp_number);
...@@ -627,11 +630,13 @@ static inline int ehca_poll_cq_one(struct ib_cq *cq, struct ib_wc *wc) ...@@ -627,11 +630,13 @@ static inline int ehca_poll_cq_one(struct ib_cq *cq, struct ib_wc *wc)
} }
} }
/* tracing cqe */ is_error = cqe->status & WC_STATUS_ERROR_BIT;
if (unlikely(ehca_debug_level)) {
/* trace error CQEs if debug_level >= 1, trace all CQEs if >= 3 */
if (unlikely(ehca_debug_level >= 3 || (ehca_debug_level && is_error))) {
ehca_dbg(cq->device, ehca_dbg(cq->device,
"Received COMPLETION ehca_cq=%p cq_num=%x -----", "Received %sCOMPLETION ehca_cq=%p cq_num=%x -----",
my_cq, my_cq->cq_number); is_error ? "ERROR " : "", my_cq, my_cq->cq_number);
ehca_dmp(cqe, 64, "ehca_cq=%p cq_num=%x", ehca_dmp(cqe, 64, "ehca_cq=%p cq_num=%x",
my_cq, my_cq->cq_number); my_cq, my_cq->cq_number);
ehca_dbg(cq->device, ehca_dbg(cq->device,
...@@ -654,8 +659,9 @@ static inline int ehca_poll_cq_one(struct ib_cq *cq, struct ib_wc *wc) ...@@ -654,8 +659,9 @@ static inline int ehca_poll_cq_one(struct ib_cq *cq, struct ib_wc *wc)
/* update also queue adder to throw away this entry!!! */ /* update also queue adder to throw away this entry!!! */
goto poll_cq_one_exit0; goto poll_cq_one_exit0;
} }
/* eval ib_wc_status */ /* eval ib_wc_status */
if (unlikely(cqe->status & WC_STATUS_ERROR_BIT)) { if (unlikely(is_error)) {
/* complete with errors */ /* complete with errors */
map_ib_wc_status(cqe->status, &wc->status); map_ib_wc_status(cqe->status, &wc->status);
wc->vendor_err = wc->status; wc->vendor_err = wc->status;
...@@ -676,14 +682,6 @@ static inline int ehca_poll_cq_one(struct ib_cq *cq, struct ib_wc *wc) ...@@ -676,14 +682,6 @@ static inline int ehca_poll_cq_one(struct ib_cq *cq, struct ib_wc *wc)
wc->imm_data = cpu_to_be32(cqe->immediate_data); wc->imm_data = cpu_to_be32(cqe->immediate_data);
wc->sl = cqe->service_level; wc->sl = cqe->service_level;
if (unlikely(wc->status != IB_WC_SUCCESS))
ehca_dbg(cq->device,
"ehca_cq=%p cq_num=%x WARNING unsuccessful cqe "
"OPType=%x status=%x qp_num=%x src_qp=%x wr_id=%lx "
"cqe=%p", my_cq, my_cq->cq_number, cqe->optype,
cqe->status, cqe->local_qp_number,
cqe->remote_qp_number, cqe->work_request_id, cqe);
poll_cq_one_exit0: poll_cq_one_exit0:
if (cqe_count > 0) if (cqe_count > 0)
hipz_update_feca(my_cq, cqe_count); hipz_update_feca(my_cq, cqe_count);
......
...@@ -211,8 +211,7 @@ static int ehca_mmap_qp(struct vm_area_struct *vma, struct ehca_qp *qp, ...@@ -211,8 +211,7 @@ static int ehca_mmap_qp(struct vm_area_struct *vma, struct ehca_qp *qp,
break; break;
case 1: /* qp rqueue_addr */ case 1: /* qp rqueue_addr */
ehca_dbg(qp->ib_qp.device, "qp_num=%x rqueue", ehca_dbg(qp->ib_qp.device, "qp_num=%x rq", qp->ib_qp.qp_num);
qp->ib_qp.qp_num);
ret = ehca_mmap_queue(vma, &qp->ipz_rqueue, ret = ehca_mmap_queue(vma, &qp->ipz_rqueue,
&qp->mm_count_rqueue); &qp->mm_count_rqueue);
if (unlikely(ret)) { if (unlikely(ret)) {
...@@ -224,8 +223,7 @@ static int ehca_mmap_qp(struct vm_area_struct *vma, struct ehca_qp *qp, ...@@ -224,8 +223,7 @@ static int ehca_mmap_qp(struct vm_area_struct *vma, struct ehca_qp *qp,
break; break;
case 2: /* qp squeue_addr */ case 2: /* qp squeue_addr */
ehca_dbg(qp->ib_qp.device, "qp_num=%x squeue", ehca_dbg(qp->ib_qp.device, "qp_num=%x sq", qp->ib_qp.qp_num);
qp->ib_qp.qp_num);
ret = ehca_mmap_queue(vma, &qp->ipz_squeue, ret = ehca_mmap_queue(vma, &qp->ipz_squeue,
&qp->mm_count_squeue); &qp->mm_count_squeue);
if (unlikely(ret)) { if (unlikely(ret)) {
......
...@@ -123,8 +123,9 @@ static long ehca_plpar_hcall_norets(unsigned long opcode, ...@@ -123,8 +123,9 @@ static long ehca_plpar_hcall_norets(unsigned long opcode,
int i, sleep_msecs; int i, sleep_msecs;
unsigned long flags = 0; unsigned long flags = 0;
ehca_gen_dbg("opcode=%lx " HCALL7_REGS_FORMAT, if (unlikely(ehca_debug_level >= 2))
opcode, arg1, arg2, arg3, arg4, arg5, arg6, arg7); ehca_gen_dbg("opcode=%lx " HCALL7_REGS_FORMAT,
opcode, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
for (i = 0; i < 5; i++) { for (i = 0; i < 5; i++) {
/* serialize hCalls to work around firmware issue */ /* serialize hCalls to work around firmware issue */
...@@ -148,7 +149,8 @@ static long ehca_plpar_hcall_norets(unsigned long opcode, ...@@ -148,7 +149,8 @@ static long ehca_plpar_hcall_norets(unsigned long opcode,
opcode, ret, arg1, arg2, arg3, opcode, ret, arg1, arg2, arg3,
arg4, arg5, arg6, arg7); arg4, arg5, arg6, arg7);
else else
ehca_gen_dbg("opcode=%lx ret=%li", opcode, ret); if (unlikely(ehca_debug_level >= 2))
ehca_gen_dbg("opcode=%lx ret=%li", opcode, ret);
return ret; return ret;
} }
...@@ -172,8 +174,10 @@ static long ehca_plpar_hcall9(unsigned long opcode, ...@@ -172,8 +174,10 @@ static long ehca_plpar_hcall9(unsigned long opcode,
int i, sleep_msecs; int i, sleep_msecs;
unsigned long flags = 0; unsigned long flags = 0;
ehca_gen_dbg("INPUT -- opcode=%lx " HCALL9_REGS_FORMAT, opcode, if (unlikely(ehca_debug_level >= 2))
arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); ehca_gen_dbg("INPUT -- opcode=%lx " HCALL9_REGS_FORMAT, opcode,
arg1, arg2, arg3, arg4, arg5,
arg6, arg7, arg8, arg9);
for (i = 0; i < 5; i++) { for (i = 0; i < 5; i++) {
/* serialize hCalls to work around firmware issue */ /* serialize hCalls to work around firmware issue */
...@@ -201,7 +205,7 @@ static long ehca_plpar_hcall9(unsigned long opcode, ...@@ -201,7 +205,7 @@ static long ehca_plpar_hcall9(unsigned long opcode,
ret, outs[0], outs[1], outs[2], outs[3], ret, outs[0], outs[1], outs[2], outs[3],
outs[4], outs[5], outs[6], outs[7], outs[4], outs[5], outs[6], outs[7],
outs[8]); outs[8]);
} else } else if (unlikely(ehca_debug_level >= 2))
ehca_gen_dbg("OUTPUT -- ret=%li " HCALL9_REGS_FORMAT, ehca_gen_dbg("OUTPUT -- ret=%li " HCALL9_REGS_FORMAT,
ret, outs[0], outs[1], outs[2], outs[3], ret, outs[0], outs[1], outs[2], outs[3],
outs[4], outs[5], outs[6], outs[7], outs[4], outs[5], outs[6], outs[7],
...@@ -381,7 +385,7 @@ u64 hipz_h_query_port(const struct ipz_adapter_handle adapter_handle, ...@@ -381,7 +385,7 @@ u64 hipz_h_query_port(const struct ipz_adapter_handle adapter_handle,
r_cb, /* r6 */ r_cb, /* r6 */
0, 0, 0, 0); 0, 0, 0, 0);
if (ehca_debug_level) if (ehca_debug_level >= 2)
ehca_dmp(query_port_response_block, 64, "response_block"); ehca_dmp(query_port_response_block, 64, "response_block");
return ret; return ret;
...@@ -731,9 +735,6 @@ u64 hipz_h_alloc_resource_mr(const struct ipz_adapter_handle adapter_handle, ...@@ -731,9 +735,6 @@ u64 hipz_h_alloc_resource_mr(const struct ipz_adapter_handle adapter_handle,
u64 ret; u64 ret;
u64 outs[PLPAR_HCALL9_BUFSIZE]; u64 outs[PLPAR_HCALL9_BUFSIZE];
ehca_gen_dbg("kernel PAGE_SIZE=%x access_ctrl=%016x "
"vaddr=%lx length=%lx",
(u32)PAGE_SIZE, access_ctrl, vaddr, length);
ret = ehca_plpar_hcall9(H_ALLOC_RESOURCE, outs, ret = ehca_plpar_hcall9(H_ALLOC_RESOURCE, outs,
adapter_handle.handle, /* r4 */ adapter_handle.handle, /* r4 */
5, /* r5 */ 5, /* r5 */
...@@ -758,7 +759,7 @@ u64 hipz_h_register_rpage_mr(const struct ipz_adapter_handle adapter_handle, ...@@ -758,7 +759,7 @@ u64 hipz_h_register_rpage_mr(const struct ipz_adapter_handle adapter_handle,
{ {
u64 ret; u64 ret;
if (unlikely(ehca_debug_level >= 2)) { if (unlikely(ehca_debug_level >= 3)) {
if (count > 1) { if (count > 1) {
u64 *kpage; u64 *kpage;
int i; int i;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册