On Fri, Apr 27, 2018 at 10:09:17AM -0400, Alan Stern wrote: > On Fri, 27 Apr 2018, Christoph Hellwig wrote: > > > On Sun, Apr 15, 2018 at 11:24:11AM -0400, Alan Stern wrote: > > > On Sun, 15 Apr 2018, Christoph Hellwig wrote: > > > > > > > USB host controllers now must handle highmem, so we can get rid of bounce > > > > buffering highmem pages in the block layer. > > > > > > Sorry, I don't quite understand what you are saying. Do you mean that > > > all USB host controllers now magically _do_ handle highmem? Or do you > > > mean that if they _don't_ handle highmem, we will not support them any > > > more? > > > > USB controller themselves never cared about highmem, drivers did. For > > PIO based controllers they'd have to kmap any address no in the kernel > > drirect mapping. > > > > Nothing in drivers/usb/host or the other diretories related to host > > drivers calls page_address (only used in a single gadget) or sg_virt > > (only used in a few upper level drivers), which makes me assume > > semi-confidently that no USB host driver is not highmem aware these > > days. > > sg_virt is called in drivers/usb/core/message.c. (Maybe that's what > you meant by "upper level drivers".) I'm not sure just how important > that usage is. I don't really know either. I'll need some guidance from the usb maintainers on: - when drivers can submit urbs with a scatterlist - if there are any drivers that do not want to take highmem Unfortunately the way dma mapping works in usb is just so deeply convoluted that I have a hard time following it, and often wonder what is intentional and what is accidental in it.