Re: [patch 21/32] NTB/msi: Convert to msi_on_each_desc()

From: Dave Jiang
Date: Wed Dec 01 2021 - 16:21:26 EST



On 12/1/2021 1:25 PM, Thomas Gleixner wrote:
On Wed, Dec 01 2021 at 11:47, Dave Jiang wrote:
On 12/1/2021 11:41 AM, Thomas Gleixner wrote:
Hi Thomas. This is actually the IDXD usage for a mediated device passed
to a guest kernel when we plumb the pass through of IMS to the guest
rather than doing previous implementation of having a MSIX vector on
guest backed by IMS.
Which makes a lot of sense.

The control block for the mediated device is emulated and therefore an
emulated MSIX vector will be surfaced as vector 0. However the queues
will backed by IMS vectors. So we end up needing MSIX and IMS coexist
running on the guest kernel for the same device.
Why? What's wrong with using straight MSI-X for all of them?
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?



Thanks,

tglx