[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] virtio-serial: Allow one MSI-X vector per virtq
From: |
Amit Shah |
Subject: |
Re: [Qemu-devel] [PATCH] virtio-serial: Allow one MSI-X vector per virtqueue |
Date: |
Fri, 16 Dec 2011 15:09:45 +0530 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On (Fri) 16 Dec 2011 [09:14:26], address@hidden wrote:
> From: Hongyong Zang <address@hidden>
>
> In pci_enable_msix(), the guest's virtio-serial driver tries to set msi-x
> with one vector per queue. But it fails and eventually all virtio-serial
> ports share one MSI-X vector. Because every virtio-serial port has *two*
> virtqueues, virtio-serial needs (port+1)*2 vectors other than (port+1).
Ouch, good catch.
One comment below:
> This patch allows every virtqueue to have its own MSI-X vector.
> (When the MSI-X vectors needed are more than MSIX_MAX_ENTRIES defined in
> qemu: msix.c, all the queues still share one MSI-X vector as before.)
>
> Signed-off-by: Hongyong Zang <address@hidden>
> ---
> hw/virtio-pci.c | 5 ++++-
> 1 files changed, 4 insertions(+), 1 deletions(-)
>
> diff --git a/hw/virtio-pci.c b/hw/virtio-pci.c
> index 77b75bc..2c9c6fb 100644
> --- a/hw/virtio-pci.c
> +++ b/hw/virtio-pci.c
> @@ -718,8 +718,11 @@ static int virtio_serial_init_pci(PCIDevice *pci_dev)
> return -1;
> }
> vdev->nvectors = proxy->nvectors == DEV_NVECTORS_UNSPECIFIED
> - ? proxy->serial.max_virtserial_ports
> + 1
> + ?
> (proxy->serial.max_virtserial_ports + 1) * 2
> : proxy->nvectors;
> + /*msix.c: #define MSIX_MAX_ENTRIES 32*/
> + if (vdev->nvectors > 32)
> + vdev->nvectors = 32;
This change isn't needed: if the proxy->nvectors value exceeds the max
allowed, virtio_init_pci() will end up using a shared vector instead
of separate ones.
Thanks,
Amit