Esempio n. 1
0
static void
xlp_post_ithread(void *source)
{
	struct xlp_intrsrc *src = source;

	nlm_pic_ack(xlp_pic_base, xlp_irq_to_irt(src->irq));
}
Esempio n. 2
0
static void
xlp_post_filter(void *source)
{
	struct xlp_intrsrc *src = source;
	
	if (src->busack)
		src->busack(src->irq);
	nlm_pic_ack(xlp_pic_base, xlp_irq_to_irt(src->irq));
}
Esempio n. 3
0
/*
 * This function programs the ITE on the IRT entry on all online nodes
 * @m	: CPU mask resulting from xlp_closest_match_cpumask() call
 */
void xlp_set_cpumask_on_node(u8 node, const struct cpumask *m, int irq)
{
    u8 ite;
    u64 val;
    int irt = xlp_irq_to_irt(irq);
    int rvec = xlp_rvec_from_irq(irq);

    //dump_all_ites();
    ite = xlp_closest_match_cpumask(node, m);
    printk(KERN_DEBUG "[ite.c] Using PIC ITE %d for IRQ %d (IRT %d)\n", ite, irq, irt);
    /* xlp_pic_init() has set default values. Override them */
    val = XLP_IRTENT_ENABLE | XLP_IRTENT_SCH_LCL |
          XLP_IRTENT_RVEC(rvec) | XLP_IRTENT_DB(ite);
    nlh_pic_w64r(node, XLP_PIC_IRT_ENTRY(irt), val);
    //fdebug("Setting up mask: Wrote %#llx to (%d)%#llx\n", val, irt, XLP_PIC_IRT_ENTRY(irt));
    return;
}