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,7 +33,6 @@ | ||
| 33 | #include "boards.h" | 33 | #include "boards.h" |
| 34 | #include "monitor.h" | 34 | #include "monitor.h" |
| 35 | #include "fw_cfg.h" | 35 | #include "fw_cfg.h" |
| 36 | -#include "virtio-blk.h" | ||
| 37 | #include "virtio-balloon.h" | 36 | #include "virtio-balloon.h" |
| 38 | #include "virtio-console.h" | 37 | #include "virtio-console.h" |
| 39 | #include "hpet_emul.h" | 38 | #include "hpet_emul.h" |
| @@ -1136,7 +1135,7 @@ static void pc_init1(ram_addr_t ram_size, | @@ -1136,7 +1135,7 @@ static void pc_init1(ram_addr_t ram_size, | ||
| 1136 | int unit_id = 0; | 1135 | int unit_id = 0; |
| 1137 | 1136 | ||
| 1138 | while ((index = drive_get_index(IF_VIRTIO, 0, unit_id)) != -1) { | 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 | unit_id++; | 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,7 +120,8 @@ static PCIDevice *qemu_pci_hot_add_storage(Monitor *mon, PCIBus *pci_bus, | ||
| 120 | opaque = pci_create_simple(pci_bus, -1, "lsi53c895a"); | 120 | opaque = pci_create_simple(pci_bus, -1, "lsi53c895a"); |
| 121 | break; | 121 | break; |
| 122 | case IF_VIRTIO: | 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 | break; | 125 | break; |
| 125 | } | 126 | } |
| 126 | 127 |
hw/ppc440_bamboo.c
| @@ -16,7 +16,6 @@ | @@ -16,7 +16,6 @@ | ||
| 16 | #include "net.h" | 16 | #include "net.h" |
| 17 | #include "hw.h" | 17 | #include "hw.h" |
| 18 | #include "pci.h" | 18 | #include "pci.h" |
| 19 | -#include "virtio-blk.h" | ||
| 20 | #include "virtio-console.h" | 19 | #include "virtio-console.h" |
| 21 | #include "boards.h" | 20 | #include "boards.h" |
| 22 | #include "sysemu.h" | 21 | #include "sysemu.h" |
| @@ -113,7 +112,7 @@ static void bamboo_init(ram_addr_t ram_size, | @@ -113,7 +112,7 @@ static void bamboo_init(ram_addr_t ram_size, | ||
| 113 | 112 | ||
| 114 | /* Add virtio block devices. */ | 113 | /* Add virtio block devices. */ |
| 115 | while ((i = drive_get_index(IF_VIRTIO, 0, unit_id)) != -1) { | 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 | unit_id++; | 116 | unit_id++; |
| 118 | } | 117 | } |
| 119 | 118 |
hw/ppce500_mpc8544ds.c
| @@ -22,7 +22,6 @@ | @@ -22,7 +22,6 @@ | ||
| 22 | #include "hw.h" | 22 | #include "hw.h" |
| 23 | #include "pc.h" | 23 | #include "pc.h" |
| 24 | #include "pci.h" | 24 | #include "pci.h" |
| 25 | -#include "virtio-blk.h" | ||
| 26 | #include "boards.h" | 25 | #include "boards.h" |
| 27 | #include "sysemu.h" | 26 | #include "sysemu.h" |
| 28 | #include "kvm.h" | 27 | #include "kvm.h" |
| @@ -221,7 +220,7 @@ static void mpc8544ds_init(ram_addr_t ram_size, | @@ -221,7 +220,7 @@ static void mpc8544ds_init(ram_addr_t ram_size, | ||
| 221 | 220 | ||
| 222 | /* Add virtio block devices. */ | 221 | /* Add virtio block devices. */ |
| 223 | while ((i = drive_get_index(IF_VIRTIO, 0, unit_id)) != -1) { | 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 | unit_id++; | 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,19 +348,14 @@ static int virtio_blk_load(QEMUFile *f, void *opaque, int version_id) | ||
| 348 | return 0; | 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 | VirtIOBlock *s; | 353 | VirtIOBlock *s; |
| 354 | int cylinders, heads, secs; | 354 | int cylinders, heads, secs; |
| 355 | static int virtio_blk_id; | 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 | PCI_VENDOR_ID_REDHAT_QUMRANET, | 359 | PCI_VENDOR_ID_REDHAT_QUMRANET, |
| 365 | PCI_DEVICE_ID_VIRTIO_BLOCK, | 360 | PCI_DEVICE_ID_VIRTIO_BLOCK, |
| 366 | PCI_VENDOR_ID_REDHAT_QUMRANET, | 361 | PCI_VENDOR_ID_REDHAT_QUMRANET, |
| @@ -368,6 +363,7 @@ void *virtio_blk_init(PCIBus *bus, BlockDriverState *bs) | @@ -368,6 +363,7 @@ void *virtio_blk_init(PCIBus *bus, BlockDriverState *bs) | ||
| 368 | PCI_CLASS_STORAGE_OTHER, 0x00, | 363 | PCI_CLASS_STORAGE_OTHER, 0x00, |
| 369 | sizeof(struct virtio_blk_config)); | 364 | sizeof(struct virtio_blk_config)); |
| 370 | 365 | ||
| 366 | + bs = qdev_init_bdrv(&pci_dev->qdev, IF_VIRTIO); | ||
| 371 | s->vdev.get_config = virtio_blk_update_config; | 367 | s->vdev.get_config = virtio_blk_update_config; |
| 372 | s->vdev.get_features = virtio_blk_get_features; | 368 | s->vdev.get_features = virtio_blk_get_features; |
| 373 | s->vdev.reset = virtio_blk_reset; | 369 | s->vdev.reset = virtio_blk_reset; |
| @@ -382,6 +378,11 @@ void *virtio_blk_init(PCIBus *bus, BlockDriverState *bs) | @@ -382,6 +378,11 @@ void *virtio_blk_init(PCIBus *bus, BlockDriverState *bs) | ||
| 382 | qemu_add_vm_change_state_handler(virtio_blk_dma_restart_cb, s); | 378 | qemu_add_vm_change_state_handler(virtio_blk_dma_restart_cb, s); |
| 383 | register_savevm("virtio-blk", virtio_blk_id++, 2, | 379 | register_savevm("virtio-blk", virtio_blk_id++, 2, |
| 384 | virtio_blk_save, virtio_blk_load, s); | 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) |