Commit ab73ff29ceb785aad3fc182e09d702ccee2e5559
Committed by
Anthony Liguori
1 parent
ccb63de3
qdev/compat: virtio-blk-pci 0.10 compatibility.
Add class property to virtio-blk-pci allowing to specify the PCI class. Add compat property to pc-0.10 to set the old PCI class. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Showing
2 changed files
with
21 additions
and
1 deletions
hw/pc.c
@@ -1525,6 +1525,11 @@ static QEMUMachine pc_machine_v0_10 = { | @@ -1525,6 +1525,11 @@ static QEMUMachine pc_machine_v0_10 = { | ||
1525 | .init = pc_init_pci, | 1525 | .init = pc_init_pci, |
1526 | .max_cpus = 255, | 1526 | .max_cpus = 255, |
1527 | .compat_props = (CompatProperty[]) { | 1527 | .compat_props = (CompatProperty[]) { |
1528 | + { | ||
1529 | + .driver = "virtio-blk-pci", | ||
1530 | + .property = "class", | ||
1531 | + .value = stringify(PCI_CLASS_STORAGE_OTHER), | ||
1532 | + }, | ||
1528 | { /* end of list */ } | 1533 | { /* end of list */ } |
1529 | }, | 1534 | }, |
1530 | }; | 1535 | }; |
hw/virtio-pci.c
@@ -86,6 +86,7 @@ typedef struct { | @@ -86,6 +86,7 @@ typedef struct { | ||
86 | PCIDevice pci_dev; | 86 | PCIDevice pci_dev; |
87 | VirtIODevice *vdev; | 87 | VirtIODevice *vdev; |
88 | uint32_t addr; | 88 | uint32_t addr; |
89 | + uint32_t class_code; | ||
89 | } VirtIOPCIProxy; | 90 | } VirtIOPCIProxy; |
90 | 91 | ||
91 | /* virtio device */ | 92 | /* virtio device */ |
@@ -435,7 +436,13 @@ static void virtio_blk_init_pci_with_class(PCIDevice *pci_dev, | @@ -435,7 +436,13 @@ static void virtio_blk_init_pci_with_class(PCIDevice *pci_dev, | ||
435 | 436 | ||
436 | static void virtio_blk_init_pci(PCIDevice *pci_dev) | 437 | static void virtio_blk_init_pci(PCIDevice *pci_dev) |
437 | { | 438 | { |
438 | - virtio_blk_init_pci_with_class(pci_dev, PCI_CLASS_STORAGE_SCSI); | 439 | + VirtIOPCIProxy *proxy = DO_UPCAST(VirtIOPCIProxy, pci_dev, pci_dev); |
440 | + | ||
441 | + if (proxy->class_code != PCI_CLASS_STORAGE_SCSI && | ||
442 | + proxy->class_code != PCI_CLASS_STORAGE_OTHER) | ||
443 | + proxy->class_code = PCI_CLASS_STORAGE_SCSI; | ||
444 | + | ||
445 | + virtio_blk_init_pci_with_class(pci_dev, proxy->class_code); | ||
439 | } | 446 | } |
440 | 447 | ||
441 | static void virtio_blk_init_pci_0_10(PCIDevice *pci_dev) | 448 | static void virtio_blk_init_pci_0_10(PCIDevice *pci_dev) |
@@ -497,6 +504,14 @@ static PCIDeviceInfo virtio_info[] = { | @@ -497,6 +504,14 @@ static PCIDeviceInfo virtio_info[] = { | ||
497 | .qdev.name = "virtio-blk-pci", | 504 | .qdev.name = "virtio-blk-pci", |
498 | .qdev.size = sizeof(VirtIOPCIProxy), | 505 | .qdev.size = sizeof(VirtIOPCIProxy), |
499 | .init = virtio_blk_init_pci, | 506 | .init = virtio_blk_init_pci, |
507 | + .qdev.props = (Property[]) { | ||
508 | + { | ||
509 | + .name = "class", | ||
510 | + .info = &qdev_prop_hex32, | ||
511 | + .offset = offsetof(VirtIOPCIProxy, class_code), | ||
512 | + }, | ||
513 | + {/* end of list */} | ||
514 | + }, | ||
500 | },{ | 515 | },{ |
501 | .qdev.name = "virtio-net-pci", | 516 | .qdev.name = "virtio-net-pci", |
502 | .qdev.size = sizeof(VirtIOPCIProxy), | 517 | .qdev.size = sizeof(VirtIOPCIProxy), |