On Fri, Nov 15, 2019 at 04:29:31PM +0530, Kishon Vijay Abraham I wrote: > Hi Christoph, > > I think we are encountering a case where the connected PCIe card (like PCIe USB > card) supports 64-bit addressing and the ARM core supports 64-bit addressing > but the PCIe controller in the SoC to which PCIe card is connected supports > only 32-bits. > > Here dma APIs can provide an address above the 32 bit region to the PCIe card. > However this will fail when the card tries to access the provided address via > the PCIe controller. What kernel version do you test? The classic arm version of dma_capable doesn't take the bus dma mask into account. In Linux 5.5 I switched ARM to use the generic version in 130c1ccbf55 ("dma-direct: unify the dma_capable definitions") so with that this case is supposed to work, without that it doesn't have much of a chance.