From 7be43783502be4e154dcbb7226227ac115a588e9 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Tue, 30 Dec 2008 09:26:02 -0600 Subject: [PATCH] --- yaml --- r: 123977 b: refs/heads/master c: db40598863e8cbbd11053ad3c8bae89000f603f9 h: refs/heads/master i: 123975: 48b3509407f54cd14e4db1316ef4660c478efda0 v: v3 --- [refs] | 2 +- trunk/arch/s390/include/asm/kvm_virtio.h | 4 ++++ trunk/drivers/s390/kvm/kvm_virtio.c | 9 ++++++--- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index ee1eef008419..17372fdb706c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2966af73e70dee461c256b5eb877b2ff757f8c82 +refs/heads/master: db40598863e8cbbd11053ad3c8bae89000f603f9 diff --git a/trunk/arch/s390/include/asm/kvm_virtio.h b/trunk/arch/s390/include/asm/kvm_virtio.h index c13568b9351c..0503936f101f 100644 --- a/trunk/arch/s390/include/asm/kvm_virtio.h +++ b/trunk/arch/s390/include/asm/kvm_virtio.h @@ -50,6 +50,10 @@ struct kvm_vqconfig { #define KVM_S390_VIRTIO_RESET 1 #define KVM_S390_VIRTIO_SET_STATUS 2 +/* The alignment to use between consumer and producer parts of vring. + * This is pagesize for historical reasons. */ +#define KVM_S390_VIRTIO_RING_ALIGN 4096 + #ifdef __KERNEL__ /* early virtio console setup */ #ifdef CONFIG_S390_GUEST diff --git a/trunk/drivers/s390/kvm/kvm_virtio.c b/trunk/drivers/s390/kvm/kvm_virtio.c index 3d442444c618..f5a2dbe75575 100644 --- a/trunk/drivers/s390/kvm/kvm_virtio.c +++ b/trunk/drivers/s390/kvm/kvm_virtio.c @@ -188,7 +188,8 @@ static struct virtqueue *kvm_find_vq(struct virtio_device *vdev, config = kvm_vq_config(kdev->desc)+index; err = vmem_add_mapping(config->address, - vring_size(config->num, PAGE_SIZE)); + vring_size(config->num, + KVM_S390_VIRTIO_RING_ALIGN)); if (err) goto out; @@ -209,7 +210,8 @@ static struct virtqueue *kvm_find_vq(struct virtio_device *vdev, return vq; unmap: vmem_remove_mapping(config->address, - vring_size(config->num, PAGE_SIZE)); + vring_size(config->num, + KVM_S390_VIRTIO_RING_ALIGN)); out: return ERR_PTR(err); } @@ -220,7 +222,8 @@ static void kvm_del_vq(struct virtqueue *vq) vring_del_virtqueue(vq); vmem_remove_mapping(config->address, - vring_size(config->num, PAGE_SIZE)); + vring_size(config->num, + KVM_S390_VIRTIO_RING_ALIGN)); } /*