CC: Markus Armbruster <arm...@redhat.com> CC: Marcel Apfelbaum <mar...@redhat.com> CC: Michael S. Tsirkin <m...@redhat.com>
Reviewed-by: Markus Armbruster <arm...@redhat.com> Acked-by: Marcel Apfelbaum <mar...@redhat.com> Signed-off-by: Cao jin <caoj.f...@cn.fujitsu.com> --- hw/pci/msix.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/hw/pci/msix.c b/hw/pci/msix.c index 0ec1cb14fc60..0cee631ecc55 100644 --- a/hw/pci/msix.c +++ b/hw/pci/msix.c @@ -447,8 +447,10 @@ void msix_notify(PCIDevice *dev, unsigned vector) { MSIMessage msg; - if (vector >= dev->msix_entries_nr || !dev->msix_entry_used[vector]) + if (vector >= dev->msix_entries_nr || !dev->msix_entry_used[vector]) { return; + } + if (msix_is_masked(dev, vector)) { msix_set_pending(dev, vector); return; @@ -483,8 +485,10 @@ void msix_reset(PCIDevice *dev) /* Mark vector as used. */ int msix_vector_use(PCIDevice *dev, unsigned vector) { - if (vector >= dev->msix_entries_nr) + if (vector >= dev->msix_entries_nr) { return -EINVAL; + } + dev->msix_entry_used[vector]++; return 0; } -- 2.1.0