Lines Matching refs:dst

224 	struct irq_dest dst[MAX_CPU];  member
242 static void mpic_irq_raise(struct openpic *opp, struct irq_dest *dst, in mpic_irq_raise() argument
249 if (!dst->vcpu) { in mpic_irq_raise()
251 __func__, (int)(dst - &opp->dst[0])); in mpic_irq_raise()
255 pr_debug("%s: cpu %d output %d\n", __func__, dst->vcpu->arch.irq_cpu_id, in mpic_irq_raise()
261 kvm_vcpu_ioctl_interrupt(dst->vcpu, &irq); in mpic_irq_raise()
264 static void mpic_irq_lower(struct openpic *opp, struct irq_dest *dst, in mpic_irq_lower() argument
267 if (!dst->vcpu) { in mpic_irq_lower()
269 __func__, (int)(dst - &opp->dst[0])); in mpic_irq_lower()
273 pr_debug("%s: cpu %d output %d\n", __func__, dst->vcpu->arch.irq_cpu_id, in mpic_irq_lower()
279 kvmppc_core_dequeue_external(dst->vcpu); in mpic_irq_lower()
327 struct irq_dest *dst; in IRQ_local_pipe() local
331 dst = &opp->dst[n_CPU]; in IRQ_local_pipe()
340 dst->outputs_active[src->output]); in IRQ_local_pipe()
348 dst->outputs_active[src->output]++ == 0) { in IRQ_local_pipe()
351 mpic_irq_raise(opp, dst, src->output); in IRQ_local_pipe()
355 --dst->outputs_active[src->output] == 0) { in IRQ_local_pipe()
358 mpic_irq_lower(opp, dst, src->output); in IRQ_local_pipe()
371 IRQ_setbit(&dst->raised, n_IRQ); in IRQ_local_pipe()
373 IRQ_resetbit(&dst->raised, n_IRQ); in IRQ_local_pipe()
375 IRQ_check(opp, &dst->raised); in IRQ_local_pipe()
377 if (active && priority <= dst->ctpr) { in IRQ_local_pipe()
379 __func__, n_IRQ, priority, dst->ctpr, n_CPU); in IRQ_local_pipe()
384 if (IRQ_get_next(opp, &dst->servicing) >= 0 && in IRQ_local_pipe()
385 priority <= dst->servicing.priority) { in IRQ_local_pipe()
387 __func__, n_IRQ, dst->servicing.next, n_CPU); in IRQ_local_pipe()
390 __func__, n_CPU, n_IRQ, dst->raised.next); in IRQ_local_pipe()
391 mpic_irq_raise(opp, dst, ILR_INTTGT_INT); in IRQ_local_pipe()
394 IRQ_get_next(opp, &dst->servicing); in IRQ_local_pipe()
395 if (dst->raised.priority > dst->ctpr && in IRQ_local_pipe()
396 dst->raised.priority > dst->servicing.priority) { in IRQ_local_pipe()
398 __func__, n_IRQ, dst->raised.next, in IRQ_local_pipe()
399 dst->raised.priority, dst->ctpr, in IRQ_local_pipe()
400 dst->servicing.priority, n_CPU); in IRQ_local_pipe()
404 __func__, n_IRQ, dst->ctpr, in IRQ_local_pipe()
405 dst->servicing.priority, n_CPU); in IRQ_local_pipe()
406 mpic_irq_lower(opp, dst, ILR_INTTGT_INT); in IRQ_local_pipe()
547 opp->dst[i].ctpr = 15; in openpic_reset()
548 memset(&opp->dst[i].raised, 0, sizeof(struct irq_queue)); in openpic_reset()
549 opp->dst[i].raised.next = -1; in openpic_reset()
550 memset(&opp->dst[i].servicing, 0, sizeof(struct irq_queue)); in openpic_reset()
551 opp->dst[i].servicing.next = -1; in openpic_reset()
1029 struct irq_dest *dst; in openpic_cpu_write_internal() local
1041 dst = &opp->dst[idx]; in openpic_cpu_write_internal()
1055 dst->ctpr = val & 0x0000000F; in openpic_cpu_write_internal()
1058 __func__, idx, dst->ctpr, dst->raised.priority, in openpic_cpu_write_internal()
1059 dst->servicing.priority); in openpic_cpu_write_internal()
1061 if (dst->raised.priority <= dst->ctpr) { in openpic_cpu_write_internal()
1064 mpic_irq_lower(opp, dst, ILR_INTTGT_INT); in openpic_cpu_write_internal()
1065 } else if (dst->raised.priority > dst->servicing.priority) { in openpic_cpu_write_internal()
1067 __func__, idx, dst->raised.next); in openpic_cpu_write_internal()
1068 mpic_irq_raise(opp, dst, ILR_INTTGT_INT); in openpic_cpu_write_internal()
1082 s_IRQ = IRQ_get_next(opp, &dst->servicing); in openpic_cpu_write_internal()
1090 IRQ_resetbit(&dst->servicing, s_IRQ); in openpic_cpu_write_internal()
1094 s_IRQ = IRQ_get_next(opp, &dst->servicing); in openpic_cpu_write_internal()
1096 n_IRQ = IRQ_get_next(opp, &dst->raised); in openpic_cpu_write_internal()
1100 IVPR_PRIORITY(src->ivpr) > dst->servicing.priority)) { in openpic_cpu_write_internal()
1103 mpic_irq_raise(opp, dst, ILR_INTTGT_INT); in openpic_cpu_write_internal()
1127 static uint32_t openpic_iack(struct openpic *opp, struct irq_dest *dst, in openpic_iack() argument
1134 mpic_irq_lower(opp, dst, ILR_INTTGT_INT); in openpic_iack()
1136 irq = IRQ_get_next(opp, &dst->raised); in openpic_iack()
1145 !(IVPR_PRIORITY(src->ivpr) > dst->ctpr)) { in openpic_iack()
1147 __func__, irq, dst->ctpr, src->ivpr); in openpic_iack()
1152 IRQ_setbit(&dst->servicing, irq); in openpic_iack()
1160 IRQ_resetbit(&dst->raised, irq); in openpic_iack()
1186 kvmppc_set_epr(vcpu, openpic_iack(opp, &opp->dst[cpu], cpu)); in kvmppc_mpic_set_epr()
1195 struct irq_dest *dst; in openpic_cpu_read_internal() local
1207 dst = &opp->dst[idx]; in openpic_cpu_read_internal()
1211 retval = dst->ctpr; in openpic_cpu_read_internal()
1217 retval = openpic_iack(opp, dst, idx); in openpic_cpu_read_internal()
1748 if (opp->dst[cpu].vcpu) { in kvmppc_mpic_connect_vcpu()
1757 opp->dst[cpu].vcpu = vcpu; in kvmppc_mpic_connect_vcpu()
1780 BUG_ON(!opp->dst[vcpu->arch.irq_cpu_id].vcpu); in kvmppc_mpic_disconnect_vcpu()
1782 opp->dst[vcpu->arch.irq_cpu_id].vcpu = NULL; in kvmppc_mpic_disconnect_vcpu()