/* Wait for reply */
while (!vring_more_used(vq))
- udelay(5);
+ usleep(5);
/* Reclaim virtqueue element */
vring_get_buf(vq, NULL);
pci_bdf_to_dev(bdf));
char *desc = malloc_tmphigh(MAXDESCSIZE);
struct virtiodrive_s *vdrive_g = malloc_fseg(sizeof(*vdrive_g));
- struct vring_virtqueue *vq = malloc_low(sizeof(*vq));
+ struct vring_virtqueue *vq = memalign_low(PAGE_SIZE, sizeof(*vq));
if (!vdrive_g || !desc || !vq) {
free(vdrive_g);
free(desc);
free(desc);
free(vq);
dprintf(1, "fail to find vq for virtio-blk %x:%x\n",
- pci_bdf_to_bus (bdf), pci_bdf_to_dev(bdf));
+ pci_bdf_to_bus(bdf), pci_bdf_to_dev(bdf));
continue;
}
vdrive_g->drive.blksize = cfg.blk_size;
vdrive_g->drive.sectors = cfg.capacity;
dprintf(3, "virtio-blk %x:%x blksize=%d sectors=%u\n",
- pci_bdf_to_bus (bdf), pci_bdf_to_dev(bdf),
+ pci_bdf_to_bus(bdf), pci_bdf_to_dev(bdf),
vdrive_g->drive.blksize, (u32)vdrive_g->drive.sectors);
vdrive_g->drive.pchs.cylinders = cfg.cylinders;
VIRTIO_CONFIG_S_DRIVER | VIRTIO_CONFIG_S_DRIVER_OK);
}
}
-
+ PAGE_MASK) & ~PAGE_MASK) + \
(sizeof(struct vring_used) + sizeof(struct vring_used_elem) * num))
-typedef unsigned char virtio_queue_t[PAGE_MASK + vring_size(MAX_QUEUE_NUM)];
+typedef unsigned char virtio_queue_t[vring_size(MAX_QUEUE_NUM)];
struct vring_virtqueue {
virtio_queue_t queue;