From: Mathias Nyman > Sent: 17 May 2017 16:32 > There is no reason to restrict allocations to the first 16MB ISA DMA > addresses. > > It is causing problems in a virtualization setup with enabled IOMMU > (x86_64). The result is that USB is not working in the VM. ... > diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c > index 12b573c..1f1687e 100644 > --- a/drivers/usb/host/xhci-mem.c > +++ b/drivers/usb/host/xhci-mem.c > @@ -56,7 +56,7 @@ static struct xhci_segment *xhci_segment_alloc(struct xhci_hcd *xhci, > } > > if (max_packet) { > - seg->bounce_buf = kzalloc(max_packet, flags | GFP_DMA); > + seg->bounce_buf = kzalloc(max_packet, flags); This might allocate memory that the device cannot access. So can only work if dma_map_single() itself allocates a bounce buffer. There must be a sane way to do this that doesn't ever require double copies. David