Hi, On 18/11/19 10:51 PM, Robin Murphy wrote: > On 16/11/2019 4:35 pm, Christoph Hellwig wrote: >> On Fri, Nov 15, 2019 at 07:48:23PM +0530, Kishon Vijay Abraham I wrote: >>> I think the fix on 5.3 was useful for platform drivers (where the platform >>> driver will set dma_set_mask as 32bits) even when the system itself supports >>> LPAE. >> >> Well, we can also use the bus_dma_mask for PCI(e) root port quirks, >> as we do that for the VIA ones on x86. But I think the OF parsing code >> is missing something here, and Robin did plan to look into that. > > Right, the correct way to describe this is with "dma-ranges" on the host bridge > node, and there are patches queued in linux-next to (finally) handle that > properly for the way we bodge dynamically-discovered endpoints through > of_dma_configure(). Tried linux-next after adding dma-ranges property to the DRA7 RC dt node and don't see the issue anymore. Thanks Kishon > > Robin. > >>> We should find a way to set the DMA mask of of the PCI device based on the DMA >>> mask of the PCI controller in the SoC. One option would be to change the >>> pci_drivers all over the kernel to set DMA mask to be based on the DMA mask of >>> the PCI controller (the PCI device hierarchy should get a reference to the >>> device pointer of the PCI controller). Or is there a better way to handle this? >> >> No. The driver sets the device capabilities. bus_dma_mask handles >> the system limitations. >>