blob: 462d2bf9a5fb85ca24acf3e6a653826ccd328cb2 [file] [log] [blame]
--- qemu-kvm-1.1.1/hw/virtio-pci.c 2012-07-16 09:52:03.000000000 +0200
+++ qemu-kvm-1.1.1-vpfring-diff/virtio-pci.c 2012-09-04 01:13:24.000000000 +0200
@@ -21,6 +21,7 @@
#include "virtio-blk.h"
#include "virtio-net.h"
#include "virtio-serial.h"
+#include "vnplug-ctrl.h"
#include "virtio-scsi.h"
#include "pci.h"
#include "qemu-error.h"
@@ -886,6 +887,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 Property virtio_blk_properties[] = {
DEFINE_PROP_HEX32("class", VirtIOPCIProxy, class_code, 0),
DEFINE_BLOCK_PROPERTIES(VirtIOPCIProxy, blk.conf),
@@ -1014,6 +1036,34 @@
.class_init = virtio_balloon_class_init,
};
+static Property vnplug_ctrl_properties[] = {
+ DEFINE_VIRTIO_COMMON_FEATURES(VirtIOPCIProxy, host_features),
+ DEFINE_PROP_END_OF_LIST(),
+};
+
+static void vnplug_ctrl_class_init(ObjectClass *klass, void *data)
+{
+ DeviceClass *dc = DEVICE_CLASS(klass);
+ PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
+
+ k->init = vnplug_ctrl_init_pci;
+ k->exit = vnplug_ctrl_exit_pci;
+ //k->romfile = "pxe-vnplug.rom";
+ k->vendor_id = PCI_VENDOR_ID_REDHAT_QUMRANET;
+ k->device_id = PCI_DEVICE_ID_VNPLUG_CTRL;
+ k->revision = VIRTIO_PCI_ABI_VERSION;
+ k->class_id = PCI_CLASS_NETWORK_ETHERNET;
+ dc->reset = virtio_pci_reset;
+ dc->props = vnplug_ctrl_properties;
+}
+
+static TypeInfo vnplug_ctrl_info = {
+ .name = "vnplug",
+ .parent = TYPE_PCI_DEVICE,
+ .instance_size = sizeof(VirtIOPCIProxy),
+ .class_init = vnplug_ctrl_class_init,
+};
+
static int virtio_scsi_init_pci(PCIDevice *pci_dev)
{
VirtIOPCIProxy *proxy = DO_UPCAST(VirtIOPCIProxy, pci_dev, pci_dev);
@@ -1075,6 +1125,7 @@
type_register_static(&virtio_serial_info);
type_register_static(&virtio_balloon_info);
type_register_static(&virtio_scsi_info);
+ type_register_static(&vnplug_ctrl_info);
}
type_init(virtio_pci_register_types)