diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2012-05-11 11:31:56 +0200 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2012-06-07 10:02:22 +0200 |
commit | ae710b99050a347cc7ef93e1873bf08c9a97b6be (patch) | |
tree | b3257cbe8f799bc7ee67fdd39ed15f74fa1aa8de /hw/usb | |
parent | 0fb3e299bdc0f21e0a0ff7d19276a87e0825d651 (diff) |
ehci: schedule async bh on async packet completion
When a packet completes which happens to be part of the async schedule
kick the async bottom half for processing,
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'hw/usb')
-rw-r--r-- | hw/usb/hcd-ehci.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c index 16627d35c0..8b2dfeda56 100644 --- a/hw/usb/hcd-ehci.c +++ b/hw/usb/hcd-ehci.c @@ -1327,6 +1327,10 @@ static void ehci_async_complete_packet(USBPort *port, USBPacket *packet) assert(p->async == EHCI_ASYNC_INFLIGHT); p->async = EHCI_ASYNC_FINISHED; p->usb_status = packet->result; + + if (p->queue->async) { + qemu_bh_schedule(p->queue->ehci->async_bh); + } } static void ehci_execute_complete(EHCIQueue *q) |