On 08/03/2015, 11:39 AM, Jiri Slaby wrote: > Hi, > > On 08/03/2015, 11:30 AM, Chen Bough wrote: >> I carefully review my patch, all the DMA memory mapped in sdhci_pre_req() is unmapped in sdhci_post_req. > > I suspect 'host_cookie' or 'next' handling is bad somewhere. But I don't > know... > >> Can you provide the method of your testing DMA leaks? > > boot kernel with CONFIG_DMA_API_DEBUG > insert the card > mount it > rsync from the card ~200 MB > umount it > unload the sdhci driver > the leak warning is reported > > I am not sure whether suspend-resume is needed after the first step. No, it's not. This is sufficient: boot kernel with CONFIG_DMA_API_DEBUG insert the card remove the card unload the sdhci driver the leak warning is reported >> You said over 4000 leaked mappings during one card transfer, if true, >> We can't map any dma memory after some sd transfer, do you meet this? > > Yes, I see: > sdhci-pci 0000:02:00.0: swiotlb buffer is full (sz: 65536 bytes) > after some time. The driver falls back to non-DMA transfers after that. > It also generates a warning about that: > WARNING: CPU: 0 PID: 0 at drivers/mmc/host/sdhci.c:857 > sdhci_prepare_data+0x8ec/0x900 [sdhci]() I am attaching a debug patch and a debug log. You can see where 0x00000000fffb0000 and 0x00000000fffe0000 is leaked. It is when 'invalid cookie' error happens. regards, -- js suse labs