static void icp_check_ipi(ICPState *icp) { if (XISR(icp) && (icp->pending_priority <= icp->mfrr)) { return; } trace_xics_icp_check_ipi(icp->cs->cpu_index, icp->mfrr); if (XISR(icp) && icp->xirr_owner) { ics_reject(icp->xirr_owner, XISR(icp)); } icp->xirr = (icp->xirr & ~XISR_MASK) | XICS_IPI; icp->pending_priority = icp->mfrr; icp->xirr_owner = NULL; qemu_irq_raise(icp->output); }
static void icp_check_ipi(XICSState *icp, int server) { ICPState *ss = icp->ss + server; if (XISR(ss) && (ss->pending_priority <= ss->mfrr)) { return; } trace_xics_icp_check_ipi(server, ss->mfrr); if (XISR(ss)) { ics_reject(icp->ics, XISR(ss)); } ss->xirr = (ss->xirr & ~XISR_MASK) | XICS_IPI; ss->pending_priority = ss->mfrr; qemu_irq_raise(ss->output); }