On 5/15/25 17:43, John Levon wrote:
> This makes for a slightly more readable vfio_msix_vector_do_use()
> implementation, and we will rely on this shortly.
>
> Signed-off-by: John Levon <john.levon@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Thanks,
C.
> ---
> hw/vfio/pci.c | 35 ++++++++++++++++++++---------------
> 1 file changed, 20 insertions(+), 15 deletions(-)
>
> diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c
> index 7912c17dd2..9dd0bd4068 100644
> --- a/hw/vfio/pci.c
> +++ b/hw/vfio/pci.c
> @@ -511,6 +511,25 @@ static void vfio_update_kvm_msi_virq(VFIOMSIVector *vector, MSIMessage msg,
> kvm_irqchip_commit_routes(kvm_state);
> }
>
> +static void set_irq_signalling(VFIODevice *vbasedev, VFIOMSIVector *vector,
> + unsigned int nr)
> +{
> + Error *err = NULL;
> + int32_t fd;
> +
> + if (vector->virq >= 0) {
> + fd = event_notifier_get_fd(&vector->kvm_interrupt);
> + } else {
> + fd = event_notifier_get_fd(&vector->interrupt);
> + }
> +
> + if (!vfio_device_irq_set_signaling(vbasedev, VFIO_PCI_MSIX_IRQ_INDEX, nr,
> + VFIO_IRQ_SET_ACTION_TRIGGER,
> + fd, &err)) {
> + error_reportf_err(err, VFIO_MSG_PREFIX, vbasedev->name);
> + }
> +}
> +
> static int vfio_msix_vector_do_use(PCIDevice *pdev, unsigned int nr,
> MSIMessage *msg, IOHandler *handler)
> {
> @@ -583,21 +602,7 @@ static int vfio_msix_vector_do_use(PCIDevice *pdev, unsigned int nr,
> strerror(-ret));
> }
> } else {
> - Error *err = NULL;
> - int32_t fd;
> -
> - if (vector->virq >= 0) {
> - fd = event_notifier_get_fd(&vector->kvm_interrupt);
> - } else {
> - fd = event_notifier_get_fd(&vector->interrupt);
> - }
> -
> - if (!vfio_device_irq_set_signaling(&vdev->vbasedev,
> - VFIO_PCI_MSIX_IRQ_INDEX, nr,
> - VFIO_IRQ_SET_ACTION_TRIGGER, fd,
> - &err)) {
> - error_reportf_err(err, VFIO_MSG_PREFIX, vdev->vbasedev.name);
> - }
> + set_irq_signalling(&vdev->vbasedev, vector, nr);
> }
> }
>