Re: [PATCH v3 2/2] iommu/exynos: Add proper runtime pm support
From: Ulf Hansson <hidden>
Date: 2016-09-14 11:54:55
Also in:
linux-iommu, linux-samsung-soc, lkml
[...]
quoted
quoted
quoted
To solve this problem, I was thinking we could convert to use the asynchronous pm_runtime_get() API, when trying to runtime resume the device from atomic contexts.I'm not sure if this will work for DMA engine devices. If I understand correctly some client's of DMA engine device might rely on the DMA engine being configured and operational after queuing a request and they might lock up if the DMA engine device activation if postponed because of async runtime pm activation.I didn't know about this. If you have an example from the top of your head, could you perhaps point me to it?No, I don't have any example. This is just my fear that there might be some hardware which works this way. I can imagine a driver, which queue dma engine request and then triggers 'start' command to its hw block. HW blocks usually uses some additional signal lines for DMA, so the HW block might check if all needed signals from DMA engine HW are ready. If not it will fail to start avoid lockup of starting without DMA engine HW being ready.
Well, I think this reasoning makes lots of sense! Clearly we wouldn't be able to guarantee that there's isn't a glitch in an undefined HW behaviour. I will drop my suggested approach and try out another one.
However I don't have much experience with DMA engine and drivers. I only helped in adding DMA engine support to Samsung UART driver and in the hardware manual there is information about additional lines between DMA controller and UART module, which are used in the DMA mode.
Thanks for sharing your experience! Now, I should allow you to get back to the original review! :-) Kind regards Uffe