> From: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > Sent: Thursday, December 2, 2021 5:45 AM > > On Wed, Dec 01 2021 at 14:21, Dave Jiang wrote: > > On 12/1/2021 1:25 PM, Thomas Gleixner wrote: > >>> The hardware implementation does not have enough MSIX vectors for > >>> guests. There are only 9 MSIX vectors total (8 for queues) and 2048 IMS > >>> vectors. So if we are to do MSI-X for all of them, then we need to do > >>> the IMS backed MSIX scheme rather than passthrough IMS to guests. > >> Confused. Are you talking about passing a full IDXD device to the guest > >> or about passing a carved out subdevice, aka. queue? > > > > I'm talking about carving out a subdevice. I had the impression of you > > wanting IMS passed through for all variations. But it sounds like for a > > sub-device, you are ok with the implementation of MSIX backed by IMS? > > I don't see anything wrong with that. A subdevice is it's own entity and > VFIO can chose the most conveniant representation of it to the guest > obviously. > > How that is backed on the host does not really matter. You can expose > MSI-X to the guest with a INTx backing as well. > Agree with this point. How the interrupts are represented to the guest is orthogonal to how the backend resource is allocated. Physically MSI-X and IMS can be enabled simultaneously on an IDXD device. Once dynamic allocation is allowed for both, either one can be allocated for a subdevice (with only difference on supported #subdevices). When an interrupt resource is exposed to the guest with the same type (e.g. MSI-on-MSI or IMS-on-IMS), it can be also passed through to the guest as long as a hypercall machinery is in place to get addr/data pair from the host (as you suggested earlier). Thanks Kevin