[dpdk-users] Interrupt mode, queues, own event loop

Budiský Jakub ibudisky at fit.vutbr.cz
Sat Sep 5 23:21:06 CEST 2020


On 2020-09-04 18:18, Stephen Hemminger wrote:
> The per-queue interrupt functionality for PCI devices is built
> on top of MSI-X interrupts. The uio_pci_generic driver you are using
> does not support MSI-X.
> 
> The way UIO driver works is to use the legacy INTx functionality,
> and when an interrupt occurs the device driver in the kernel is called.
> For the uio_pci_generic driver this is mapped to the device file 
> descriptor.
> 
> For VFIO, you can have one interrupt per queue and it uses eventfd's
> to create a per-queue channel.

Hi,

thanks for the valuable info!

I've now switched to the `vfio` module even for testing and I can 
confirm I get a set of separate eventfd file descriptors. I've 
encountered a new issue though that appears like a bug to me.

Either one of the file descriptors (`--vfio-intr msix`, always the one 
associated with the last queue, regardless of the initialization order) 
or all of them (`--vfio-intr msi`) are available for reading just once 
per application run. I cannot get any followup interrupts and I can 
confirm by polling that there are new packets that have arrived.

With `--vfio-intr legacy` I get a same file descriptor for all my 
workers but it is also only triggered once.

As far as I understand there is no clear flag for the MSI(-X) interrupts 
and so I'm not sure what else to try. There is nothing of interest in 
the application output (not even with `--log-level lib.eal:debug`).

Thanks again.

Best regards,
Jakub Budisky


More information about the users mailing list