Re: [PATCH v6 0/3] genirq/vfio: Introduce irq_update_devid() and optimize VFIO irq ops

From: Alex Williamson
Date: Fri Sep 13 2019 - 13:44:56 EST


On Tue, 10 Sep 2019 14:30:16 +0800
Ben Luo <luoben@xxxxxxxxxxxxxxxxx> wrote:

> A friendly reminder.

The vfio patch looks ok to me. Thomas, do you have further comments or
a preference on how to merge these? I'd tend to prefer the vfio
changes through my branch for testing and can pull the irq changes with
your approval, but we could do the reverse or split them and I could
follow with the vfio change once the irq changes are in mainline.
Thanks,

Alex

> å 2019/9/2 äå12:01, Ben Luo åé:
> > Currently, VFIO takes a free-then-request-irq way to do interrupt
> > affinity setting and masking/unmasking for a VM with device passthru
> > via VFIO. Sometimes it only changes the cookie data of irqaction or even
> > changes nothing. The free-then-request-irq not only adds more latency,
> > but also increases the risk of losing interrupt, which may lead to a
> > VM hang forever in waiting for IO completion
> >
> > This patchset solved the issue by:
> > Patch 2 introduces irq_update_devid() to only update dev_id of irqaction
> > Patch 3 make use of this function and optimize irq operations in VFIO
> >
> > changes from v5:
> > - Patch 3: remove an error log to avoid potential DDoS attacking
> > _ Patch 3: fix typo in comment
> >
> > changes from v4:
> > - Patch 3: follow the previous behavior to disable interrupt on error path
> > - Patch 3: do irqbypass registration before update or free the interrupt
> > - Patch 3: add more comments
> >
> > changes from v3:
> > - Patch 2: rename the new function to irq_update_devid()
> > - Patch 2: use disbale_irq() to avoid a twist for threaded interrupt
> > - ALL: amend commit messages and code comments
> >
> > changes from v2:
> > - reformat to avoid quoted string split across lines and etc.
> >
> > changes from v1:
> > - add Patch 1 to enhance error recovery etc. in free irq per tglx's comments
> > - enhance error recovery code and debugging info in irq_update_devid
> > - use __must_check in external referencing of this function
> > - use EXPORT_SYMBOL_GPL for irq_update_devid
> > - reformat code of patch 3 for better readability
> >
> > Ben Luo (3):
> > genirq: enhance error recovery code in free irq
> > genirq: introduce irq_update_devid()
> > vfio/pci: make use of irq_update_devid() and optimize irq ops
> >
> > drivers/vfio/pci/vfio_pci_intrs.c | 118 ++++++++++++++++++++++++++------------
> > include/linux/interrupt.h | 3 +
> > kernel/irq/manage.c | 105 +++++++++++++++++++++++++++++----
> > 3 files changed, 177 insertions(+), 49 deletions(-)
> >