VFIO-MDEV driver(virtual device) trigger interrupt to virtual machine

Last blog records how to data access between VFIO-MDEV driver(virtual device) to virtual machine. Now this blog records the interrupt from VFIO-MDEV driver(virtual device) to virtual machine.

Host side: 

Actually mtty sample code has the good implementation of VFIO interrupt. The turth is VFIO-MDEV driver sends event to virtual machine.

VFIO-MDEV driver(virtual device) trigger interrupt to virtual machine

Here we can see VFIO-MDEV driver will use event to simulate the interrupt -- MSI or legacy.

And the whole flow is about:

1. Virtual machine get interrupt information(how many interrupts in VFIO-MDEV device) from VFIO-MDEV driver by 'VFIO_DEVICE_GET_IRQ_INFO'. 

2. Virtual machine setup the event path by 'VFIO_DEVICE_SET_IRQS'.

So your VFIO-MDEV driver has to implement this two cases in mdev_parent_ops.ioctl(). Please read the mtty.c and you will understand it.

OK, now we can call this trigger function.

VFIO-MDEV driver(virtual device) trigger interrupt to virtual machine

On virtual machine:

 I added code the get the irq number and register irq handler to the system.

VFIO-MDEV driver(virtual device) trigger interrupt to virtual machine

Here you can see I use legacy interrupt as mtty device's original code setup it.

Result:

On virtual machine:

VFIO-MDEV driver(virtual device) trigger interrupt to virtual machine

We can see firstly I got the irq number and then my irq handler was triggered. 

So the interrupt works. 

 

上一篇:Apache 增加多域名支持,解决网站只能在根目录的问题.


下一篇:[笔记]《Effective C++》第二章