On 21.06.2013, at 23:54, Benjamin Herrenschmidt wrote: > On Fri, 2013-06-21 at 15:46 +0200, Alexander Graf wrote: >> Not sure. We could just declare a "direct virq==irq" mode in which >> msi.data == virq == irq. No need for any translation then. > > Maybe. Beware that MSI data is only 16-bit on the wire but we may not > care here. > > One thing I'm not 100% certain of is how Alexey makes all that work with > VFIO since the MSI address/data in the device shall not be the qemu > "cooked up" ones, but the real HW ones (corresponding to a different > host interrupt). > > How do that work ?
The real device address/data go to a normal host interrupt vector. Once we hit such a vector, we need to find out that it's destined for the guest in real mode - no idea how you planned to do that - and then reinject it back into the guest with the virtual irq vector that you can find out by asking the irqfd hopefully. It might make sense to implement it the easy way without real mode first, and then take it from there ;). Alex