hw/usb: hcd-xhci-pci: Raise MSI/MSI-X interrupts only when told to

At present MSI / MSI-X interrupts are triggered regardless of the
irq level. We should have checked the level to determine whether
the interrupt needs to be delivered.

The level check logic was present in early versions of the xhci
model, but got dropped later by a rework of interrupt handling
under commit 4c4abe7cc9 ("xhci: rework interrupt handling").

Fixes: 4c4abe7cc9 ("xhci: rework interrupt handling")
Signed-off-by: Ruimei Yan <ruimei.yan@windriver.com>
Signed-off-by: Bin Meng <bin.meng@windriver.com>
Message-Id: <20210521024224.2277634-1-bmeng.cn@gmail.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
Ruimei Yan 2021-05-21 10:42:23 +08:00 committed by Gerd Hoffmann
parent f9c481247f
commit 3c6151cd11
1 changed files with 3 additions and 2 deletions

View File

@ -67,12 +67,13 @@ static void xhci_pci_intr_raise(XHCIState *xhci, int n, bool level)
msi_enabled(pci_dev))) {
pci_set_irq(pci_dev, level);
}
if (msix_enabled(pci_dev)) {
if (msix_enabled(pci_dev) && level) {
msix_notify(pci_dev, n);
return;
}
if (msi_enabled(pci_dev)) {
if (msi_enabled(pci_dev) && level) {
msi_notify(pci_dev, n);
return;
}