On Tue, Jan 12, 2021 at 7:28 PM Ray Jui <ray.jui@xxxxxxxxxxxx> wrote: > On 2020-12-15 7:49 a.m., Arnd Bergmann wrote: > > On Tue, Dec 15, 2020 at 4:41 PM Florian Fainelli <f.fainelli@xxxxxxxxx> wrote: > >> > >> On 12/15/2020 5:19 AM, Bharat Gooty wrote: > >>> Since the IOMMU is disabled and DMA engine is on 32-bit bus, We can not > >>> give the complete DDR for the USB DMA. > >>> So restricting the usable DAM size to 4GB. > >> > >> Thanks, can you make this a proper patch submission along with a Fixes: > >> tag that is: > >> > >> Fixes: 2013a4b684b6 ("arm64: dts: broadcom: clear the warnings caused by > >> empty dma-ranges") > > > > Yes, that would be helpful, though I would appreciate a better description > > that explains what is actually going on: is it the device or the bus that > > has the 32-bit limitation, and if it is indeed a bug in the device, why do > > you pretend that this is a 64-bit device on a 32-bit bus instead (this > > could also use a comment in the dts file)? > > > > Arnd > > > > Sorry for the delay in reply. Bharat finally got time to do some > investigation to confirm the following: > > These USB controllers indeed can address 64-bit. However, on the bus > internally, only 40-bits are connected to the interconnect of CCN. As a > result, the 'dma-ranges' should be modified to address 40-bit in size. a 40-bit range is effectively the same as a 64-bit range though, so I think you'll still need a driver quirk if the device cannot use the whole 40 bit addressing but is limited to 32 bits because of a bug in its dma engine. > We also have a somewhat related question, is it true that since v5.10, > defining of 'dma-ranges' on the bus node where its child device node has > implication of IOMMU usage (through 'iommus' or 'iommu-map') is now > mandatory? My understanding is that the 'dma-ranges' in this scheme will > define the IOVA address to system address mapping required by all > devices on that bus. Please help to confirm if my understanding is correct I have not actually seen that change. In general, you should always have a dma-ranges property in the parent of a DMA master, I think we just never enforced that and fall back to a 32-bit mask by default. Arnd