Lines Matching refs:prio

137 	u8 prio = 0xff;
149 prio = ffs(pending) - 1;
152 if (prio >= xc->cppr || prio > 7) {
154 prio = xc->mfrr;
161 q = &xc->queues[prio];
186 * We also need to do that if prio is 0 and we had no
194 if (hirq == XICS_IPI || (prio == 0 && !qpage)) {
213 pending &= ~(1 << prio);
230 * If the most favoured prio we found pending is less
234 if (prio >= xc->mfrr && xc->mfrr < xc->cppr) {
235 prio = xc->mfrr;
267 * loop will only exit with hirq != 0 if prio is lower than
272 xc->cppr = prio;
374 u8 pending, prio;
385 prio = ffs(pending) - 1;
387 __raw_writeb(prio, xive_tima + TM_SPC_SET_OS_PENDING);
393 unsigned int prio;
396 for (prio = xc->cppr; prio < KVMPPC_XIVE_Q_COUNT; prio++) {
397 struct xive_q *q = &xc->queues[prio];
866 int kvmppc_xive_attach_escalation(struct kvm_vcpu *vcpu, u8 prio,
870 struct xive_q *q = &xc->queues[prio];
875 if (xc->esc_virq[prio])
879 xc->esc_virq[prio] = irq_create_mapping(NULL, q->esc_irq);
880 if (!xc->esc_virq[prio]) {
882 prio, xc->server_num);
891 vcpu->kvm->arch.lpid, xc->server_num, prio);
894 prio, xc->server_num);
899 pr_devel("Escalation %s irq %d (prio %d)\n", name, xc->esc_virq[prio], prio);
901 rc = request_irq(xc->esc_virq[prio], xive_esc_irq,
905 prio, xc->server_num);
908 xc->esc_virq_names[prio] = name;
919 struct irq_data *d = irq_get_irq_data(xc->esc_virq[prio]);
930 irq_dispose_mapping(xc->esc_virq[prio]);
931 xc->esc_virq[prio] = 0;
936 static int xive_provision_queue(struct kvm_vcpu *vcpu, u8 prio)
940 struct xive_q *q = &xc->queues[prio];
951 prio, xc->server_num);
958 * queue is fully configured. This is a requirement for prio 0
963 rc = xive_native_configure_queue(xc->vp_id, q, prio, qpage,
967 prio, xc->server_num);
972 static int xive_check_provisioning(struct kvm *kvm, u8 prio)
982 if (xive->qmap & (1 << prio))
985 pr_devel("Provisioning prio... %d\n", prio);
991 rc = xive_provision_queue(vcpu, prio);
993 kvmppc_xive_attach_escalation(vcpu, prio,
1001 xive->qmap |= (1 << prio);
1005 static void xive_inc_q_pending(struct kvm *kvm, u32 server, u8 prio)
1021 q = &xc->queues[prio];
1025 static int xive_try_pick_queue(struct kvm_vcpu *vcpu, u8 prio)
1036 q = &xc->queues[prio];
1045 int kvmppc_xive_select_target(struct kvm *kvm, u32 *server, u8 prio)
1058 pr_devel("Finding irq target on 0x%x/%d...\n", *server, prio);
1061 rc = xive_try_pick_queue(vcpu, prio);
1071 rc = xive_try_pick_queue(vcpu, prio);
1074 pr_devel(" found on 0x%x/%d\n", *server, prio);
1146 u8 prio)
1173 state->guest_priority = prio;
1177 * Target an interrupt to a given server/prio, this will fallback
1185 u32 server, u8 prio)
1196 rc = kvmppc_xive_select_target(kvm, &server, prio);
1217 state->act_priority = prio;
1225 prio, state->number);
1281 pr_devel("set_xive ! irq 0x%x server 0x%x prio %d\n",
1561 u8 prio;
1599 prio = xive_lock_and_mask(xive, sb, state);
1600 pr_devel(" old IPI prio %02x P:%d Q:%d\n", prio,
1634 if (prio != MASKED && !state->old_p)
1640 /* Restore guest prio (unlocks EOI) */
1642 state->guest_priority = prio;
1656 u8 prio;
1674 prio = xive_lock_and_mask(xive, sb, state);
1675 pr_devel(" old IRQ prio %02x P:%d Q:%d\n", prio,
1715 if (prio == MASKED || state->old_p)
1720 /* Restore guest prio (unlocks EOI) */
1722 state->guest_priority = prio;
2103 /* Restore mask/prio if it wasn't masked */
2188 u64 val, prio;
2224 prio = state->saved_scan_prio;
2226 if (prio == MASKED) {
2228 prio = state->saved_priority;
2230 val |= prio << KVM_XICS_PRIORITY_SHIFT;
2248 if (state->in_queue || (prio == MASKED && state->saved_q))
2397 /* First convert prio and mark interrupt as untargetted */
2472 pr_devel(" masked, saving prio\n");
2476 pr_devel(" unmasked, restoring to prio %d\n", guest_prio);