Commit 07e3af9ac31008a1d7eaaf44d62a13545f01c579
1 parent
b4496b13
Virtio-blk qdev conversion
Signed-off-by: Paul Brook <paul@codesourcery.com>
Showing
6 changed files
with
15 additions
and
18 deletions
hw/pc.c
| ... | ... | @@ -33,7 +33,6 @@ |
| 33 | 33 | #include "boards.h" |
| 34 | 34 | #include "monitor.h" |
| 35 | 35 | #include "fw_cfg.h" |
| 36 | -#include "virtio-blk.h" | |
| 37 | 36 | #include "virtio-balloon.h" |
| 38 | 37 | #include "virtio-console.h" |
| 39 | 38 | #include "hpet_emul.h" |
| ... | ... | @@ -1136,7 +1135,7 @@ static void pc_init1(ram_addr_t ram_size, |
| 1136 | 1135 | int unit_id = 0; |
| 1137 | 1136 | |
| 1138 | 1137 | while ((index = drive_get_index(IF_VIRTIO, 0, unit_id)) != -1) { |
| 1139 | - virtio_blk_init(pci_bus, drives_table[index].bdrv); | |
| 1138 | + pci_create_simple(pci_bus, -1, "virtio-blk"); | |
| 1140 | 1139 | unit_id++; |
| 1141 | 1140 | } |
| 1142 | 1141 | } | ... | ... |
hw/pci-hotplug.c
| ... | ... | @@ -120,7 +120,8 @@ static PCIDevice *qemu_pci_hot_add_storage(Monitor *mon, PCIBus *pci_bus, |
| 120 | 120 | opaque = pci_create_simple(pci_bus, -1, "lsi53c895a"); |
| 121 | 121 | break; |
| 122 | 122 | case IF_VIRTIO: |
| 123 | - opaque = virtio_blk_init (pci_bus, drives_table[drive_idx].bdrv); | |
| 123 | + opaque = pci_create_simple(pci_bus, -1, "virtio-blk"); | |
| 124 | + qdev_init(opaque); | |
| 124 | 125 | break; |
| 125 | 126 | } |
| 126 | 127 | ... | ... |
hw/ppc440_bamboo.c
| ... | ... | @@ -16,7 +16,6 @@ |
| 16 | 16 | #include "net.h" |
| 17 | 17 | #include "hw.h" |
| 18 | 18 | #include "pci.h" |
| 19 | -#include "virtio-blk.h" | |
| 20 | 19 | #include "virtio-console.h" |
| 21 | 20 | #include "boards.h" |
| 22 | 21 | #include "sysemu.h" |
| ... | ... | @@ -113,7 +112,7 @@ static void bamboo_init(ram_addr_t ram_size, |
| 113 | 112 | |
| 114 | 113 | /* Add virtio block devices. */ |
| 115 | 114 | while ((i = drive_get_index(IF_VIRTIO, 0, unit_id)) != -1) { |
| 116 | - virtio_blk_init(pcibus, drives_table[i].bdrv); | |
| 115 | + pci_create_simple(pcibus, -1, "virtio-blk"); | |
| 117 | 116 | unit_id++; |
| 118 | 117 | } |
| 119 | 118 | ... | ... |
hw/ppce500_mpc8544ds.c
| ... | ... | @@ -22,7 +22,6 @@ |
| 22 | 22 | #include "hw.h" |
| 23 | 23 | #include "pc.h" |
| 24 | 24 | #include "pci.h" |
| 25 | -#include "virtio-blk.h" | |
| 26 | 25 | #include "boards.h" |
| 27 | 26 | #include "sysemu.h" |
| 28 | 27 | #include "kvm.h" |
| ... | ... | @@ -221,7 +220,7 @@ static void mpc8544ds_init(ram_addr_t ram_size, |
| 221 | 220 | |
| 222 | 221 | /* Add virtio block devices. */ |
| 223 | 222 | while ((i = drive_get_index(IF_VIRTIO, 0, unit_id)) != -1) { |
| 224 | - virtio_blk_init(pci_bus, drives_table[i].bdrv); | |
| 223 | + pci_create_simple(pci_bus, -1, "virtio-blk"); | |
| 225 | 224 | unit_id++; |
| 226 | 225 | } |
| 227 | 226 | ... | ... |
hw/virtio-blk.c
| ... | ... | @@ -348,19 +348,14 @@ static int virtio_blk_load(QEMUFile *f, void *opaque, int version_id) |
| 348 | 348 | return 0; |
| 349 | 349 | } |
| 350 | 350 | |
| 351 | -void *virtio_blk_init(PCIBus *bus, BlockDriverState *bs) | |
| 351 | +static void virtio_blk_init(PCIDevice *pci_dev) | |
| 352 | 352 | { |
| 353 | 353 | VirtIOBlock *s; |
| 354 | 354 | int cylinders, heads, secs; |
| 355 | 355 | static int virtio_blk_id; |
| 356 | - PCIDevice *d; | |
| 357 | - | |
| 358 | - d = pci_register_device(bus, "virtio-blk", sizeof(VirtIOBlock), | |
| 359 | - -1, NULL, NULL); | |
| 360 | - if (!d) | |
| 361 | - return NULL; | |
| 356 | + BlockDriverState *bs; | |
| 362 | 357 | |
| 363 | - s = (VirtIOBlock *)virtio_init_pci(d, "virtio-blk", | |
| 358 | + s = (VirtIOBlock *)virtio_init_pci(pci_dev, "virtio-blk", | |
| 364 | 359 | PCI_VENDOR_ID_REDHAT_QUMRANET, |
| 365 | 360 | PCI_DEVICE_ID_VIRTIO_BLOCK, |
| 366 | 361 | PCI_VENDOR_ID_REDHAT_QUMRANET, |
| ... | ... | @@ -368,6 +363,7 @@ void *virtio_blk_init(PCIBus *bus, BlockDriverState *bs) |
| 368 | 363 | PCI_CLASS_STORAGE_OTHER, 0x00, |
| 369 | 364 | sizeof(struct virtio_blk_config)); |
| 370 | 365 | |
| 366 | + bs = qdev_init_bdrv(&pci_dev->qdev, IF_VIRTIO); | |
| 371 | 367 | s->vdev.get_config = virtio_blk_update_config; |
| 372 | 368 | s->vdev.get_features = virtio_blk_get_features; |
| 373 | 369 | s->vdev.reset = virtio_blk_reset; |
| ... | ... | @@ -382,6 +378,11 @@ void *virtio_blk_init(PCIBus *bus, BlockDriverState *bs) |
| 382 | 378 | qemu_add_vm_change_state_handler(virtio_blk_dma_restart_cb, s); |
| 383 | 379 | register_savevm("virtio-blk", virtio_blk_id++, 2, |
| 384 | 380 | virtio_blk_save, virtio_blk_load, s); |
| 381 | +} | |
| 385 | 382 | |
| 386 | - return s; | |
| 383 | +static void virtio_blk_register_devices(void) | |
| 384 | +{ | |
| 385 | + pci_qdev_register("virtio-blk", sizeof(VirtIOBlock), virtio_blk_init); | |
| 387 | 386 | } |
| 387 | + | |
| 388 | +device_init(virtio_blk_register_devices) | ... | ... |