Coming soon: MSI support
[Posted August 12, 2003 by corbet]
Modern hardware manufacturers have a problem: too many pins. Often, one of
the most expensive part of a chip (or bus card) is simply connecting all of
the wires. A chip that should be small and take up little board space can
expand to several square centimeters to make room for the large number of
leads required. So the hardware folks are very interested in anything that
reduces pin counts; this is part of the motivation
behind serial technologies like USB and serial ATA.
One target for pin-chopping engineers is interrupt lines.
As a way of eliminating interrupt lines and moving further
toward a "legacy free" environment, a (relatively)
new PCI bus feature called "message signaled interrupts" (MSI) has been
introduced. Essentially, MSI works by moving
interrupts onto the data bus with the rest of the data traffic. An
MSI-capable device signals an interrupt by writing a specific data value to
a special address. The operating system can then trap that write and
dispatch the interrupt accordingly.
Someday, in the future, all devices will do MSI and separate interrupt
lines will no longer be necessary. Until then, there is one other
advantage to the MSI scheme: devices can be assigned multiple message
types, which can function as entirely separate interrupts. Thus a
complicated device can indicate different situations with different
messages, and each will be quickly routed to the appropriate service
routine in the driver.
MSI is relatively new, and hardware support for MSI is just beginning to
appear. The Linux kernel does not have support for MSI - yet. Tom
Nguyen (of Intel) has posted a patch
designed to change that state of affairs. His MSI patch is broken into two
big chunks. The first adds a layer of indirection ("vector indexing") to
the interrupt management code. The second then uses vector indexing to
implement full MSI (and MSI-X, an extended version of MSI) support.
Included in the patch is a documentation file (MSI-HOWTO.txt) describing MSI and the Linux
implementation.
The MSI patch is far from inclusion into the mainline kernel; review on the
linux-kernel list has brought out a lot of things that people would like to
see changed first. But once things are ironed out, MSI could go in fairly
quickly. It's late in the game to be reworking the 2.6 interrupt handling
code, but MSI should be ready for an early 2.7 inclusion.
(
Log in to post comments)