From patchwork Wed Jan 16 15:50:45 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Cooper X-Patchwork-Id: 14087 Return-Path: X-Original-To: patchwork@peony.canonical.com Delivered-To: patchwork@peony.canonical.com Received: from fiordland.canonical.com (fiordland.canonical.com [91.189.94.145]) by peony.canonical.com (Postfix) with ESMTP id 27C30241E7 for ; Wed, 16 Jan 2013 15:51:09 +0000 (UTC) Received: from mail-vc0-f181.google.com (mail-vc0-f181.google.com [209.85.220.181]) by fiordland.canonical.com (Postfix) with ESMTP id 99636A193CA for ; Wed, 16 Jan 2013 15:51:08 +0000 (UTC) Received: by mail-vc0-f181.google.com with SMTP id fl17so1461835vcb.12 for ; Wed, 16 Jan 2013 07:51:08 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:x-forwarded-to:x-forwarded-for:delivered-to:x-received :received-spf:x-mail-handler:x-originating-ip:x-report-abuse-to :x-mho-user:date:from:to:message-id:references:mime-version :content-disposition:in-reply-to:user-agent:cc:subject:x-beenthere :x-mailman-version:precedence:list-id:list-unsubscribe:list-archive :list-post:list-help:list-subscribe:content-type :content-transfer-encoding:sender:errors-to:x-gm-message-state; bh=fKuOcFMjwfFvsHyrfng/MkF1NulfP1Ij9cuBVaMH8ag=; b=j5IEboTMsGEmfJ3EOflatMfO5R9jmEMUOmDP6VCWamgYyiyOIiLz7047omrbqpZ8Qi Kxcd6EXStPT2XkKenYyjYx+l9UTQnAfQkCKHbdX+2sJo1MCqYEHMD7VDkINlMMNFvswI /TWn4spmRwPdTUj7s0fjPUaalpU3Oj25bio74q3Na1Ysul/z1a00ifzYDBf/ixl2TI3c iYtiI34zOeCyCP+c0oeTrcTec2ZUQGqbC6bj2vWgtg1iXmkABCR809y0Eirdfwapb/dI ZPNnO55GRx/ua0oe/lZnFrlJZfSdI5PcfaQQeL04BccCwTXCuaLecHjzkY96DflXTy3/ RGcA== X-Received: by 10.52.97.7 with SMTP id dw7mr1484922vdb.38.1358351468088; Wed, 16 Jan 2013 07:51:08 -0800 (PST) X-Forwarded-To: linaro-patchwork@canonical.com X-Forwarded-For: patch@linaro.org linaro-patchwork@canonical.com Delivered-To: patches@linaro.org Received: by 10.58.145.101 with SMTP id st5csp173712veb; Wed, 16 Jan 2013 07:51:06 -0800 (PST) X-Received: by 10.14.204.198 with SMTP id h46mr3970184eeo.1.1358351466328; Wed, 16 Jan 2013 07:51:06 -0800 (PST) Received: from mombin.canonical.com (mombin.canonical.com. [91.189.95.16]) by mx.google.com with ESMTP id l8si54471516eem.77.2013.01.16.07.51.05; Wed, 16 Jan 2013 07:51:06 -0800 (PST) Received-SPF: neutral (google.com: 91.189.95.16 is neither permitted nor denied by best guess record for domain of linaro-mm-sig-bounces@lists.linaro.org) client-ip=91.189.95.16; Authentication-Results: mx.google.com; spf=neutral (google.com: 91.189.95.16 is neither permitted nor denied by best guess record for domain of linaro-mm-sig-bounces@lists.linaro.org) smtp.mail=linaro-mm-sig-bounces@lists.linaro.org Received: from localhost ([127.0.0.1] helo=mombin.canonical.com) by mombin.canonical.com with esmtp (Exim 4.71) (envelope-from ) id 1TvVGV-0006Fi-CK; Wed, 16 Jan 2013 15:50:59 +0000 Received: from mho-03-ewr.mailhop.org ([204.13.248.66] helo=mho-01-ewr.mailhop.org) by mombin.canonical.com with esmtp (Exim 4.71) (envelope-from ) id 1TvVGU-0006FZ-2C for linaro-mm-sig@lists.linaro.org; Wed, 16 Jan 2013 15:50:58 +0000 Received: from pool-72-84-113-162.nrflva.fios.verizon.net ([72.84.113.162] helo=titan) by mho-01-ewr.mailhop.org with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.72) (envelope-from ) id 1TvVGN-000H05-JD; Wed, 16 Jan 2013 15:50:51 +0000 Received: from titan.lakedaemon.net (localhost [127.0.0.1]) by titan (Postfix) with ESMTP id 8694C3D75AC; Wed, 16 Jan 2013 10:50:45 -0500 (EST) X-Mail-Handler: Dyn Standard SMTP by Dyn X-Originating-IP: 72.84.113.162 X-Report-Abuse-To: abuse@dyndns.com (see http://www.dyndns.com/services/sendlabs/outbound_abuse.html for abuse reporting information) X-MHO-User: U2FsdGVkX18B1HefCvZ/IoiL3Pj7bcgfJp4p4CXhNDE= Date: Wed, 16 Jan 2013 10:50:45 -0500 From: Jason Cooper To: Soeren Moch Message-ID: <20130116155045.GI25500@titan.lakedaemon.net> References: <1353421905-3112-1-git-send-email-m.szyprowski@samsung.com> <50F3F289.3090402@web.de> <20130115165642.GA25500@titan.lakedaemon.net> <20130115175020.GA3764@kroah.com> <20130115201617.GC25500@titan.lakedaemon.net> <20130115215602.GF25500@titan.lakedaemon.net> <50F5F1B7.3040201@web.de> <20130116024014.GH25500@titan.lakedaemon.net> <50F61D86.4020801@web.de> <50F66B1B.40301@web.de> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <50F66B1B.40301@web.de> User-Agent: Mutt/1.5.20 (2009-06-14) Cc: Thomas Petazzoni , Andrew Lunn , Arnd Bergmann , linux-arm-kernel@lists.infradead.org, Greg KH , linux-kernel@vger.kernel.org, Michal Hocko , linux-mm@kvack.org, Kyungmin Park , Mel Gorman , Andrew Morton , Sebastian Hesselbarth , linaro-mm-sig@lists.linaro.org, KAMEZAWA Hiroyuki Subject: [Linaro-mm-sig] [PATCH] ata: sata_mv: fix sg_tbl_pool alignment X-BeenThere: linaro-mm-sig@lists.linaro.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: "Unified memory management interest group." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linaro-mm-sig-bounces@lists.linaro.org Errors-To: linaro-mm-sig-bounces@lists.linaro.org X-Gm-Message-State: ALoCoQlvS8aJ4e6CmwcFJneqv8d28+4oWjeRiYKqgv/BjtjlESRzNXeCrs5Y4uXQOpelDrNjht8p On Wed, Jan 16, 2013 at 09:55:55AM +0100, Soeren Moch wrote: > On 16.01.2013 04:24, Soeren Moch wrote: > >On 16.01.2013 03:40, Jason Cooper wrote: > >>On Wed, Jan 16, 2013 at 01:17:59AM +0100, Soeren Moch wrote: > >>>On 15.01.2013 22:56, Jason Cooper wrote: > >>>>On Tue, Jan 15, 2013 at 03:16:17PM -0500, Jason Cooper wrote: > OK, I could trigger the error > ERROR: 1024 KiB atomic DMA coherent pool is too small! > Please increase it with coherent_pool= kernel parameter! > only with em28xx sticks and sata, dib0700 sticks removed. Did you test the reverse scenario? ie dib0700 with sata_mv and no em28xx. What kind of throughput are you pushing to the sata disk? > >>What would be most helpful is if you could do a git bisect between > >>v3.5.x (working) and the oldest version where you know it started > >>failing (v3.7.1 or earlier if you know it). > >> > >I did not bisect it, but Marek mentioned earlier that commit > >e9da6e9905e639b0f842a244bc770b48ad0523e9 in Linux v3.6-rc1 introduced > >new code for dma allocations. This is probably the root cause for the > >new (mis-)behavior (due to my tests 3.6.0 is not working anymore). > > I don't want to say that Mareks patch is wrong, probably it triggers a > bug somewhere else! (in em28xx?) Of the four drivers you listed, none are using dma. sata_mv is the only one. If one is to believe the comments in sata_mv.c:~151, then the alignment is wrong for the sg_tbl_pool. Could you please try the following patch? thx, Jason. ---8<---------- >From 566c7e30285e4c31d76724ea4811b016b753f24f Mon Sep 17 00:00:00 2001 From: Jason Cooper Date: Wed, 16 Jan 2013 15:43:37 +0000 Subject: [PATCH] ata: sata_mv: fix sg_tbl_pool alignment If the comment is to be believed, the alignment should be 16B, and the size 4K. The current code sets both to 4K. On some arm boards (kirkwood), this causes: ERROR: 1024 KiB atomic DMA coherent pool is too small! Please increase it with coherent_pool= kernel parameter! Set alignment to 16B to prevent exhausting the atomic_pool. Signed-off-by: Jason Cooper --- drivers/ata/sata_mv.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c index 68f4fb5..e2e5a8a 100644 --- a/drivers/ata/sata_mv.c +++ b/drivers/ata/sata_mv.c @@ -148,6 +148,9 @@ enum { * CRPB needs alignment on a 256B boundary. Size == 256B * ePRD (SG) entries need alignment on a 16B boundary. Size == 16B */ + MV_CRQB_Q_ALIGN = 1024, + MV_CRPB_Q_ALIGN = 256, + MV_SG_TBL_ALIGN = 16, MV_CRQB_Q_SZ = (32 * MV_MAX_Q_DEPTH), MV_CRPB_Q_SZ = (8 * MV_MAX_Q_DEPTH), MV_MAX_SG_CT = 256, @@ -3975,17 +3978,17 @@ done: static int mv_create_dma_pools(struct mv_host_priv *hpriv, struct device *dev) { hpriv->crqb_pool = dmam_pool_create("crqb_q", dev, MV_CRQB_Q_SZ, - MV_CRQB_Q_SZ, 0); + MV_CRQB_Q_ALIGN, 0); if (!hpriv->crqb_pool) return -ENOMEM; hpriv->crpb_pool = dmam_pool_create("crpb_q", dev, MV_CRPB_Q_SZ, - MV_CRPB_Q_SZ, 0); + MV_CRPB_Q_ALIGN, 0); if (!hpriv->crpb_pool) return -ENOMEM; hpriv->sg_tbl_pool = dmam_pool_create("sg_tbl", dev, MV_SG_TBL_SZ, - MV_SG_TBL_SZ, 0); + MV_SG_TBL_ALIGN, 0); if (!hpriv->sg_tbl_pool) return -ENOMEM;