summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhselasky <hselasky@FreeBSD.org>2014-10-03 15:58:04 +0000
committerhselasky <hselasky@FreeBSD.org>2014-10-03 15:58:04 +0000
commitde588ec5bedb67975b367a4b0c79f0c5f612eb64 (patch)
tree6c5a91487cd8780b404dafacd141215abd7d48c4
parent82ad584fb8be01bc0d3902912c8233322860d4a8 (diff)
downloadFreeBSD-src-de588ec5bedb67975b367a4b0c79f0c5f612eb64.zip
FreeBSD-src-de588ec5bedb67975b367a4b0c79f0c5f612eb64.tar.gz
Fix XHCI driver for devices which have more than 15 physical root HUB
ports. The current bitmap array was too small to hold more than 16 bits and would at some point toggle the context size, which then would trigger an enumeration fault and cause a fallback to the EHCI companion controller, if any. MFC after: 3 days
-rw-r--r--sys/dev/usb/controller/xhci.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/dev/usb/controller/xhci.h b/sys/dev/usb/controller/xhci.h
index 408b429..7352e9c 100644
--- a/sys/dev/usb/controller/xhci.h
+++ b/sys/dev/usb/controller/xhci.h
@@ -493,7 +493,8 @@ struct xhci_softc {
uint8_t sc_noscratch;
/* root HUB device configuration */
uint8_t sc_conf;
- uint8_t sc_hub_idata[2];
+ /* root HUB port event bitmap, max 256 ports */
+ uint8_t sc_hub_idata[32];
/* size of context */
uint8_t sc_ctx_is_64_byte;
OpenPOWER on IntegriCloud