linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Greg KH <gregkh@linuxfoundation.org>
To: Arnd Bergmann <arnd@arndb.de>
Cc: Soeren Moch <smoch@web.de>, Jason Cooper <jason@lakedaemon.net>,
	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: Mon, 21 Jan 2013 13:01:50 -0800	[thread overview]
Message-ID: <20130121210150.GA9184@kroah.com> (raw)
In-Reply-To: <201301211855.25455.arnd@arndb.de>

On Mon, Jan 21, 2013 at 06:55:25PM +0000, Arnd Bergmann wrote:
> On Monday 21 January 2013, Soeren Moch wrote:
> > On 01/19/13 21:05, Arnd Bergmann wrote:
> > > from the distribution of the numbers, it seems that there is exactly 1 MB
> > > of data allocated between bus addresses 0x1f90000 and 0x1f9ffff, allocated
> > > in individual pages. This matches the size of your pool, so it's definitely
> > > something coming from USB, and no single other allocation, but it does not
> > > directly point to a specific line of code.
> > Very interesting, so this is no fragmentation problem nor something 
> > caused by sata or ethernet.
> 
> Right.
> 
> > > One thing I found was that the ARM dma-mapping code seems buggy in the way
> > > that it does a bitwise and between the gfp mask and GFP_ATOMIC, which does
> > > not work because GFP_ATOMIC is defined by the absence of __GFP_WAIT.
> > >
> > > I believe we need the patch below, but it is not clear to me if that issue
> > > is related to your problem or now.
> > Out of curiosity I checked include/linux/gfp.h. GFP_ATOMIC is defined as 
> > __GFP_HIGH (which means 'use emergency pool', and no wait), so this 
> > patch should not make any difference for "normal" (GPF_ATOMIC / 
> > GFP_KERNEL) allocations, only for gfp_flags accidentally set to zero. 
> 
> Yes, or one of the rare cases where someone intentionally does something like
> (GFP_ATOMIC & !__GFP_HIGH) or (GFP_KERNEL || __GFP_HIGH), which are both
> wrong.
> 
> > So, can a new test with this patch help to debug the pool exhaustion?
> 
> Yes, but I would not expect this to change much. It's a bug, but not likely
> the one you are hitting.
> 
> > > So even for a GFP_KERNEL passed into usb_submit_urb, the ehci driver
> > > causes the low-level allocation to be GFP_ATOMIC, because
> > > qh_append_tds() is called under a spinlock. If we have hundreds
> > > of URBs in flight, that will exhaust the pool rather quickly.
> > >
> > Maybe there are hundreds of URBs in flight in my application, I have no 
> > idea how to check this.
> 
> I don't know a lot about USB, but I always assumed that this was not
> a normal condition and that there are only a couple of URBs per endpoint
> used at a time. Maybe Greg or someone else with a USB background can
> shed some light on this.

There's no restriction on how many URBs a driver can have outstanding at
once, and if you have a system with a lot of USB devices running at the
same time, there could be lots of URBs in flight depending on the number
of host controllers and devices and drivers being used.

Sorry,

greg k-h

--
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>

  reply	other threads:[~2013-01-21 21:01 UTC|newest]

Thread overview: 59+ 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-11 17:22 ` Andrew Lunn
2012-11-12  9:48   ` Soeren Moch
2012-11-12 10:38     ` Andrew Lunn
2012-11-12 11:03       ` Soeren Moch
2012-11-19  0:18 ` Jason Cooper
2012-11-19 22:48   ` Andrew Morton
2012-11-20 10:48     ` Marek Szyprowski
2012-11-20 19:52       ` Andrew Morton
2012-11-20 14:31     ` [PATCH v2] " Marek Szyprowski
2012-11-20 19:33       ` Andrew Morton
2012-11-20 20:27         ` Jason Cooper
2012-11-21  8:08         ` Marek Szyprowski
2012-11-21  8:36           ` Andrew Morton
2012-11-21  9:20             ` Marek Szyprowski
2012-11-21 19:17               ` Andrew Morton
2012-11-22 12:55                 ` Marek Szyprowski
2013-01-14 11:56       ` Soeren Moch
2013-01-15 16:56         ` Jason Cooper
2013-01-15 17:50           ` Greg KH
2013-01-15 20:16             ` Jason Cooper
2013-01-15 21:56               ` Jason Cooper
2013-01-16  0:17                 ` Soeren Moch
2013-01-16  2:40                   ` Jason Cooper
2013-01-16  3:24                     ` 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 17:05                           ` Soeren Moch
2013-01-16 17:52                             ` Jason Cooper
2013-01-16 18:35                               ` Jason Cooper
2013-01-16 22:26                                 ` Soeren Moch
2013-01-16 23:10                               ` 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:47                           ` Jason Cooper
2013-01-16 22:36                             ` Soeren Moch
2013-01-17 10:49                       ` Arnd Bergmann
2013-01-17 13:47                         ` Soeren Moch
2013-01-17 20:26                           ` Arnd Bergmann
2013-01-19 15:29                             ` Soeren Moch
2013-01-19 18:59                               ` Andrew Lunn
2013-01-23 15:30                                 ` Soeren Moch
2013-01-23 16:25                                   ` Andrew Lunn
2013-01-23 17:07                                     ` Soeren Moch
2013-01-23 17:20                                       ` Soeren Moch
2013-01-23 18:10                                         ` Andrew Lunn
2013-01-28 20:59                                           ` Soeren Moch
2013-01-29  0:13                                             ` Jason Cooper
2013-01-29 11:02                                             ` Andrew Lunn
2013-01-29 11:50                                               ` Soeren Moch
2013-01-19 20:05                               ` Arnd Bergmann
2013-01-21 15:01                                 ` Soeren Moch
2013-01-21 18:55                                   ` Arnd Bergmann
2013-01-21 21:01                                     ` Greg KH [this message]
2013-01-22 18:13                                       ` Arnd Bergmann
2013-01-23 14:37                                         ` Soeren Moch
2013-01-19 16:24                             ` Andrew Lunn
2013-01-15 20:05           ` Sebastian Hesselbarth
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=20130121210150.GA9184@kroah.com \
    --to=gregkh@linuxfoundation.org \
    --cc=akpm@linux-foundation.org \
    --cc=andrew@lunn.ch \
    --cc=arnd@arndb.de \
    --cc=jason@lakedaemon.net \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=kyungmin.park@samsung.com \
    --cc=linaro-mm-sig@lists.linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=m.szyprowski@samsung.com \
    --cc=mgorman@suse.de \
    --cc=mhocko@suse.cz \
    --cc=sebastian.hesselbarth@gmail.com \
    --cc=smoch@web.de \
    --cc=thomas.petazzoni@free-electrons.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).