Revision 53c25cea hw/virtio-blk.c
b/hw/virtio-blk.c | ||
---|---|---|
348 | 348 |
return 0; |
349 | 349 |
} |
350 | 350 |
|
351 |
static void virtio_blk_init(PCIDevice *pci_dev)
|
|
351 |
VirtIODevice *virtio_blk_init(DeviceState *dev)
|
|
352 | 352 |
{ |
353 | 353 |
VirtIOBlock *s; |
354 | 354 |
int cylinders, heads, secs; |
355 | 355 |
static int virtio_blk_id; |
356 | 356 |
BlockDriverState *bs; |
357 | 357 |
|
358 |
s = (VirtIOBlock *)virtio_init_pci(pci_dev, "virtio-blk", |
|
359 |
PCI_VENDOR_ID_REDHAT_QUMRANET, |
|
360 |
PCI_DEVICE_ID_VIRTIO_BLOCK, |
|
361 |
PCI_VENDOR_ID_REDHAT_QUMRANET, |
|
362 |
VIRTIO_ID_BLOCK, |
|
363 |
PCI_CLASS_STORAGE_OTHER, 0x00, |
|
364 |
sizeof(struct virtio_blk_config)); |
|
358 |
s = (VirtIOBlock *)virtio_common_init("virtio-blk", VIRTIO_ID_BLOCK, |
|
359 |
sizeof(struct virtio_blk_config), |
|
360 |
sizeof(VirtIOBlock)); |
|
365 | 361 |
|
366 |
bs = qdev_init_bdrv(&pci_dev->qdev, IF_VIRTIO);
|
|
362 |
bs = qdev_init_bdrv(dev, IF_VIRTIO); |
|
367 | 363 |
s->vdev.get_config = virtio_blk_update_config; |
368 | 364 |
s->vdev.get_features = virtio_blk_get_features; |
369 | 365 |
s->vdev.reset = virtio_blk_reset; |
370 | 366 |
s->bs = bs; |
371 | 367 |
s->rq = NULL; |
372 |
bs->private = &s->vdev.pci_dev;
|
|
368 |
bs->private = dev; |
|
373 | 369 |
bdrv_guess_geometry(s->bs, &cylinders, &heads, &secs); |
374 | 370 |
bdrv_set_geometry_hint(s->bs, cylinders, heads, secs); |
375 | 371 |
|
... | ... | |
378 | 374 |
qemu_add_vm_change_state_handler(virtio_blk_dma_restart_cb, s); |
379 | 375 |
register_savevm("virtio-blk", virtio_blk_id++, 2, |
380 | 376 |
virtio_blk_save, virtio_blk_load, s); |
381 |
} |
|
382 | 377 |
|
383 |
static void virtio_blk_register_devices(void) |
|
384 |
{ |
|
385 |
pci_qdev_register("virtio-blk", sizeof(VirtIOBlock), virtio_blk_init); |
|
378 |
return &s->vdev; |
|
386 | 379 |
} |
387 |
|
|
388 |
device_init(virtio_blk_register_devices) |
Also available in: Unified diff