2382db
From f0550083eabcc0fff10cd8a55ed534f8563ce022 Mon Sep 17 00:00:00 2001
2382db
From: Alex Williamson <alex.williamson@redhat.com>
2382db
Date: Thu, 7 Aug 2014 21:03:20 +0200
2382db
Subject: [PATCH 07/10] vfio: Don't cache MSIMessage
2382db
2382db
Message-id: <20140807210320.11689.35203.stgit@gimli.home>
2382db
Patchwork-id: 60483
2382db
O-Subject: [RHEL7.0/z qemu-kvm PATCH v2 6/6] vfio: Don't cache MSIMessage
2382db
Bugzilla: 1110693 1110695
2382db
RH-Acked-by: Bandan Das <bsd@redhat.com>
2382db
RH-Acked-by: Amos Kong <akong@redhat.com>
2382db
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
2382db
2382db
Upstream: 9b3af4c0e40f14b5173ad6e2d9fcc376207ec1dd
2382db
2382db
Commit 40509f7f added a test to avoid updating KVM MSI routes when the
2382db
MSIMessage is unchanged and f4d45d47 switched to relying on this
2382db
rather than doing our own comparison.  Our cached msg is effectively
2382db
unused now.  Remove it.
2382db
2382db
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
2382db
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
2382db
---
2382db
 hw/misc/vfio.c |    8 ++------
2382db
 1 files changed, 2 insertions(+), 6 deletions(-)
2382db
2382db
diff --git a/hw/misc/vfio.c b/hw/misc/vfio.c
2382db
index 688e2ef..abaa4c1 100644
2382db
--- a/hw/misc/vfio.c
2382db
+++ b/hw/misc/vfio.c
2382db
@@ -131,7 +131,6 @@ typedef struct VFIOMSIVector {
2382db
     EventNotifier interrupt;
2382db
     EventNotifier kvm_interrupt;
2382db
     struct VFIODevice *vdev; /* back pointer to device */
2382db
-    MSIMessage msg; /* cache the MSI message so we know when it changes */
2382db
     int virq;
2382db
     bool use;
2382db
 } VFIOMSIVector;
2382db
@@ -725,7 +724,6 @@ static void vfio_add_kvm_msi_virq(VFIOMSIVector *vector, MSIMessage *msg,
2382db
         return;
2382db
     }
2382db
 
2382db
-    vector->msg = *msg;
2382db
     vector->virq = virq;
2382db
 }
2382db
 
2382db
@@ -741,7 +739,6 @@ static void vfio_remove_kvm_msi_virq(VFIOMSIVector *vector)
2382db
 static void vfio_update_kvm_msi_virq(VFIOMSIVector *vector, MSIMessage msg)
2382db
 {
2382db
     kvm_irqchip_update_msi_route(kvm_state, vector->virq, msg);
2382db
-    vector->msg = msg;
2382db
 }
2382db
 
2382db
 static int vfio_msix_vector_do_use(PCIDevice *pdev, unsigned int nr,
2382db
@@ -920,6 +917,7 @@ retry:
2382db
 
2382db
     for (i = 0; i < vdev->nr_vectors; i++) {
2382db
         VFIOMSIVector *vector = &vdev->msi_vectors[i];
2382db
+        MSIMessage msg = msi_get_message(&vdev->pdev, i);
2382db
 
2382db
         vector->vdev = vdev;
2382db
         vector->virq = -1;
2382db
@@ -932,13 +930,11 @@ retry:
2382db
         qemu_set_fd_handler(event_notifier_get_fd(&vector->interrupt),
2382db
                             vfio_msi_interrupt, NULL, vector);
2382db
 
2382db
-        vector->msg = msi_get_message(&vdev->pdev, i);
2382db
-
2382db
         /*
2382db
          * Attempt to enable route through KVM irqchip,
2382db
          * default to userspace handling if unavailable.
2382db
          */
2382db
-        vfio_add_kvm_msi_virq(vector, &vector->msg, false);
2382db
+        vfio_add_kvm_msi_virq(vector, &msg, false);
2382db
     }
2382db
 
2382db
     /* Set interrupt type prior to possible interrupts */
2382db
-- 
2382db
1.7.1
2382db