All of lore.kernel.org
 help / color / mirror / Atom feed
From: arnd@arndb.de (Arnd Bergmann)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2] mm: dmapool: use provided gfp flags for all dma_alloc_coherent() calls
Date: Thu, 17 Jan 2013 20:26:45 +0000	[thread overview]
Message-ID: <201301172026.45514.arnd@arndb.de> (raw)
In-Reply-To: <50F800EB.6040104@web.de>

On Thursday 17 January 2013, Soeren Moch wrote:
> On 17.01.2013 11:49, Arnd Bergmann wrote:
> > On Wednesday 16 January 2013, Soeren Moch wrote:
> >>>> I will see what I can do here. Is there an easy way to track the buffer
> >>>> usage without having to wait for complete exhaustion?
> >>>
> >>> DMA_API_DEBUG
> >>
> >> OK, maybe I can try this.
> >>>
> >
> > Any success with this? It should at least tell you if there is a
> > memory leak in one of the drivers.
> 
> Not yet, sorry. I have to do all the tests in my limited spare time.
> Can you tell me what to search for in the debug output?

Actually now that I've looked closer, you can't immediately see
all the mappings as I thought.

But please try enabling DMA_API_DEBUG in combination with this
one-line patch:

diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c
index 6b2fb87..3df74ac 100644
--- a/arch/arm/mm/dma-mapping.c
+++ b/arch/arm/mm/dma-mapping.c
@@ -497,6 +497,7 @@ static void *__alloc_from_pool(size_t size, struct page **ret_page)
 		pr_err_once("ERROR: %u KiB atomic DMA coherent pool is too small!\n"
 			    "Please increase it with coherent_pool= kernel parameter!\n",
 			    (unsigned)pool->size / 1024);
+		debug_dma_dump_mappings(NULL);
 	}
 	spin_unlock_irqrestore(&pool->lock, flags);
 
That will show every single allocation that is currently active. This lets
you see where all the memory went, and if there is a possible leak or
excessive fragmentation.

	Arnd

WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@arndb.de>
To: Soeren Moch <smoch@web.de>
Cc: Jason Cooper <jason@lakedaemon.net>,
	Greg KH <gregkh@linuxfoundation.org>,
	Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
	Andrew Lunn <andrew@lunn.ch>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
	linux-kernel@vger.kernel.org, Michal Hocko <mhocko@suse.cz>,
	linux-mm@kvack.org, Kyungmin Park <kyungmin.park@samsung.com>,
	Mel Gorman <mgorman@suse.de>,
	Andrew Morton <akpm@linux-foundation.org>,
	Marek Szyprowski <m.szyprowski@samsung.com>,
	linaro-mm-sig@lists.linaro.org,
	linux-arm-kernel@lists.infradead.org,
	Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Subject: Re: [PATCH v2] mm: dmapool: use provided gfp flags for all dma_alloc_coherent() calls
Date: Thu, 17 Jan 2013 20:26:45 +0000	[thread overview]
Message-ID: <201301172026.45514.arnd@arndb.de> (raw)
In-Reply-To: <50F800EB.6040104@web.de>

On Thursday 17 January 2013, Soeren Moch wrote:
> On 17.01.2013 11:49, Arnd Bergmann wrote:
> > On Wednesday 16 January 2013, Soeren Moch wrote:
> >>>> I will see what I can do here. Is there an easy way to track the buffer
> >>>> usage without having to wait for complete exhaustion?
> >>>
> >>> DMA_API_DEBUG
> >>
> >> OK, maybe I can try this.
> >>>
> >
> > Any success with this? It should at least tell you if there is a
> > memory leak in one of the drivers.
> 
> Not yet, sorry. I have to do all the tests in my limited spare time.
> Can you tell me what to search for in the debug output?

Actually now that I've looked closer, you can't immediately see
all the mappings as I thought.

But please try enabling DMA_API_DEBUG in combination with this
one-line patch:

diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c
index 6b2fb87..3df74ac 100644
--- a/arch/arm/mm/dma-mapping.c
+++ b/arch/arm/mm/dma-mapping.c
@@ -497,6 +497,7 @@ static void *__alloc_from_pool(size_t size, struct page **ret_page)
 		pr_err_once("ERROR: %u KiB atomic DMA coherent pool is too small!\n"
 			    "Please increase it with coherent_pool= kernel parameter!\n",
 			    (unsigned)pool->size / 1024);
+		debug_dma_dump_mappings(NULL);
 	}
 	spin_unlock_irqrestore(&pool->lock, flags);
 
That will show every single allocation that is currently active. This lets
you see where all the memory went, and if there is a possible leak or
excessive fragmentation.

	Arnd

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@arndb.de>
To: Soeren Moch <smoch@web.de>
Cc: Jason Cooper <jason@lakedaemon.net>,
	Greg KH <gregkh@linuxfoundation.org>,
	Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
	Andrew Lunn <andrew@lunn.ch>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
	linux-kernel@vger.kernel.org, Michal Hocko <mhocko@suse.cz>,
	linux-mm@kvack.org, Kyungmin Park <kyungmin.park@samsung.com>,
	Mel Gorman <mgorman@suse.de>,
	Andrew Morton <akpm@linux-foundation.org>,
	Marek Szyprowski <m.szyprowski@samsung.com>,
	linaro-mm-sig@lists.linaro.org,
	linux-arm-kernel@lists.infradead.org,
	Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Subject: Re: [PATCH v2] mm: dmapool: use provided gfp flags for all dma_alloc_coherent() calls
Date: Thu, 17 Jan 2013 20:26:45 +0000	[thread overview]
Message-ID: <201301172026.45514.arnd@arndb.de> (raw)
In-Reply-To: <50F800EB.6040104@web.de>

On Thursday 17 January 2013, Soeren Moch wrote:
> On 17.01.2013 11:49, Arnd Bergmann wrote:
> > On Wednesday 16 January 2013, Soeren Moch wrote:
> >>>> I will see what I can do here. Is there an easy way to track the buffer
> >>>> usage without having to wait for complete exhaustion?
> >>>
> >>> DMA_API_DEBUG
> >>
> >> OK, maybe I can try this.
> >>>
> >
> > Any success with this? It should at least tell you if there is a
> > memory leak in one of the drivers.
> 
> Not yet, sorry. I have to do all the tests in my limited spare time.
> Can you tell me what to search for in the debug output?

Actually now that I've looked closer, you can't immediately see
all the mappings as I thought.

But please try enabling DMA_API_DEBUG in combination with this
one-line patch:

diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c
index 6b2fb87..3df74ac 100644
--- a/arch/arm/mm/dma-mapping.c
+++ b/arch/arm/mm/dma-mapping.c
@@ -497,6 +497,7 @@ static void *__alloc_from_pool(size_t size, struct page **ret_page)
 		pr_err_once("ERROR: %u KiB atomic DMA coherent pool is too small!\n"
 			    "Please increase it with coherent_pool= kernel parameter!\n",
 			    (unsigned)pool->size / 1024);
+		debug_dma_dump_mappings(NULL);
 	}
 	spin_unlock_irqrestore(&pool->lock, flags);
 
That will show every single allocation that is currently active. This lets
you see where all the memory went, and if there is a possible leak or
excessive fragmentation.

	Arnd

  reply	other threads:[~2013-01-17 20:26 UTC|newest]

Thread overview: 181+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-08  6:38 [PATCH] mm: dmapool: use provided gfp flags for all dma_alloc_coherent() calls Marek Szyprowski
2012-11-08  6:38 ` Marek Szyprowski
2012-11-08  6:38 ` Marek Szyprowski
2012-11-11 17:22 ` Andrew Lunn
2012-11-11 17:22   ` Andrew Lunn
2012-11-11 17:22   ` Andrew Lunn
2012-11-12  9:48   ` Soeren Moch
2012-11-12  9:48     ` Soeren Moch
2012-11-12  9:48     ` Soeren Moch
2012-11-12 10:38     ` Andrew Lunn
2012-11-12 10:38       ` Andrew Lunn
2012-11-12 10:38       ` Andrew Lunn
2012-11-12 11:03       ` Soeren Moch
2012-11-12 11:03         ` Soeren Moch
2012-11-12 11:03         ` Soeren Moch
2012-11-11 17:31 ` [PATCH] ARM: Orion: Remove redundent init_dma_coherent_pool_size() Andrew Lunn
2012-11-19  0:20   ` Jason Cooper
2013-04-17 20:38   ` Jason Cooper
2013-04-17 20:49     ` Gregory CLEMENT
2013-05-13 19:38       ` Jason Cooper
2012-11-19  0:18 ` [PATCH] mm: dmapool: use provided gfp flags for all dma_alloc_coherent() calls Jason Cooper
2012-11-19  0:18   ` Jason Cooper
2012-11-19  0:18   ` Jason Cooper
2012-11-19 22:48   ` Andrew Morton
2012-11-19 22:48     ` Andrew Morton
2012-11-19 22:48     ` Andrew Morton
2012-11-20 10:48     ` Marek Szyprowski
2012-11-20 10:48       ` Marek Szyprowski
2012-11-20 10:48       ` Marek Szyprowski
2012-11-20 19:52       ` Andrew Morton
2012-11-20 19:52         ` Andrew Morton
2012-11-20 19:52         ` Andrew Morton
2012-11-20 14:31     ` [PATCH v2] " Marek Szyprowski
2012-11-20 14:31       ` Marek Szyprowski
2012-11-20 14:31       ` Marek Szyprowski
2012-11-20 19:33       ` Andrew Morton
2012-11-20 19:33         ` Andrew Morton
2012-11-20 19:33         ` Andrew Morton
2012-11-20 20:27         ` Jason Cooper
2012-11-20 20:27           ` Jason Cooper
2012-11-20 20:27           ` Jason Cooper
2012-11-21  8:08         ` Marek Szyprowski
2012-11-21  8:08           ` Marek Szyprowski
2012-11-21  8:08           ` Marek Szyprowski
2012-11-21  8:36           ` Andrew Morton
2012-11-21  8:36             ` Andrew Morton
2012-11-21  8:36             ` Andrew Morton
2012-11-21  9:20             ` Marek Szyprowski
2012-11-21  9:20               ` Marek Szyprowski
2012-11-21  9:20               ` Marek Szyprowski
2012-11-21 19:17               ` Andrew Morton
2012-11-21 19:17                 ` Andrew Morton
2012-11-21 19:17                 ` Andrew Morton
2012-11-22 12:55                 ` Marek Szyprowski
2012-11-22 12:55                   ` Marek Szyprowski
2012-11-22 12:55                   ` Marek Szyprowski
2013-01-14 11:56       ` Soeren Moch
2013-01-14 11:56         ` Soeren Moch
2013-01-14 11:56         ` Soeren Moch
2013-01-15 16:56         ` Jason Cooper
2013-01-15 16:56           ` Jason Cooper
2013-01-15 16:56           ` Jason Cooper
2013-01-15 17:50           ` Greg KH
2013-01-15 17:50             ` Greg KH
2013-01-15 17:50             ` Greg KH
2013-01-15 20:16             ` Jason Cooper
2013-01-15 20:16               ` Jason Cooper
2013-01-15 20:16               ` Jason Cooper
2013-01-15 21:56               ` Jason Cooper
2013-01-15 21:56                 ` Jason Cooper
2013-01-15 21:56                 ` Jason Cooper
2013-01-16  0:17                 ` Soeren Moch
2013-01-16  0:17                   ` Soeren Moch
2013-01-16  0:17                   ` Soeren Moch
2013-01-16  2:40                   ` Jason Cooper
2013-01-16  2:40                     ` Jason Cooper
2013-01-16  2:40                     ` Jason Cooper
2013-01-16  3:24                     ` Soeren Moch
2013-01-16  3:24                       ` Soeren Moch
2013-01-16  3:24                       ` Soeren Moch
2013-01-16  8:55                       ` Soeren Moch
2013-01-16  8:55                         ` Soeren Moch
2013-01-16  8:55                         ` Soeren Moch
2013-01-16 15:50                         ` [PATCH] ata: sata_mv: fix sg_tbl_pool alignment Jason Cooper
2013-01-16 15:50                           ` Jason Cooper
2013-01-16 15:50                           ` Jason Cooper
2013-01-16 17:05                           ` Soeren Moch
2013-01-16 17:05                             ` Soeren Moch
2013-01-16 17:05                             ` Soeren Moch
2013-01-16 17:52                             ` Jason Cooper
2013-01-16 17:52                               ` Jason Cooper
2013-01-16 17:52                               ` Jason Cooper
2013-01-16 18:35                               ` Jason Cooper
2013-01-16 18:35                                 ` Jason Cooper
2013-01-16 18:35                                 ` Jason Cooper
2013-01-16 22:26                                 ` Soeren Moch
2013-01-16 22:26                                   ` Soeren Moch
2013-01-16 22:26                                   ` Soeren Moch
2013-01-16 23:10                               ` Soeren Moch
2013-01-16 23:10                                 ` Soeren Moch
2013-01-16 23:10                                 ` Soeren Moch
2013-01-17  9:11                               ` Soeren Moch
2013-01-17  9:11                                 ` Soeren Moch
2013-01-17  9:11                                 ` Soeren Moch
2013-01-16 17:32                         ` [PATCH v2] mm: dmapool: use provided gfp flags for all dma_alloc_coherent() calls Soeren Moch
2013-01-16 17:32                           ` Soeren Moch
2013-01-16 17:32                           ` Soeren Moch
2013-01-16 17:47                           ` Jason Cooper
2013-01-16 17:47                             ` Jason Cooper
2013-01-16 17:47                             ` Jason Cooper
2013-01-16 22:36                             ` Soeren Moch
2013-01-16 22:36                               ` Soeren Moch
2013-01-16 22:36                               ` Soeren Moch
2013-01-17 10:49                       ` Arnd Bergmann
2013-01-17 10:49                         ` Arnd Bergmann
2013-01-17 10:49                         ` Arnd Bergmann
2013-01-17 13:47                         ` Soeren Moch
2013-01-17 13:47                           ` Soeren Moch
2013-01-17 13:47                           ` Soeren Moch
2013-01-17 20:26                           ` Arnd Bergmann [this message]
2013-01-17 20:26                             ` Arnd Bergmann
2013-01-17 20:26                             ` Arnd Bergmann
2013-01-19 15:29                             ` Soeren Moch
2013-01-19 15:29                               ` Soeren Moch
2013-01-19 18:59                               ` Andrew Lunn
2013-01-19 18:59                                 ` Andrew Lunn
2013-01-19 18:59                                 ` Andrew Lunn
2013-01-23 15:30                                 ` Soeren Moch
2013-01-23 15:30                                   ` Soeren Moch
2013-01-23 15:30                                   ` Soeren Moch
2013-01-23 16:25                                   ` Andrew Lunn
2013-01-23 16:25                                     ` Andrew Lunn
2013-01-23 16:25                                     ` Andrew Lunn
2013-01-23 17:07                                     ` Soeren Moch
2013-01-23 17:07                                       ` Soeren Moch
2013-01-23 17:07                                       ` Soeren Moch
2013-01-23 17:20                                       ` Soeren Moch
2013-01-23 17:20                                         ` Soeren Moch
2013-01-23 17:20                                         ` Soeren Moch
2013-01-23 18:10                                         ` Andrew Lunn
2013-01-23 18:10                                           ` Andrew Lunn
2013-01-23 18:10                                           ` Andrew Lunn
2013-01-28 20:59                                           ` Soeren Moch
2013-01-28 20:59                                             ` Soeren Moch
2013-01-28 20:59                                             ` Soeren Moch
2013-01-29  0:13                                             ` Jason Cooper
2013-01-29  0:13                                               ` Jason Cooper
2013-01-29  0:13                                               ` Jason Cooper
2013-01-29 11:02                                             ` Andrew Lunn
2013-01-29 11:02                                               ` Andrew Lunn
2013-01-29 11:02                                               ` Andrew Lunn
2013-01-29 11:50                                               ` Soeren Moch
2013-01-29 11:50                                                 ` Soeren Moch
2013-01-29 11:50                                                 ` Soeren Moch
2013-01-19 20:05                               ` Arnd Bergmann
2013-01-19 20:05                                 ` Arnd Bergmann
2013-01-19 20:05                                 ` Arnd Bergmann
2013-01-21 15:01                                 ` Soeren Moch
2013-01-21 15:01                                   ` Soeren Moch
2013-01-21 15:01                                   ` Soeren Moch
2013-01-21 18:55                                   ` Arnd Bergmann
2013-01-21 18:55                                     ` Arnd Bergmann
2013-01-21 18:55                                     ` Arnd Bergmann
2013-01-21 21:01                                     ` Greg KH
2013-01-21 21:01                                       ` Greg KH
2013-01-21 21:01                                       ` Greg KH
2013-01-22 18:13                                       ` Arnd Bergmann
2013-01-22 18:13                                         ` Arnd Bergmann
2013-01-22 18:13                                         ` Arnd Bergmann
2013-01-23 14:37                                         ` Soeren Moch
2013-01-23 14:37                                           ` Soeren Moch
2013-01-23 14:37                                           ` Soeren Moch
2013-01-19 16:24                             ` Andrew Lunn
2013-01-19 16:24                               ` Andrew Lunn
2013-01-19 16:24                               ` Andrew Lunn
2013-01-15 20:05           ` Sebastian Hesselbarth
2013-01-15 20:05             ` Sebastian Hesselbarth
2013-01-15 20:05             ` Sebastian Hesselbarth
2013-01-15 20:19             ` Jason Cooper
2013-01-15 20:19               ` Jason Cooper
2013-01-15 20:19               ` Jason Cooper

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201301172026.45514.arnd@arndb.de \
    --to=arnd@arndb.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.