[SeaBIOS] [PATCH] virtio page align and usleep changes

Gleb Natapov gleb at redhat.com
Sun May 16 09:20:14 CEST 2010


On Sat, May 15, 2010 at 01:29:39PM -0400, Kevin O'Connor wrote:
> Hi Gleb,
> 
> Is it okay for irqs to trigger during the wait for a read to complete?
> I would think a read could take some time for the host to complete and
> allowing the guest to handle irqs would be useful.
> 
Processing irqs while waiting shouldn't be a problem.

> Also, the code looks to be manually obtaining a page aligned buffer -
> seabios can do this natively.  Using the aligned allocation functions
> reduces the memory pressure on the permanent low memory area.
> 
Looks good. Thanks!

> -Kevin
> 
> 
> diff --git a/src/virtio-blk.c b/src/virtio-blk.c
> index 6c3f8a5..7cc2edb 100644
> --- a/src/virtio-blk.c
> +++ b/src/virtio-blk.c
> @@ -58,7 +58,7 @@ virtio_blk_read(struct disk_op_s *op)
>  
>      /* Wait for reply */
>      while (!vring_more_used(vq))
> -        udelay(5);
> +        usleep(5);
>  
>      /* Reclaim virtqueue element */
>      vring_get_buf(vq, NULL);
> @@ -104,7 +104,7 @@ virtio_blk_setup(void)
>                  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);
> diff --git a/src/virtio-ring.h b/src/virtio-ring.h
> index 95ae85b..3fb86fe 100644
> --- a/src/virtio-ring.h
> +++ b/src/virtio-ring.h
> @@ -72,7 +72,7 @@ struct vring {
>           + 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;

--
			Gleb.



More information about the SeaBIOS mailing list