[vfio-users] VFIO for PCIe streaming from/to user space

Oliver Heid Oliver.Heid at h-next.de
Thu Feb 22 22:12:58 UTC 2018


Problem solved: To enable MSI -> eventfd signalling we had to set the 
bus master enable bit in PCI config space (bit 2 at offset 4).
Thanks!


------------------------------------------------------------------------

*From:* Alex Williamson <mailto:alex.williamson at redhat.com>
*Sent:* Thursday, February 22, 2018 10:03PM
*To:* Heid, Oliver <mailto:Oliver.Heid at h-next.de>
*Subject:* Re: [vfio-users] VFIO for PCIe streaming from/to user space


On Thu, 22 Feb 2018 21:44:44 +0100
Oliver Heid <Oliver.Heid at h-next.de> wrote:

> After registering e.g. MSI 0 with
>
> __s32 msifd = eventfd(0, 0);
>
>       struct vfio_irq_set *irq_set;
>
>       irq_set=(struct vfio_irq_set *)malloc(sizeof(struct vfio_irq_set) +
> sizeof(__s32));
>
>       irq_set->argsz = sizeof(struct vfio_irq_set) + sizeof(__s32);
>       irq_set->index = VFIO_PCI_MSI_IRQ_INDEX;
>       irq_set->flags = VFIO_IRQ_SET_DATA_EVENTFD |
> VFIO_IRQ_SET_ACTION_TRIGGER;
>       irq_set->start = 0;
>       irq_set->count = 1;
>       *(__s32*)&irq_set->data = msifd;
>       ioctl(device, VFIO_DEVICE_SET_IRQS, irq_set);
>
> any read by
>
>       __u64 value = 0;
>       int ret = read(msifd,&value,sizeof(value));
>
> should acknowledge the MSI, right? Or did I miss something?

What do you mean by "acknowledge"?  This effectively acknowledges the
eventfd, but it's up to your driver to service the hardware upon
receiving the eventfd notification.  The eventfd is only the signaling
mechanism.  Thanks,

Alex


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/vfio-users/attachments/20180222/7acce158/attachment.htm>


More information about the vfio-users mailing list