Re: MSI/MSIX for VFIO platform

From: Vikas Gupta
Date: Mon Sep 14 2020 - 03:06:22 EST


Hi Eric/Alex,
Thanks for your valuable suggestions and get back to you if anything
is required.

Thanks,
Vikas

On Fri, Sep 11, 2020 at 7:23 PM Auger Eric <eric.auger@xxxxxxxxxx> wrote:
>
> Hi Vikas,
>
> On 9/10/20 6:57 PM, Alex Williamson wrote:
> > On Thu, 10 Sep 2020 16:15:27 +0530
> > Vikas Gupta <vikas.gupta@xxxxxxxxxxxx> wrote:
> >
> >> Hi Alex/Cornelia,
> >>
> >> We are looking for MSI interrupts for platform devices in user-space
> >> applications via event/poll mechanism using VFIO.
> >>
> >> Since there is no support for MSI/MSIX handling in VFIO-platform in kernel,
> >> it may not possible to get this feature in user-space.
> >>
> >> Is there any other way we can get this feature in user-space OR can you
> >> please suggest if any patch or feature is in progress for same in VFIO
> >> platform?
> >>
> >> Any suggestions would be helpful.
> >
> > Eric (Cc'd) is the maintainer of vfio-platform.
> >
> > vfio-platform devices don't have IRQ indexes dedicated to MSI and MSI-X
> > like vfio-pci devices do (technically these are PCI concepts, but I
> > assume we're referring generically to message signaled interrupts), but
> > that's simply due to the lack of standardization in platform devices.
> > Logically these are simply collections of edge triggered interrupts,
> > which the vfio device API supports generically, it's simply a matter
> > that the vfio bus driver exposing a vfio-platform device create an IRQ
> > index exposing these vectors. Thanks,
>
> I have not worked on MSI support and I am not aware of any work
> happening in this area.
>
> First I would recommend to look at IRQ related uapis exposed by VFIO:
> VFIO_DEVICE_GET_IRQ_INFO
> VFIO_DEVICE_SET_IRQS
>
> and try to understand if they can be implemented for MSIs in a generic
> way in the vfio_platform driver using platform-msi helpers.
>
> For instance VFIO_DEVICE_GET_IRQ_INFO would need to return the number of
> requested vectors. On init I guess we should allocate vectors using
> platform_msi_domain_alloc_irqs/ devm_request_irq and in the handler
> trigger the eventfd provided through VFIO_DEVICE_SET_IRQS.
>
> On userspace where you have to trap the MSI setup to call the above
> functions and setup irqfd injection. This would be device specific as
> opposed to PCI. That's just rough ideas at the moment.
>
> Thanks
>
> Eric
>
> >
> > Alex
> >
>