Messages in this thread | | | Date | Thu, 9 Mar 2000 16:31:50 -0700 | From | yodaiken@fsmlabs ... | Subject | Re: new IRQ scalability changes in 2.3.48 |
| |
To spell it out:
The new changes offer some supposed increase in parallelism and reduced cache ping if there are multiple irq controllers.
If an irq controller does not have atomic maskandack then it needs spinlocks so under the new system there are 2 spinlocks needed in place of 1.
The io-apic does not have atomic mask-and-ack so it needs a spinlock. But the new system evades this problem by postponing the ack until after the driver irq handler runs.
interrupt: do_IRQ desc->ack() /* on a level triggered PCI irq this is now null*/ call driver desc->end() /* on a level triggered PCI irq this is now ACK */
The result is that we don't need the extra spinlock, but we freeze the IOAPIC until the ack. I don't know whether this freezes all irqs or "only" irqs that are lower hardware priority, but it's a major change in irq semantics and one with interesting performance implications.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |