diff options
author | Gerd Hoffmann | 2012-11-15 13:07:49 +0100 |
---|---|---|
committer | Gerd Hoffmann | 2012-11-16 11:27:32 +0100 |
commit | 55903f1d2d8abfa8d7610ab32a4046a1ed4fdbb8 (patch) | |
tree | c82911f7129a40b4756e9e5f300d471e588b72e3 /trace-events | |
parent | ehci: keep the frame timer running in case the guest asked for frame list rol... (diff) | |
download | qemu-55903f1d2d8abfa8d7610ab32a4046a1ed4fdbb8.tar.gz qemu-55903f1d2d8abfa8d7610ab32a4046a1ed4fdbb8.tar.xz qemu-55903f1d2d8abfa8d7610ab32a4046a1ed4fdbb8.zip |
ehci: handle dma errors
Starting with commit 1c380f9460522f32c8dd2577b2a53d518ec91c6d dma
transfers can actually fail. This patch makes ehci keep track
of the busmaster bit in pci config space, by setting/clearing the
dma_context pointer. Attempts to dma without context will result
in raising HSE (Host System Error) interrupt and stopping the host
controller.
This patch fixes WinXP not booting with a usb stick attached to ehci.
Root cause is seabios activating ehci so you can boot from the stick,
and WinXP clearing the busmaster bit before resetting the host
controller, leading to ehci actually trying dma while it is disabled.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'trace-events')
-rw-r--r-- | trace-events | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/trace-events b/trace-events index e1a37cc26f..35308be525 100644 --- a/trace-events +++ b/trace-events @@ -286,6 +286,7 @@ usb_ehci_irq(uint32_t level, uint32_t frindex, uint32_t sts, uint32_t mask) "lev usb_ehci_guest_bug(const char *reason) "%s" usb_ehci_doorbell_ring(void) "" usb_ehci_doorbell_ack(void) "" +usb_ehci_dma_error(void) "" # hw/usb/hcd-uhci.c usb_uhci_reset(void) "=== RESET ===" |