https://bugzilla.kernel.org/show_bug.cgi?id=215906 --- Comment #17 from Mathias Nyman (mathias.nyman@xxxxxxxxxxxxxxx) --- If I understand correctly this is caused by the VIA VL805 xHC controller with bad firmware accessing some DMA address outside the allowed range. With IOMMU enabled the IOMMU will prevent this access, and the controller fails. I'm speculating here, but it could be possible the controller accesses past one of the DMA ranges wile trying to read-ahead. If we can figure out past which area, then its possible to make a driver workaround for this controller that allocates a bit larger DMA chunk for that specific purpose. DMA memory allocated for xHC use before any USB device is connected: - dcbaa device context base address array. arrays of pointers to device contexts dma_alloc_coherent(dev) - command ring dma_pool_zalloc(segment_pool) - event ring dma_pool_zalloc(segment_pool) - event ring segment table info about event ring, segents, size and location dma_alloc_coherent(dev) - Scratchpad, only touched (RW) by xHC controller, not driver. dma_alloc_coheret() DMA memory allocated for each connected USB device. - device contexts dma_pool_zalloc(device_pool) - transfer rings, contains TRBs, metadata about transfers. dma_pool_zalloc(segment_pool) - stream contexts, dma_alloc_coherent() or dma_pool_alloc(*_streams_pool) -- You may reply to this email to add a comment. You are receiving this mail because: You are watching the assignee of the bug.