>From: Jan Kiszka <jan.kiszka@xxxxxxxxxxx> Also invoke the mask notifier if the global MSI-X mask is modified. For this purpose, we push the notifier call from the per-vector mask update to the central msix_handle_mask_update. Signed-off-by: Jan Kiszka <jan.kiszka@xxxxxxxxxxx> Signed-off-by: Michael S. Tsirkin <mst@xxxxxxxxxx> --- This needs to be applied on top of: msix: avoid mask updates if mask is unchanged I'll send a reminder once it's merged. hw/msix.c | 11 ++++++----- 1 files changed, 6 insertions(+), 5 deletions(-) diff --git a/hw/msix.c b/hw/msix.c index 56422c6..e50074f 100644 --- a/hw/msix.c +++ b/hw/msix.c @@ -231,6 +231,12 @@ static void msix_handle_mask_update(PCIDevice *dev, int vector, bool was_masked) return; } + if (dev->msix_mask_notifier) { + int ret; + ret = dev->msix_mask_notifier(dev, vector, is_masked); + assert(ret >= 0); + } + if (!is_masked && msix_is_pending(dev, vector)) { msix_clr_pending(dev, vector); msix_notify(dev, vector); @@ -292,11 +298,6 @@ static void msix_mmio_write(void *opaque, target_phys_addr_t addr, if (kvm_enabled() && kvm_irqchip_in_kernel()) { kvm_msix_update(dev, vector, was_masked, msix_is_masked(dev, vector)); } - if (was_masked != msix_is_masked(dev, vector) && dev->msix_mask_notifier) { - int r = dev->msix_mask_notifier(dev, vector, - msix_is_masked(dev, vector)); - assert(r >= 0); - } msix_handle_mask_update(dev, vector, was_masked); } -- 1.7.5.53.gc233e -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html