Which is exactly what usb_buffer_alloc() does already. So at least for x86 you say this is the right thing to do? However, we don't necessarily need coherent memory on other platforms, which is why I hessitate to enforce that type of memory for all transfer_buffer allocations.
Yes today it's faster at least.
Probably we should have better interfaces for this, but we don't.
Or just use GFP_KERNEL and pci_map_* later.
The USB core does this already, but at least on Pedro's machine, this seems unsufficient. Unfortunately, I can't reproduce the issue yet, even with more than 4GB of RAM installed.
Then something must be broken in Pedro's system and likely other drivers will also not work. I don't think it should be worked around in the USB layer.
-Andi