From patchwork Thu Jan 19 11:13:34 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandre Bailon X-Patchwork-Id: 9525479 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 32E126045A for ; Thu, 19 Jan 2017 11:14:26 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 22DA128335 for ; Thu, 19 Jan 2017 11:14:26 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 17CAC28500; Thu, 19 Jan 2017 11:14:26 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.3 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 64013284FF for ; Thu, 19 Jan 2017 11:14:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752178AbdASLOW (ORCPT ); Thu, 19 Jan 2017 06:14:22 -0500 Received: from mail-wm0-f51.google.com ([74.125.82.51]:37381 "EHLO mail-wm0-f51.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752189AbdASLOO (ORCPT ); Thu, 19 Jan 2017 06:14:14 -0500 Received: by mail-wm0-f51.google.com with SMTP id c206so71860951wme.0 for ; Thu, 19 Jan 2017 03:13:45 -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=dMizHBylMzXYMQ1+urGiQqCmqRyGyctiG9CjLDTGGdg=; b=KR7+7oC3ikMZCB11YhS/lkrC1zU4okmCR5BgABauvaGTlK4myc23CupsyE3Qzw/eVv gEJSitfxtHfyDljF6fVqKk8FYBmUbbxoPlhX4PhJqy+VvV/BcoAr7nnuGlx2WNFC5FX6 fdjoygxn3puqXUZtzRhYdQDTceGrqFU6iINeDorRIhlD8sAYYBPILxOYYePtLOBUXnkX QSW+DLzSnLuY8bmeK0kjtmX+DE6weh8A8MPU28pJvAzyt+xtZ85A4R9/ZRkYcbB5RMV6 iG8VNFWL6oJqIajKR/4OmcZnsQMKQTv6u0gS7GdnWhcNIZBtgx32VPv2g3fMn0XKLMKR ldZA== 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=dMizHBylMzXYMQ1+urGiQqCmqRyGyctiG9CjLDTGGdg=; b=shnGhQb7JPcjJK6M7xSkxhlUOaVru2PvFjDwrwq97G0a4aV+orqNiRpn4DFHDAcd4/ BVl8un0mGEoX3OLwGH2gV9wsmCBN0dq9QHAVaB4SUR0wPiA1NxB9BKeEa0BLcl7jGcvm U+QXA+XADAoCNyaCUyzh5JJ8Q5fEPmv5gtCqbbvHSxofjb98R1n0si+6G9iMYooGbFaO 2BtlquNlLQ//3pc8hHRjwWhibkMFFVbJDp7Q4PjLCG+6d+VIj3cjvHujVPnZTgrcRSim IR62Lt0dxIMGI2E1H+MPbWqCSVZj9oNkYkeZZ+hcdmmXeYounO3unqTssBFBRp0vmg0M 9AaQ== X-Gm-Message-State: AIkVDXI72aKx4oylm6dwld2d1RZVMLNsiRQxV2EGCXi/MFFu0MjgQMvC8Bn17kiCOo3gypJM X-Received: by 10.28.103.69 with SMTP id b66mr6313143wmc.73.1484824424787; Thu, 19 Jan 2017 03:13:44 -0800 (PST) Received: from localhost.localdomain ([90.63.244.31]) by smtp.gmail.com with ESMTPSA id g75sm12117028wme.5.2017.01.19.03.13.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 19 Jan 2017 03:13:44 -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, b-liu@ti.com, sergei.shtylyov@cogentembedded.com, grygorii.strashko@ti.com, linux-usb@vger.kernel.org, Alexandre Bailon Subject: [PATCH v3 3/3] dmaengine: cppi41: Fix teardown warnings Date: Thu, 19 Jan 2017 12:13:34 +0100 Message-Id: <20170119111334.14718-4-abailon@baylibre.com> X-Mailer: git-send-email 2.10.2 In-Reply-To: <20170119111334.14718-1-abailon@baylibre.com> References: <20170119111334.14718-1-abailon@baylibre.com> Sender: dmaengine-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: dmaengine@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP 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(-) diff --git a/drivers/dma/cppi41.c b/drivers/dma/cppi41.c index f6f2d84..cd30fd3 100644 --- a/drivers/dma/cppi41.c +++ b/drivers/dma/cppi41.c @@ -630,7 +630,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); @@ -641,7 +641,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) {