From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755000AbcCVGv0 (ORCPT ); Tue, 22 Mar 2016 02:51:26 -0400 Received: from mail-pf0-f173.google.com ([209.85.192.173]:35214 "EHLO mail-pf0-f173.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752085AbcCVGvS (ORCPT ); Tue, 22 Mar 2016 02:51:18 -0400 From: Liang Chen To: kvm@vger.kernel.org Cc: mst@redhat.com, linux-kernel@vger.kernel.org, pbonzini@redhat.com, jay.vosburgh@canonical.com, Liang Chen , Gavin Guo Subject: [PATCH] virtio-pci: use possible fallback queue size Date: Tue, 22 Mar 2016 14:51:08 +0800 Message-Id: <1458629468-27184-1-git-send-email-liangchen.linux@gmail.com> X-Mailer: git-send-email 1.9.1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Virtio 1.0 spec allows driver to modify queue size to reduce momery requeirments. So the driver should write back the queue size actually allocated, instead of the original value read from the common config for the queue. Signed-off-by: Liang Chen Signed-off-by: Gavin Guo Suggested-by: Jay Vosburgh --- drivers/virtio/virtio_pci_common.h | 2 +- drivers/virtio/virtio_pci_modern.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/virtio/virtio_pci_common.h b/drivers/virtio/virtio_pci_common.h index 2cc2522..32ee993 100644 --- a/drivers/virtio/virtio_pci_common.h +++ b/drivers/virtio/virtio_pci_common.h @@ -36,7 +36,7 @@ struct virtio_pci_vq_info { struct virtqueue *vq; /* the number of entries in the queue */ - int num; + u16 num; /* the virtual address of the ring queue */ void *queue; diff --git a/drivers/virtio/virtio_pci_modern.c b/drivers/virtio/virtio_pci_modern.c index 7760fc1..7f9ccac 100644 --- a/drivers/virtio/virtio_pci_modern.c +++ b/drivers/virtio/virtio_pci_modern.c @@ -293,7 +293,7 @@ static size_t vring_pci_size(u16 num) return PAGE_ALIGN(vring_size(num, SMP_CACHE_BYTES)); } -static void *alloc_virtqueue_pages(int *num) +static void *alloc_virtqueue_pages(u16 *num) { void *pages; @@ -360,7 +360,7 @@ static struct virtqueue *setup_vq(struct virtio_pci_device *vp_dev, } /* activate the queue */ - vp_iowrite16(num, &cfg->queue_size); + vp_iowrite16(info->num, &cfg->queue_size); vp_iowrite64_twopart(virt_to_phys(info->queue), &cfg->queue_desc_lo, &cfg->queue_desc_hi); vp_iowrite64_twopart(virt_to_phys(virtqueue_get_avail(vq)), -- 1.9.1