Messages in this thread | | | Date | Tue, 15 Jan 2013 21:05:50 +0100 | From | Sebastian Hesselbarth <> | Subject | Re: [PATCH v2] mm: dmapool: use provided gfp flags for all dma_alloc_coherent() calls |
| |
On 01/15/2013 05:56 PM, Jason Cooper wrote: > Greg, > > I've added you to the this thread hoping for a little insight into USB > drivers and their use of coherent and GFP_ATOMIC. Am I barking up the > wrong tree by looking a the drivers? > > On Mon, Jan 14, 2013 at 12:56:57PM +0100, Soeren Moch wrote: >> On 20.11.2012 15:31, Marek Szyprowski wrote: >>> dmapool always calls dma_alloc_coherent() with GFP_ATOMIC flag, >>> regardless the flags provided by the caller. This causes excessive >>> pruning of emergency memory pools without any good reason. Additionaly, >>> on ARM architecture any driver which is using dmapools will sooner or >>> later trigger the following error: >>> "ERROR: 256 KiB atomic DMA coherent pool is too small! >>> Please increase it with coherent_pool= kernel parameter!". >>> Increasing the coherent pool size usually doesn't help much and only >>> delays such error, because all GFP_ATOMIC DMA allocations are always >>> served from the special, very limited memory pool. >>> >>> This patch changes the dmapool code to correctly use gfp flags provided >>> by the dmapool caller. >>> >>> Reported-by: Soeren Moch<smoch@web.de> >>> Reported-by: Thomas Petazzoni<thomas.petazzoni@free-electrons.com> >>> Signed-off-by: Marek Szyprowski<m.szyprowski@samsung.com> >>> Tested-by: Andrew Lunn<andrew@lunn.ch> >>> Tested-by: Soeren Moch<smoch@web.de> >> >> Now I tested linux-3.7.1 (this patch is included there) on my Marvell >> Kirkwood system. I still see >> >> ERROR: 1024 KiB atomic DMA coherent pool is too small! >> Please increase it with coherent_pool= kernel parameter! >> >> after several hours of runtime under heavy load with SATA and >> DVB-Sticks (em28xx / drxk and dib0700). > > Could you try running the system w/o the em28xx stick and see how it > goes with v3.7.1?
Jason,
can you point out what you think we should be looking for?
I grep'd for 'GFP_' in drivers/media/usb and especially for dvb-usb (dib0700) it looks like most of the buffers in usb-urb.c are allocated GFP_ATOMIC. em28xx also allocates some of the buffers atomic.
If we look for a mem leak in one of the above drivers (including sata_mv), is there an easy way to keep track of allocated and freed kernel memory?
Sebastian
| |