On Sat, 26 Mar 2022 14:02:21 +0800 "Longpeng(Mike)" <longpeng2@xxxxxxxxxx> wrote: > From: Longpeng <longpeng2@xxxxxxxxxx> > > Hi guys, > > In vfio migration resume phase, the cost would increase if the > vfio device has more unmasked vectors. We try to optimize it in > this series. > > You can see the commit message in PATCH 6 for details. > > Patch 1-3 are simple cleanups and fixup. > Patch 4 are the preparations for the optimization. > Patch 5 optimizes the vfio msix setup path. > > v5: https://lore.kernel.org/all/20211103081657.1945-1-longpeng2@xxxxxxxxxx/T/ > > Change v5->v6: > - remove the Patch 4("kvm: irqchip: extract kvm_irqchip_add_deferred_msi_route") > of v5, and use KVMRouteChange API instead. [Paolo, Longpeng] > > Changes v4->v5: > - setup the notifier and irqfd in the same function to makes > the code neater. [Alex] > > Changes v3->v4: > - fix several typos and grammatical errors [Alex] > - remove the patches that fix and clean the MSIX common part > from this series [Alex] > - Patch 6: > - use vector->use directly and fill it with -1 on error > paths [Alex] > - add comment before enable deferring to commit [Alex] > - move the code that do_use/release on vector 0 into an > "else" branch [Alex] > - introduce vfio_prepare_kvm_msi_virq_batch() that enables > the 'defer_kvm_irq_routing' flag [Alex] > - introduce vfio_commit_kvm_msi_virq_batch() that clears the > 'defer_kvm_irq_routing' flag and does further work [Alex] > > Changes v2->v3: > - fix two errors [Longpeng] > > Changes v1->v2: > - fix several typos and grammatical errors [Alex, Philippe] > - split fixups and cleanups into separate patches [Alex, Philippe] > - introduce kvm_irqchip_add_deferred_msi_route to > minimize code changes [Alex] > - enable the optimization in msi setup path [Alex] > > Longpeng (Mike) (5): > vfio: simplify the conditional statements in vfio_msi_enable > vfio: move re-enabling INTX out of the common helper > vfio: simplify the failure path in vfio_msi_enable > Revert "vfio: Avoid disabling and enabling vectors repeatedly in VFIO > migration" > vfio: defer to commit kvm irq routing when enable msi/msix > > hw/vfio/pci.c | 183 +++++++++++++++++++++++++++++++------------------- > hw/vfio/pci.h | 2 + > 2 files changed, 115 insertions(+), 70 deletions(-) > Nice to see you found a solution with Paolo's suggestion for begin/commit batching. Looks ok to me; I'll queue this for after the v7.0 QEMU release and look for further reviews and comments in the interim. Thanks, Alex