From patchwork Tue Jan 24 09:58:48 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandre Bailon X-Patchwork-Id: 92310 Delivered-To: patch@linaro.org Received: by 10.182.3.34 with SMTP id 2csp1616731obz; Tue, 24 Jan 2017 01:59:09 -0800 (PST) X-Received: by 10.98.81.6 with SMTP id f6mr14615239pfb.180.1485251949793; Tue, 24 Jan 2017 01:59:09 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c12si12857091pfe.23.2017.01.24.01.59.09; Tue, 24 Jan 2017 01:59:09 -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 S1750824AbdAXJ7D (ORCPT + 4 others); Tue, 24 Jan 2017 04:59:03 -0500 Received: from mail-wm0-f44.google.com ([74.125.82.44]:36590 "EHLO mail-wm0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750814AbdAXJ67 (ORCPT ); Tue, 24 Jan 2017 04:58:59 -0500 Received: by mail-wm0-f44.google.com with SMTP id c85so172758092wmi.1 for ; Tue, 24 Jan 2017 01:58:59 -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=aJ6ln5PiopJGQSEDFCmqBulAPHzBCpNoOXXKtOcsYN9ZiHzgavdTKrXOFNWrQfjroe z5JAN88tsz7swP+c2QYFopS6Rbviwkdg9R11TULh5BzTTzziijj6/AAAZ8jbCqcui95v uKGOeV9xskfgJ6fq8hQOzeGFd3n2IFcgiMXdmI6PZ6815KZeBgys3wUA5ONK67j27v4+ I95bJHEvsEILGJE2oLNyoNK81KQ1iPIbUeqKKn9GhXszWqtErUGMNAaEgZq+K8/gnPQw l8cSpL/GlVpR6MYNGEm2dee6Qt1DhrM+x+Md4VHgJickdzFyIe+zoZcQttpMOriLDjYU OAHg== 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=RfQMiM5ogOwA4qU8nc6Kxx+zWUSFkC2M2qMzIUIoQqpD6J7jyqqLk5gqzvBSucUt9C yU1uiL1jxIT8LXpYNq1aVjI+Ro3ZUXtX3lJ+1Yc4wA1596mRP1rb779A1q/8ZiwnQZXZ eMLoNk+UyaYClDyg80UhQFX4mJtIKpOUlxBbvIxLGWPObWK3ZJzON1CmmZ6jMoVm3Dgs Rz0xtnURa8P6up6TZR8rohxf/cWntbgi/dy7XPOdxMxmbQwwcX33c82N6P2oYtynpdWL UFxyUGADR6yc4K+U0+8J624EAOPFeXrd6wpyG4UGTixlL5ffInHWlP72nNcaOGczshjA wmSQ== X-Gm-Message-State: AIkVDXLxUFJW9tXxF1egT0i3oflZt1cMUna5tEXDZZybj+qyRvMjyg1L9pnZ7bWzBwSpMZTA X-Received: by 10.223.156.9 with SMTP id f9mr27666659wrc.157.1485251938429; Tue, 24 Jan 2017 01:58:58 -0800 (PST) Received: from localhost.localdomain ([90.63.244.31]) by smtp.gmail.com with ESMTPSA id l10sm16243815wrb.44.2017.01.24.01.58.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 24 Jan 2017 01:58:58 -0800 (PST) From: Alexandre Bailon To: vinod.koul@intel.com Cc: dmaengine@vger.kernel.org, nsekhar@ti.com, khilman@baylibre.com, ptitiano@baylibre.com, tony@atomide.com, linux-omap@vger.kernel.org, linux-usb@vger.kernel.org, b-liu@ti.com, sergei.shtylyov@cogentembedded.com, devicetree@vger.kernel.org, robh+dt@kernel.org, Alexandre Bailon Subject: [PATCH v3 3/3] dmaengine: cppi41: Fix teardown warnings Date: Tue, 24 Jan 2017 10:58:48 +0100 Message-Id: <20170124095848.14593-4-abailon@baylibre.com> X-Mailer: git-send-email 2.10.2 In-Reply-To: <20170124095848.14593-1-abailon@baylibre.com> References: <20170124095848.14593-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) {