Lines Matching refs:dev
130 static enum handler_return virtio_block_irq_driver_callback(struct virtio_device *dev, uint ring, c…
138 struct virtio_device *dev; member
168 status_t virtio_block_init(struct virtio_device *dev, uint32_t host_features) { in virtio_block_init() argument
169 LTRACEF("dev %p, host_features %#x\n", dev, host_features); in virtio_block_init()
176 bdev->dev = dev; in virtio_block_init()
177 dev->priv = bdev; in virtio_block_init()
180 virtio_reset_device(dev); in virtio_block_init()
182 volatile struct virtio_blk_config *config = (struct virtio_blk_config *)dev->config_ptr; in virtio_block_init()
190 virtio_status_acknowledge_driver(dev); in virtio_block_init()
202 virtio_set_guest_features(dev, 0, bdev->guest_features); in virtio_block_init()
207 virtio_alloc_ring(dev, 0, VIRTIO_BLK_RING_LEN); in virtio_block_init()
215 dev->irq_driver_callback = &virtio_block_irq_driver_callback; in virtio_block_init()
218 virtio_status_driver_ok(dev); in virtio_block_init()
264 static enum handler_return virtio_block_irq_driver_callback(struct virtio_device *dev, uint ring, c… in virtio_block_irq_driver_callback() argument
265 struct virtio_block_dev *bdev = (struct virtio_block_dev *)dev->priv; in virtio_block_irq_driver_callback()
269 …LTRACEF("dev %p, ring %u, e %p, id %u, len %u, status %d\n", dev, ring, e, e->id, e->len, txn->sta… in virtio_block_irq_driver_callback()
275 struct vring_desc *desc = virtio_desc_index_to_desc(dev, ring, i); in virtio_block_irq_driver_callback()
286 virtio_free_desc(dev, ring, i); in virtio_block_irq_driver_callback()
305 static status_t virtio_block_do_txn(struct virtio_device *dev, void *buf, in virtio_block_do_txn() argument
309 struct virtio_block_dev *bdev = (struct virtio_block_dev *)dev->priv; in virtio_block_do_txn()
314 LTRACEF("dev %p, buf %p, offset 0x%llx, len %zu\n", dev, buf, offset, len); in virtio_block_do_txn()
316 desc = virtio_alloc_desc_chain(dev, 0, 3, &i); in virtio_block_do_txn()
351 desc = virtio_desc_index_to_desc(dev, 0, desc->next); in virtio_block_do_txn()
390 uint16_t next_i = virtio_alloc_desc(dev, 0); in virtio_block_do_txn()
391 struct vring_desc *next_desc = virtio_desc_index_to_desc(dev, 0, next_i); in virtio_block_do_txn()
417 desc = virtio_desc_index_to_desc(dev, 0, desc->next); in virtio_block_do_txn()
423 virtio_submit_chain(dev, 0, i); in virtio_block_do_txn()
426 virtio_kick(dev, 0); in virtio_block_do_txn()
431 static void sync_completion_cb(void *cookie, struct bdev *dev, ssize_t bytes) { in sync_completion_cb() argument
437 ssize_t virtio_block_read_write(struct virtio_device *dev, void *buf, in virtio_block_read_write() argument
444 status_t err = virtio_block_do_txn(dev, buf, offset, len, write, in virtio_block_read_write()
461 struct virtio_block_dev *dev = containerof(bdev, struct virtio_block_dev, bdev); in virtio_bdev_read_block() local
465 ssize_t result = virtio_block_read_write(dev->dev, buf, (off_t)block * dev->bdev.block_size, in virtio_bdev_read_block()
466 count * dev->bdev.block_size, false); in virtio_bdev_read_block()
474 struct virtio_block_dev *dev = in virtio_bdev_read_async() local
477 return virtio_block_do_txn(dev->dev, buf, offset, len, false, callback, in virtio_bdev_read_async()
482 struct virtio_block_dev *dev = containerof(bdev, struct virtio_block_dev, bdev); in virtio_bdev_write_block() local
486 …ssize_t result = virtio_block_read_write(dev->dev, (void *)buf, (off_t)block * dev->bdev.block_siz… in virtio_bdev_write_block()
487 count * dev->bdev.block_size, true); in virtio_bdev_write_block()