blob: 6b8e874d185c15b14c369de68b6e1277c3ac4dc3 [file] [log] [blame]
--- qemu-kvm-0.15.1/hw/virtio-pci.c 2011-10-29 12:00:12.000000000 +0200
+++ qemu-kvm-0.15.1-vpfring-diff/hw/virtio-pci.c 2011-10-29 12:04:56.000000000 +0200
@@ -19,6 +19,7 @@
#include "virtio-blk.h"
#include "virtio-net.h"
#include "virtio-serial.h"
+#include "vnplug-ctrl.h"
#include "pci.h"
#include "qemu-error.h"
#include "msix.h"
@@ -880,6 +881,27 @@
return virtio_exit_pci(pci_dev);
}
+static int vnplug_ctrl_init_pci(PCIDevice *pci_dev)
+{
+ VirtIOPCIProxy *proxy = DO_UPCAST(VirtIOPCIProxy, pci_dev, pci_dev);
+ VirtIODevice *vdev;
+
+ vdev = vnplug_ctrl_init(&pci_dev->qdev);
+
+ virtio_init_pci(proxy, vdev);
+
+ proxy->nvectors = vdev->nvectors;
+ return 0;
+}
+
+static int vnplug_ctrl_exit_pci(PCIDevice *pci_dev)
+{
+ VirtIOPCIProxy *proxy = DO_UPCAST(VirtIOPCIProxy, pci_dev, pci_dev);
+
+ vnplug_ctrl_exit(proxy->vdev);
+ return virtio_exit_pci(pci_dev);
+}
+
static PCIDeviceInfo virtio_info[] = {
{
.qdev.name = "virtio-blk-pci",
@@ -965,6 +987,22 @@
},
.qdev.reset = virtio_pci_reset,
},{
+ .qdev.name = "vnplug",
+ .qdev.alias = "vnplug",
+ .qdev.size = sizeof(VirtIOPCIProxy),
+ .init = vnplug_ctrl_init_pci,
+ .exit = vnplug_ctrl_exit_pci,
+ //.romfile = "pxe-vnplug.rom",
+ .vendor_id = PCI_VENDOR_ID_REDHAT_QUMRANET,
+ .device_id = PCI_DEVICE_ID_VNPLUG_CTRL,
+ .revision = VIRTIO_PCI_ABI_VERSION,
+ .class_id = PCI_CLASS_NETWORK_ETHERNET,
+ .qdev.props = (Property[]) {
+ DEFINE_VIRTIO_COMMON_FEATURES(VirtIOPCIProxy, host_features),
+ DEFINE_PROP_END_OF_LIST(),
+ },
+ .qdev.reset = virtio_pci_reset,
+ },{
/* end of list */
}
};