Lines Matching +full:0 +full:xd
38 cppr = ack & 0xff; in GLUE()
57 static u8 GLUE(X_PFX,esb_load)(struct xive_irq_data *xd, u32 offset) in GLUE()
61 if (offset == XIVE_ESB_SET_PQ_10 && xd->flags & XIVE_IRQ_FLAG_STORE_EOI) in GLUE()
64 if (xd->flags & XIVE_IRQ_FLAG_SHIFT_BUG) in GLUE()
67 val =__x_readq(__x_eoi_page(xd) + offset); in GLUE()
75 static void GLUE(X_PFX,source_eoi)(u32 hw_irq, struct xive_irq_data *xd) in GLUE()
78 if (xd->flags & XIVE_IRQ_FLAG_STORE_EOI) in GLUE()
79 __x_writeq(0, __x_eoi_page(xd) + XIVE_ESB_STORE_EOI); in GLUE()
80 else if (hw_irq && xd->flags & XIVE_IRQ_FLAG_EOI_FW) in GLUE()
82 else if (xd->flags & XIVE_IRQ_FLAG_LSI) { in GLUE()
88 __x_readq(__x_eoi_page(xd) + XIVE_ESB_LOAD_EOI); in GLUE()
101 eoi_val = GLUE(X_PFX,esb_load)(xd, XIVE_ESB_SET_PQ_00); in GLUE()
104 if ((eoi_val & 1) && __x_trig_page(xd)) in GLUE()
105 __x_writeq(0, __x_trig_page(xd)); in GLUE()
118 u32 hirq = 0; in GLUE()
119 u8 prio = 0xff; in GLUE()
122 while ((xc->mfrr != 0xff || pending != 0) && hirq == 0) { in GLUE()
128 * If pending is 0 this will return 0xff which is what in GLUE()
157 * Try to fetch from the queue. Will return 0 for a in GLUE()
158 * non-queueing priority (ie, qpage = 0). in GLUE()
168 * We also need to do that if prio is 0 and we had no in GLUE()
176 if (hirq == XICS_IPI || (prio == 0 && !qpage)) { in GLUE()
204 int p = atomic_xchg(&q->pending_count, 0); in GLUE()
252 * loop will only exit with hirq != 0 if prio is lower than in GLUE()
260 * as the HW interrupt we use for IPIs is routed to priority 0. in GLUE()
285 pr_devel(" new pending=0x%02x hw_cppr=%d cppr=%d\n", in GLUE()
294 pr_devel(" got hirq=0x%x hw_cppr=%d cppr=%d\n", in GLUE()
299 if (hirq & 0xff000000) in GLUE()
300 pr_warn("XIVE: Weird guest interrupt number 0x%08x\n", hirq); in GLUE()
311 * hirq = 0; in GLUE()
341 pending = 0xff; in GLUE()
345 u8 pipr = be64_to_cpu(qw1) & 0xff; in GLUE()
363 if (xc->mfrr != 0xff) { in GLUE()
367 pending |= 0x80; in GLUE()
387 struct xive_irq_data *xd; in GLUE() local
404 irq = entry & 0x7fffffff; in GLUE()
422 qpage[idx] = cpu_to_be32((entry & 0x80000000) | XICS_DUMMY); in GLUE()
425 kvmppc_xive_select_irq(state, &hw_num, &xd); in GLUE()
428 if (!(xd->flags & XIVE_IRQ_FLAG_LSI)) in GLUE()
429 GLUE(X_PFX,esb_load)(xd, XIVE_ESB_SET_PQ_11); in GLUE()
432 GLUE(X_PFX,source_eoi)(hw_num, xd); in GLUE()
436 if (idx == 0) in GLUE()
507 struct xive_irq_data *xd; in GLUE() local
509 u32 irq = xirr & 0x00ffffff, hw_num; in GLUE()
511 int rc = 0; in GLUE()
525 if (irq == XICS_IPI || irq == 0) { in GLUE()
545 kvmppc_xive_select_irq(state, &hw_num, &xd); in GLUE()
574 GLUE(X_PFX,source_eoi)(hw_num, xd); in GLUE()
578 __x_writeq(0, __x_trig_page(xd)); in GLUE()
638 __x_writeq(0, __x_trig_page(&xc->vp_ipi_data)); in GLUE()