| --- 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 */ |
| } |
| }; |