|
@@ -356,7 +356,8 @@ static int xive_spapr_configure_queue(u32 target, struct xive_q *q, u8 prio,
|
|
|
|
|
|
rc = plpar_int_get_queue_info(0, target, prio, &esn_page, &esn_size);
|
|
rc = plpar_int_get_queue_info(0, target, prio, &esn_page, &esn_size);
|
|
if (rc) {
|
|
if (rc) {
|
|
- pr_err("Error %lld getting queue info prio %d\n", rc, prio);
|
|
|
|
|
|
+ pr_err("Error %lld getting queue info CPU %d prio %d\n", rc,
|
|
|
|
+ target, prio);
|
|
rc = -EIO;
|
|
rc = -EIO;
|
|
goto fail;
|
|
goto fail;
|
|
}
|
|
}
|
|
@@ -370,7 +371,8 @@ static int xive_spapr_configure_queue(u32 target, struct xive_q *q, u8 prio,
|
|
/* Configure and enable the queue in HW */
|
|
/* Configure and enable the queue in HW */
|
|
rc = plpar_int_set_queue_config(flags, target, prio, qpage_phys, order);
|
|
rc = plpar_int_set_queue_config(flags, target, prio, qpage_phys, order);
|
|
if (rc) {
|
|
if (rc) {
|
|
- pr_err("Error %lld setting queue for prio %d\n", rc, prio);
|
|
|
|
|
|
+ pr_err("Error %lld setting queue for CPU %d prio %d\n", rc,
|
|
|
|
+ target, prio);
|
|
rc = -EIO;
|
|
rc = -EIO;
|
|
} else {
|
|
} else {
|
|
q->qpage = qpage;
|
|
q->qpage = qpage;
|
|
@@ -389,8 +391,8 @@ static int xive_spapr_setup_queue(unsigned int cpu, struct xive_cpu *xc,
|
|
if (IS_ERR(qpage))
|
|
if (IS_ERR(qpage))
|
|
return PTR_ERR(qpage);
|
|
return PTR_ERR(qpage);
|
|
|
|
|
|
- return xive_spapr_configure_queue(cpu, q, prio, qpage,
|
|
|
|
- xive_queue_shift);
|
|
|
|
|
|
+ return xive_spapr_configure_queue(get_hard_smp_processor_id(cpu),
|
|
|
|
+ q, prio, qpage, xive_queue_shift);
|
|
}
|
|
}
|
|
|
|
|
|
static void xive_spapr_cleanup_queue(unsigned int cpu, struct xive_cpu *xc,
|
|
static void xive_spapr_cleanup_queue(unsigned int cpu, struct xive_cpu *xc,
|
|
@@ -399,10 +401,12 @@ static void xive_spapr_cleanup_queue(unsigned int cpu, struct xive_cpu *xc,
|
|
struct xive_q *q = &xc->queue[prio];
|
|
struct xive_q *q = &xc->queue[prio];
|
|
unsigned int alloc_order;
|
|
unsigned int alloc_order;
|
|
long rc;
|
|
long rc;
|
|
|
|
+ int hw_cpu = get_hard_smp_processor_id(cpu);
|
|
|
|
|
|
- rc = plpar_int_set_queue_config(0, cpu, prio, 0, 0);
|
|
|
|
|
|
+ rc = plpar_int_set_queue_config(0, hw_cpu, prio, 0, 0);
|
|
if (rc)
|
|
if (rc)
|
|
- pr_err("Error %ld setting queue for prio %d\n", rc, prio);
|
|
|
|
|
|
+ pr_err("Error %ld setting queue for CPU %d prio %d\n", rc,
|
|
|
|
+ hw_cpu, prio);
|
|
|
|
|
|
alloc_order = xive_alloc_order(xive_queue_shift);
|
|
alloc_order = xive_alloc_order(xive_queue_shift);
|
|
free_pages((unsigned long)q->qpage, alloc_order);
|
|
free_pages((unsigned long)q->qpage, alloc_order);
|