net/virtio: fix Rx interrupt with VFIO
authorZhiyong Yang <zhiyong.yang@intel.com>
Thu, 9 Nov 2017 09:21:24 +0000 (17:21 +0800)
committerThomas Monjalon <thomas@monjalon.net>
Sat, 11 Nov 2017 14:54:16 +0000 (15:54 +0100)
commitfe19d49cb5259aad57c94391b2592367ba882ad6
tree2f6c45af24582206c35a929ced0b2a3bbb87a7ea
parentb113cb5ee6cec14a9892df1143217e358a58f5d6
net/virtio: fix Rx interrupt with VFIO

When running l3fwd-power to test virtio rxq interrupt using vfio
pci noiommu mode, startup fails. In the function virtio_read_caps,
the code if (flags & PCI_MSIX_ENABLE) intends to double check
if vfio msix is enabled or not. However, it is not enable at that
time. So use_msix is assigned to "0", not "1", which causes the
failure of configuring rxq intr in l3fwd-power.
This patch adds the function "vtpci_msix_detect" to detect the status
of msix when interrupt changes happen.
In the meanwhile, virtio_intr_enable/disable are introduced to wrap
rte_intr_enable/disable to enhance the ability to detect msix.
use_msix can indicate three different msix status by:
VIRTIO_MSIX_NONE (0)
VIRTIO_MSIX_DISABLED (1)
VIRTIO_MSIX_ENABLED (2)

Fixes: cb482cb3a305 ("net/virtio: fix MAC address read")
Cc: stable@dpdk.org
Signed-off-by: Zhiyong Yang <zhiyong.yang@intel.com>
Acked-by: Jianfeng Tan <jianfeng.tan@intel.com>
Acked-by: Maxime Coquelin <maxime.coquelin@redhat.com>
drivers/net/virtio/virtio_ethdev.c
drivers/net/virtio/virtio_pci.c
drivers/net/virtio/virtio_pci.h