diff options
-rw-r--r-- | hw/pc_piix.c | 5 | ||||
-rw-r--r-- | hw/virtio-pci.c | 8 |
2 files changed, 12 insertions, 1 deletions
diff --git a/hw/pc_piix.c b/hw/pc_piix.c index 0f61f00181..5c08245fed 100644 --- a/hw/pc_piix.c +++ b/hw/pc_piix.c @@ -28,6 +28,7 @@ #include "pc.h" #include "apic.h" #include "pci.h" +#include "pci_ids.h" #include "net.h" #include "boards.h" #include "ide.h" @@ -368,6 +369,10 @@ static QEMUMachine pc_machine_v1_1 = { .driver = "isa-fdc",\ .property = "check_media_rate",\ .value = "off",\ + }, {\ + .driver = "virtio-balloon-pci",\ + .property = "class",\ + .value = stringify(PCI_CLASS_MEMORY_RAM),\ } static QEMUMachine pc_machine_v1_0 = { diff --git a/hw/virtio-pci.c b/hw/virtio-pci.c index a0fb7c1b9c..4a4413d52c 100644 --- a/hw/virtio-pci.c +++ b/hw/virtio-pci.c @@ -790,6 +790,11 @@ static int virtio_balloon_init_pci(PCIDevice *pci_dev) VirtIOPCIProxy *proxy = DO_UPCAST(VirtIOPCIProxy, pci_dev, pci_dev); VirtIODevice *vdev; + if (proxy->class_code != PCI_CLASS_OTHERS && + proxy->class_code != PCI_CLASS_MEMORY_RAM) { /* qemu < 1.1 */ + proxy->class_code = PCI_CLASS_OTHERS; + } + vdev = virtio_balloon_init(&pci_dev->qdev); if (!vdev) { return -1; @@ -906,6 +911,7 @@ static TypeInfo virtio_serial_info = { static Property virtio_balloon_properties[] = { DEFINE_VIRTIO_COMMON_FEATURES(VirtIOPCIProxy, host_features), + DEFINE_PROP_HEX32("class", VirtIOPCIProxy, class_code, 0), DEFINE_PROP_END_OF_LIST(), }; @@ -919,7 +925,7 @@ static void virtio_balloon_class_init(ObjectClass *klass, void *data) k->vendor_id = PCI_VENDOR_ID_REDHAT_QUMRANET; k->device_id = PCI_DEVICE_ID_VIRTIO_BALLOON; k->revision = VIRTIO_PCI_ABI_VERSION; - k->class_id = PCI_CLASS_MEMORY_RAM; + k->class_id = PCI_CLASS_OTHERS; dc->reset = virtio_pci_reset; dc->props = virtio_balloon_properties; } |