mirror of https://github.com/xemu-project/xemu.git
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 commit4c4abe7cc9
("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:
parent
f9c481247f
commit
3c6151cd11
hw/usb
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue