/* new contour level */ static void cont_new_store(PLFLT level) { if (cont3d) { if (startlev == NULL) { startlev = alloc_level(level); currlev = startlev; } else { currlev->next = alloc_level(level); currlev = currlev->next; } currline = currlev->line; } }
int request_bridge_irq(struct bridge_controller *bc) { int irq = allocate_irqno(); int swlevel, cpu; nasid_t nasid; if (irq < 0) return irq; /* * "map" irq to a swlevel greater than 6 since the first 6 bits * of INT_PEND0 are taken */ cpu = bc->irq_cpu; swlevel = alloc_level(cpu, irq); if (unlikely(swlevel < 0)) { free_irqno(irq); return -EAGAIN; } /* Make sure it's not already pending when we connect it. */ nasid = COMPACT_TO_NASID_NODEID(cpu_to_node(cpu)); REMOTE_HUB_CLR_INTR(nasid, swlevel); intr_connect_level(cpu, swlevel); register_bridge_irq(irq); return irq; }
int request_bridge_irq(struct bridge_controller *bc, int pin) { struct hub_irq_data *hd; struct hub_data *hub; struct irq_desc *desc; int swlevel; int irq; hd = kzalloc(sizeof(*hd), GFP_KERNEL); if (!hd) return -ENOMEM; swlevel = alloc_level(); if (unlikely(swlevel < 0)) { kfree(hd); return -EAGAIN; } irq = swlevel + IP27_HUB_IRQ_BASE; hd->bc = bc; hd->bit = swlevel; hd->pin = pin; irq_set_chip_data(irq, hd); /* use CPU connected to nearest hub */ hub = hub_data(NASID_TO_COMPACT_NODEID(bc->nasid)); setup_hub_mask(hd, &hub->h_cpus); desc = irq_to_desc(irq); desc->irq_common_data.node = bc->nasid; cpumask_copy(desc->irq_common_data.affinity, &hub->h_cpus); return irq; }