virtio: use LGUEST_VRING_ALIGN instead of relying on pagesize
Subsystems (2)
PATCH 4/7 virtio: use LGUEST_VRING_ALIGN instead of relying on pagesize
This doesn't really matter, since lguest is i386 only at the moment, but we could actually choose a different value. (lguest doesn't have a guarenteed ABI).
Signed-off-by Rusty Russell <[email protected]>
--- Documentation/lguest/lguest.c | 6 +++--- drivers/lguest/lguest_device.c | 2 +- include/linux/lguest_launcher.h | 2 ++ 3 files changed, 6 insertions(+), 4 deletions(-)
Documentation/lguest/lguest.c +3 -3
@@ -1030,7 +1030,7 @@/* Zero out the virtqueues. */ for (vq = dev->vq; vq; vq = vq->next) {memset (vq->vring.desc,0 , -vring_size (vq->config.num,getpagesize ())); +vring_size (vq->config.num,LGUEST_VRING_ALIGN ));lg_last_avail (vq) =0 ; } }else if (dev->desc->status &VIRTIO_CONFIG_S_FAILED ) {
@@ -1211,7 +1211,7 @@void *p;/* First we need some memory for this virtqueue. */ - pages = (vring_size (num_descs,getpagesize ()) +getpagesize () -1 ) + pages = (vring_size (num_descs,LGUEST_VRING_ALIGN ) +getpagesize () -1 ) /getpagesize (); p =get_pages (pages);
@@ -1228,7 +1228,7 @@ vq->config.pfn =to_guest_phys (p) /getpagesize ();/* Initialize the vring. */ -vring_init (&vq->vring, num_descs, p,getpagesize ()); +vring_init (&vq->vring, num_descs, p,LGUEST_VRING_ALIGN );/* Append virtqueue to this device's descriptor. We use * device_config() to get the end of the device's current virtqueues;
drivers/lguest/lguest_device.c +1 -1
@@ -250,7 +250,7 @@/* Figure out how many pages the ring will take, and map that memory */ lvq->pages =lguest_map ((unsigned long )lvq->config.pfn <<PAGE_SHIFT ,DIV_ROUND_UP (vring_size (lvq->config.num, -PAGE_SIZE ), +LGUEST_VRING_ALIGN ),PAGE_SIZE ));if (!lvq->pages) { err = -ENOMEM ;
include/linux/lguest_launcher.h +2 -0
@@ -59,4 +59,6 @@LHREQ_IRQ ,/* + irq */ LHREQ_BREAK, /* + on/off flag (on blocks until someone does off) */ }; + +#define LGUEST_VRING_ALIGN 4096#endif /* _LINUX_LGUEST_LAUNCHER */