On Mon, 18 Nov 2019 18:59:23 +0800
Jason Wang <jasowang@xxxxxxxxxx> wrote:
[Note: I have not looked into the reworked architecture of this *at all*
so far; just something that I noted...]
This sample driver creates mdev device that simulate virtio net deviceThis structure embeds a struct device (a reference-counted structure),
over virtio mdev transport. The device is implemented through vringh
and workqueue. A device specific dma ops is to make sure HVA is used
directly as the IOVA. This should be sufficient for kernel virtio
driver to work.
Only 'virtio' type is supported right now. I plan to add 'vhost' type
on top which requires some virtual IOMMU implemented in this sample
driver.
Signed-off-by: Jason Wang <jasowang@xxxxxxxxxx>
---
MAINTAINERS | 1 +
samples/Kconfig | 10 +
samples/vfio-mdev/Makefile | 1 +
samples/vfio-mdev/mvnet_loopback.c | 690 +++++++++++++++++++++++++++++
4 files changed, 702 insertions(+)
create mode 100644 samples/vfio-mdev/mvnet_loopback.c
+static struct mvnet_dev {
+ struct class *vd_class;
+ struct idr vd_idr;
+ struct device dev;
+} mvnet_dev;
yet it is a static variable. This is giving a bad example to potential
implementers; just allocate it dynamically.
+static void mvnet_device_release(struct device *dev)And that also means you need a proper release function here, of
+{
+ dev_dbg(dev, "mvnet: released\n");
course.
+}