C/C++教程

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

本文主要是介绍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.

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.

On virtual machine:

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

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

Result:

On virtual machine:

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

So the interrupt works. 

 

这篇关于VFIO-MDEV driver(virtual device) trigger interrupt to virtual machine的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!