2023-04-27 17:38:42

by Reinette Chatre

[permalink] [raw]
Subject: [PATCH V4 01/11] vfio/pci: Consolidate irq cleanup on MSI/MSI-X disable

vfio_msi_disable() releases all previously allocated state
associated with each interrupt before disabling MSI/MSI-X.

vfio_msi_disable() iterates twice over the interrupt state:
first directly with a for loop to do virqfd cleanup, followed
by another for loop within vfio_msi_set_block() that removes
the interrupt handler and its associated state using
vfio_msi_set_vector_signal().

Simplify interrupt cleanup by iterating over allocated interrupts
once.

Signed-off-by: Reinette Chatre <[email protected]>
---
No changes since V3.

Changes since V2:
- Improve accuracy of changelog.

drivers/vfio/pci/vfio_pci_intrs.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/vfio/pci/vfio_pci_intrs.c b/drivers/vfio/pci/vfio_pci_intrs.c
index bffb0741518b..6a9c6a143cc3 100644
--- a/drivers/vfio/pci/vfio_pci_intrs.c
+++ b/drivers/vfio/pci/vfio_pci_intrs.c
@@ -426,10 +426,9 @@ static void vfio_msi_disable(struct vfio_pci_core_device *vdev, bool msix)
for (i = 0; i < vdev->num_ctx; i++) {
vfio_virqfd_disable(&vdev->ctx[i].unmask);
vfio_virqfd_disable(&vdev->ctx[i].mask);
+ vfio_msi_set_vector_signal(vdev, i, -1, msix);
}

- vfio_msi_set_block(vdev, 0, vdev->num_ctx, NULL, msix);
-
cmd = vfio_pci_memory_lock_and_enable(vdev);
pci_free_irq_vectors(pdev);
vfio_pci_memory_unlock_and_restore(vdev, cmd);
--
2.34.1


2023-04-28 06:33:42

by Tian, Kevin

[permalink] [raw]
Subject: RE: [PATCH V4 01/11] vfio/pci: Consolidate irq cleanup on MSI/MSI-X disable

> From: Chatre, Reinette <[email protected]>
> Sent: Friday, April 28, 2023 1:36 AM
>
> vfio_msi_disable() releases all previously allocated state
> associated with each interrupt before disabling MSI/MSI-X.
>
> vfio_msi_disable() iterates twice over the interrupt state:
> first directly with a for loop to do virqfd cleanup, followed
> by another for loop within vfio_msi_set_block() that removes
> the interrupt handler and its associated state using
> vfio_msi_set_vector_signal().
>
> Simplify interrupt cleanup by iterating over allocated interrupts
> once.
>
> Signed-off-by: Reinette Chatre <[email protected]>

Reviewed-by: Kevin Tian <[email protected]>