On Thu, Mar 22, 2012 at 08:09:27PM +1100, David Gibson wrote: > diff --git a/hw/virtio-pci.c b/hw/virtio-pci.c > index a0fb7c1..1fd5768 100644 > --- a/hw/virtio-pci.c > +++ b/hw/virtio-pci.c > @@ -790,6 +790,10 @@ 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; > +
{} around if. > vdev = virtio_balloon_init(&pci_dev->qdev); > if (!vdev) { > return -1; > @@ -905,6 +909,7 @@ static TypeInfo virtio_serial_info = { > }; > > static Property virtio_balloon_properties[] = { > + DEFINE_PROP_HEX32("class", VirtIOPCIProxy, class_code, PCI_CLASS_OTHERS), > DEFINE_VIRTIO_COMMON_FEATURES(VirtIOPCIProxy, host_features), > DEFINE_PROP_END_OF_LIST(), > }; Sorry to bug you - why not set + DEFINE_PROP_HEX32("class", VirtIOPCIProxy, class_code, 0), and then + if (!proxy->class_code) { + proxy->class_code = PCI_CLASS_OTHERS; + } This is what other devices do. > @@ -919,7 +924,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; > } > -- > 1.7.9.1