summaryrefslogtreecommitdiffstats
path: root/hw/usb/hcd-xhci-pci.c
diff options
context:
space:
mode:
authorPeter Maydell2021-05-30 21:10:30 +0200
committerPeter Maydell2021-05-30 21:10:30 +0200
commit52848929b70dcf92a68aedcfd90207be81ba3274 (patch)
tree731cb3a6253de7054afaefed4371128d116a8cac /hw/usb/hcd-xhci-pci.c
parentMerge remote-tracking branch 'remotes/kraxel/tags/vga-20210527-pull-request' ... (diff)
parenthw/usb: hcd-xhci-pci: Fix spec violation of IP flag for MSI/MSI-X (diff)
downloadqemu-52848929b70dcf92a68aedcfd90207be81ba3274.tar.gz
qemu-52848929b70dcf92a68aedcfd90207be81ba3274.tar.xz
qemu-52848929b70dcf92a68aedcfd90207be81ba3274.zip
Merge remote-tracking branch 'remotes/kraxel/tags/usb-20210528-pull-request' into staging
usb: bugfixes for hid and xhci. # gpg: Signature made Fri 28 May 2021 15:21:51 BST # gpg: using RSA key A0328CFFB93A17A79901FE7D4CB6D8EED3E87138 # gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>" [full] # gpg: aka "Gerd Hoffmann <gerd@kraxel.org>" [full] # gpg: aka "Gerd Hoffmann (private) <kraxel@gmail.com>" [full] # Primary key fingerprint: A032 8CFF B93A 17A7 9901 FE7D 4CB6 D8EE D3E8 7138 * remotes/kraxel/tags/usb-20210528-pull-request: hw/usb: hcd-xhci-pci: Fix spec violation of IP flag for MSI/MSI-X hw/usb: hcd-xhci-pci: Raise MSI/MSI-X interrupts only when told to hw/input/hid: Add support for keys of jp106 keyboard. Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'hw/usb/hcd-xhci-pci.c')
-rw-r--r--hw/usb/hcd-xhci-pci.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/hw/usb/hcd-xhci-pci.c b/hw/usb/hcd-xhci-pci.c
index 9421734d0f..e934b1a5b1 100644
--- a/hw/usb/hcd-xhci-pci.c
+++ b/hw/usb/hcd-xhci-pci.c
@@ -57,7 +57,7 @@ static void xhci_pci_intr_update(XHCIState *xhci, int n, bool enable)
}
}
-static void xhci_pci_intr_raise(XHCIState *xhci, int n, bool level)
+static bool xhci_pci_intr_raise(XHCIState *xhci, int n, bool level)
{
XHCIPciState *s = container_of(xhci, XHCIPciState, xhci);
PCIDevice *pci_dev = PCI_DEVICE(s);
@@ -67,15 +67,18 @@ 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;
+ return true;
}
- if (msi_enabled(pci_dev)) {
+ if (msi_enabled(pci_dev) && level) {
msi_notify(pci_dev, n);
- return;
+ return true;
}
+
+ return false;
}
static void xhci_pci_reset(DeviceState *dev)