From patchwork Mon Jan 30 17:49:21 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandre Bailon X-Patchwork-Id: 92907 Delivered-To: patch@linaro.org Received: by 10.140.20.99 with SMTP id 90csp1568806qgi; Mon, 30 Jan 2017 10:18:23 -0800 (PST) X-Received: by 10.98.30.4 with SMTP id e4mr24880821pfe.19.1485800303607; Mon, 30 Jan 2017 10:18:23 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q126si13318600pfb.202.2017.01.30.10.18.23; Mon, 30 Jan 2017 10:18:23 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-usb-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@baylibre-com.20150623.gappssmtp.com; spf=pass (google.com: best guess record for domain of linux-usb-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-usb-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753332AbdA3SSW (ORCPT + 4 others); Mon, 30 Jan 2017 13:18:22 -0500 Received: from mail-wm0-f44.google.com ([74.125.82.44]:38893 "EHLO mail-wm0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752265AbdA3SSV (ORCPT ); Mon, 30 Jan 2017 13:18:21 -0500 Received: by mail-wm0-f44.google.com with SMTP id r141so44335227wmg.1 for ; Mon, 30 Jan 2017 10:18:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=MhKkIRkinMVek0LL5F1GBXKHJMEiupRRDHiIG4IV0FM=; b=fY9CG+ojYlwDhiJd3L+8UOP7Op+k9aTkm47kj8+Vmv3lmTJeB0yEzGKlDw5lOigJP7 PYVIVjNRl+AHPuPeSpHoSqpUmkwYC8eQUdMxXwDmgr4oz4/fa5a47fqgp8gyMJjGRNQe 29O07MU4MJCSIgzJpjg6Gmkbp26zd+vlGZh1aJbfeaMBYUp768nGKE4flEKUNMPkbzOC tL5+n9Y+7hxkas7P03x3Z5zkVVDWgnlEzvEO3AnExquHVOw9G/NdhHNfSL3iCIM1AGVC /cq/eRooT/+2Km+H+Sbh72EGUZrVH63vAM+TrhlKnaNyqXsuVBgDNT6u3TqUFQXwCEuJ 8GuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=MhKkIRkinMVek0LL5F1GBXKHJMEiupRRDHiIG4IV0FM=; b=IxkCfqS5aH4vHNl8p5j5JQ3egcUg6FhhjAyeXLLRxWLXhuXmi5KfXM52Vq01gMQVpc UqihdpbiaiRwb8aXy0Sd3BTfx4eSv2wtT/dpiGw+51OeBroNOOKZRLxLKcCGk5HP9I46 IYaq9VB6pfB+Yzom4JwXOs7hP37jeU19yA2+hA7UOIA7YqKSDvj3Qw1N1hctKjrzg75x KQMUd6eRaVZ6br6waWDelMVyGlkeZ8B+XqmKv8dqTeMyGF+ZrKDeghXHu2NQrX4BpRZu WAYmZFJCEDiF7k1bw8q0TRqdsD4CJgVpkcrCwLkCWG9DzCCeGfZGGaWYlMhXLhELQ8dt aBrQ== X-Gm-Message-State: AIkVDXIMK3+aOc+m39CSZJ36ABlCawhhZBt4684owuvqpea0AJ68sxZIj2YM+KB/VWHFjoal X-Received: by 10.28.66.221 with SMTP id k90mr7253028wmi.90.1485798567403; Mon, 30 Jan 2017 09:49:27 -0800 (PST) Received: from localhost.localdomain ([90.63.244.31]) by smtp.gmail.com with ESMTPSA id b87sm19912333wmi.0.2017.01.30.09.49.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 30 Jan 2017 09:49:26 -0800 (PST) From: Alexandre Bailon To: vinod.koul@intel.com Cc: dmaengine@vger.kernel.org, linux-usb@vger.kernel.org, devicetree@vger.kernel.org, robh+dt@kernel.org, nsekhar@ti.com, khilman@baylibre.com, ptitiano@baylibre.com, tony@atomide.com, b-liu@ti.com, sergei.shtylyov@cogentembedded.com, Alexandre Bailon Subject: [PATCH v4 3/3] dmaengine: cppi41: Fix teardown warnings Date: Mon, 30 Jan 2017 18:49:21 +0100 Message-Id: <20170130174921.28231-4-abailon@baylibre.com> X-Mailer: git-send-email 2.10.2 In-Reply-To: <20170130174921.28231-1-abailon@baylibre.com> References: <20170130174921.28231-1-abailon@baylibre.com> Sender: linux-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org During the teardown of a RX channel, because there is only one completion queue available for RX channel, descriptor of another channel may be popped which will cause 2 warnings: - the first one because we popped a wrong descriptor (neither the channel's descriptor, nor the teardown descriptor). - the second one happen during the teardown of another channel, because we can't find the channel descriptor (that is, the one that caused the first warning). To avoid that, use one free queue instead of a transmit completion queue. Note that fix doesn't fix all the teardown warnings: I still get some when I run some corner case. Signed-off-by: Alexandre Bailon --- drivers/dma/cppi41.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- 2.10.2 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/dma/cppi41.c b/drivers/dma/cppi41.c index 5c501da..9fdd824 100644 --- a/drivers/dma/cppi41.c +++ b/drivers/dma/cppi41.c @@ -629,7 +629,7 @@ static int cppi41_tear_down_chan(struct cppi41_channel *c) if (!c->is_tx) { reg |= GCR_STARV_RETRY; reg |= GCR_DESC_TYPE_HOST; - reg |= c->q_comp_num; + reg |= cdd->td_queue.complete; } reg |= GCR_TEARDOWN; cppi_writel(reg, c->gcr_reg); @@ -640,7 +640,7 @@ static int cppi41_tear_down_chan(struct cppi41_channel *c) if (!c->td_seen || !c->td_desc_seen) { desc_phys = cppi41_pop_desc(cdd, cdd->td_queue.complete); - if (!desc_phys) + if (!desc_phys && c->is_tx) desc_phys = cppi41_pop_desc(cdd, c->q_comp_num); if (desc_phys == c->desc_phys) {