Re: [PATCH v3 1/5] vfio/pci: Disable INTx fast path if using split irqchip

2020-03-17 Thread Alex Williamson
On Tue, 17 Mar 2020 15:50:38 -0400
Peter Xu  wrote:

> It's currently broken.  Let's use the slow path to at least make it
> functional.
> 
> Tested-by: Eric Auger 
> Reviewed-by: Eric Auger 
> Signed-off-by: Peter Xu 
> ---
>  hw/vfio/pci.c | 12 
>  1 file changed, 12 insertions(+)

Reviewed-by: Alex Williamson 
Acked-by: Alex Williamson 
 
> diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c
> index 5e75a95129..98e0e0c994 100644
> --- a/hw/vfio/pci.c
> +++ b/hw/vfio/pci.c
> @@ -128,6 +128,18 @@ static void vfio_intx_enable_kvm(VFIOPCIDevice *vdev, 
> Error **errp)
>  return;
>  }
>  
> +if (kvm_irqchip_is_split()) {
> +/*
> + * VFIO INTx is currently not working with split kernel
> + * irqchip for level triggered interrupts.  Go the slow path
> + * as long as split is enabled so we can be at least
> + * functional (even with poor performance).
> + *
> + * TODO: Remove this after all things fixed up.
> + */
> +return;
> +}
> +
>  /* Get to a known interrupt state */
>  qemu_set_fd_handler(irqfd.fd, NULL, NULL, vdev);
>  vfio_mask_single_irqindex(&vdev->vbasedev, VFIO_PCI_INTX_IRQ_INDEX);




[PATCH v3 1/5] vfio/pci: Disable INTx fast path if using split irqchip

2020-03-17 Thread Peter Xu
It's currently broken.  Let's use the slow path to at least make it
functional.

Tested-by: Eric Auger 
Reviewed-by: Eric Auger 
Signed-off-by: Peter Xu 
---
 hw/vfio/pci.c | 12 
 1 file changed, 12 insertions(+)

diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c
index 5e75a95129..98e0e0c994 100644
--- a/hw/vfio/pci.c
+++ b/hw/vfio/pci.c
@@ -128,6 +128,18 @@ static void vfio_intx_enable_kvm(VFIOPCIDevice *vdev, 
Error **errp)
 return;
 }
 
+if (kvm_irqchip_is_split()) {
+/*
+ * VFIO INTx is currently not working with split kernel
+ * irqchip for level triggered interrupts.  Go the slow path
+ * as long as split is enabled so we can be at least
+ * functional (even with poor performance).
+ *
+ * TODO: Remove this after all things fixed up.
+ */
+return;
+}
+
 /* Get to a known interrupt state */
 qemu_set_fd_handler(irqfd.fd, NULL, NULL, vdev);
 vfio_mask_single_irqindex(&vdev->vbasedev, VFIO_PCI_INTX_IRQ_INDEX);
-- 
2.24.1