On Tue, May 3, 2022 at 9:28 AM Ard Biesheuvel <ardb@xxxxxxxxxx> wrote: > On Sat, 30 Apr 2022 at 20:48, Arnd Bergmann <arnd@xxxxxxxx> wrote: > > > > I think what is going on here is that your platform is able to detect > > the broken DMA because of the l3 interrupt handler telling the kernel > > about it, when on other platforms we would see either silent data corruption > > or a DMA that never reaches its target. > > > > I wonder if we could narrow this down by adding the possibility to use > IRQ stacks in the linear map, while using vmap'ed task stacks. I don't think we have actual DMA attempts to the IRQ stack, so this should not make a difference. What might help is to print some more information in omap3_l3_app_irq() that is likely provided by the hardware. The BUG_ON() happens for any timeout error, and that is most of the possible errors. Simply dumping the L3 registers should at least show the exact type of timeout, and maybe the DMA master ID and physical address that can be traced back into a virtual address. Setting CONFIG_DMA_API_DEBUG=y should get the same information I think, but it can't hurt to do both. Arnd