[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] MSI and VT-d interrupt remapping
I've seen patches for handling MSIs posted on this list. I know that they are still being worked on, but by the looks of it they are missing some functionality that could prove useful. The proposed patches enable a device to allocate a vector to an MSI interrupt. For MSI-X a set of vectors can be allocated. When configuring MSIs, for each PCI function one configures a specific destination address and message data to be used for interrupt triggering. The message address indicates the destination for the interrupt and the message data essentially indicates the vector to trigger on the destination. Now, MSI also has a mode which allows up to the 5 lower bits of the message data to be set arbitrarily by the device itself. That is, a device can be configured to deliver up to 32 different, contigous vectors aligned within an apropriate boundary. Enabling a device to trigger 32 different vectors on a single interrupt destination may not actually be all that useful. However, with the introduction of VT-d interrupt remapping these 32 different messages can be remapped to to arbitrary vectors *and* destinations---not only to a contigous set of vectors on a single destination. If an MSI capable device was able to make use of the above feature, the device could be set up to generate different interrupts depending on where the incoming interrupt was to be handled. For example, incoming data for a particular guest could trigger an interrupt on the processor where that guest is running. Obviously, a dom0-like backend driver would not be involved in the actual event delivery in these situations. The event would be delivered directly to the frontend. The necessary changes would enable a device driver for an MSI capable device to allocate a range of pirqs and bind these to different frontends. Does this make sense? eSk _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |