Received: by 2002:a05:6358:45e:b0:b5:b6eb:e1f9 with SMTP id 30csp3871388rwe; Mon, 29 Aug 2022 23:28:03 -0700 (PDT) X-Google-Smtp-Source: AA6agR7KBIha+bKa0efdD2WmPE7+R/vPIwCO05oLC28624nnHyD90okJEAIU6x4VRA8+TqYbOUo1 X-Received: by 2002:a17:907:2c44:b0:741:5173:8082 with SMTP id hf4-20020a1709072c4400b0074151738082mr8420048ejc.428.1661840883598; Mon, 29 Aug 2022 23:28:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661840883; cv=none; d=google.com; s=arc-20160816; b=Y5uVpscdQSyxLohmu6BBWEViiA8eShEmlz9/aavpnImV0SJsA13hsPV1LVCGpojstq qFyGJNAAXb383/N4nZVZzu8TMVYBHY4mJCOuEGoprCUC3SK0kildeaih1yvvkKjRrsRv 9MN215Qj71v98fZkv0yTySgTLoP0J93SQxoLiN5DOUNcnQG1t0eW/UtElHjOGfhV6pJi vOn45ZGtkCTNztKER8Ya6ZkDnw017gFWxW5ESlHsS/tiAYHz5s9QFw6QBwqI53+lfcUj S0d9eGaIEai0WpTK1Nt1HKUZNFdh5IUGm6LWC2iJMqDkSNMPYe4NC+BNbkIpfhBTx9kk 2ldQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=B+X9jVXi7r7azJi2jW2FwUQHG7bXHinLl6Tizxq7Yc8=; b=wNrXVBiokL9A0EoaXUQWFZZbY9CvFYmSoYAT3CPXXSpQZnD82/UihdZugflR99N9bW TMYp6Zty0tFMs+SNhIbebj2EHtuI4URzor7HTxl4/iaPFx5wrseCtIHT+B7/fip0wfkn //bomKhxa9RKveP2GQJM5tBs7AsbcEH9oxc153TMlM7Sm4kWsm5iJ5gvIxN0oPnAN9wd ZDM0i9vy+KmO761slNR/9Nul5z82L4uHVYF5coQwFWix5rYgouO3Ah/6a7414t+qdlvV Oo0iBGNj7mLh4ncr0jm1TLn6Ddesh50xkizFEBgxYkoMm17DfNoaFaWZ3Pm3ceLb49SR WJbA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id t1-20020a170906178100b0073d5dd95a2csi6617616eje.429.2022.08.29.23.27.38; Mon, 29 Aug 2022 23:28:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229830AbiH3GZq (ORCPT + 99 others); Tue, 30 Aug 2022 02:25:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55834 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229775AbiH3GZd (ORCPT ); Tue, 30 Aug 2022 02:25:33 -0400 Received: from szxga03-in.huawei.com (szxga03-in.huawei.com [45.249.212.189]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E49B352456; Mon, 29 Aug 2022 23:25:31 -0700 (PDT) Received: from dggemv704-chm.china.huawei.com (unknown [172.30.72.53]) by szxga03-in.huawei.com (SkyGuard) with ESMTP id 4MGy1W2jQbzHnWq; Tue, 30 Aug 2022 14:23:43 +0800 (CST) Received: from kwepemm600007.china.huawei.com (7.193.23.208) by dggemv704-chm.china.huawei.com (10.3.19.47) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Tue, 30 Aug 2022 14:25:29 +0800 Received: from localhost.localdomain (10.69.192.56) by kwepemm600007.china.huawei.com (7.193.23.208) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Tue, 30 Aug 2022 14:25:28 +0800 From: Jie Hai To: , CC: , Subject: [RESEND PATCH v5 2/7] dmaengine: hisilicon: Fix CQ head update Date: Tue, 30 Aug 2022 14:22:46 +0800 Message-ID: <20220830062251.52993-3-haijie1@huawei.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20220830062251.52993-1-haijie1@huawei.com> References: <20220830062251.52993-1-haijie1@huawei.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-Originating-IP: [10.69.192.56] X-ClientProxiedBy: dggems702-chm.china.huawei.com (10.3.19.179) To kwepemm600007.china.huawei.com (7.193.23.208) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org After completion of data transfer of one or multiple descriptors, the completion status and the current head pointer to submission queue are written into the CQ and interrupt can be generated to inform the software. In interrupt process CQ is read and cq_head is updated. hisi_dma_irq updates cq_head only when the completion status is success. When an abnormal interrupt reports, cq_head will not update which will cause subsequent interrupt processes read the error CQ and never report the correct status. This patch updates cq_head whenever CQ is accessed. Fixes: e9f08b65250d ("dmaengine: hisilicon: Add Kunpeng DMA engine support") Signed-off-by: Jie Hai Acked-by: Zhou Wang --- drivers/dma/hisi_dma.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/dma/hisi_dma.c b/drivers/dma/hisi_dma.c index 98bc488893cc..837f7e4adfa6 100644 --- a/drivers/dma/hisi_dma.c +++ b/drivers/dma/hisi_dma.c @@ -436,12 +436,10 @@ static irqreturn_t hisi_dma_irq(int irq, void *data) desc = chan->desc; cqe = chan->cq + chan->cq_head; if (desc) { + chan->cq_head = (chan->cq_head + 1) % hdma_dev->chan_depth; + hisi_dma_chan_write(hdma_dev->base, HISI_DMA_CQ_HEAD_PTR, + chan->qp_num, chan->cq_head); if (FIELD_GET(STATUS_MASK, cqe->w0) == STATUS_SUCC) { - chan->cq_head = (chan->cq_head + 1) % - hdma_dev->chan_depth; - hisi_dma_chan_write(hdma_dev->base, - HISI_DMA_CQ_HEAD_PTR, chan->qp_num, - chan->cq_head); vchan_cookie_complete(&desc->vd); } else { dev_err(&hdma_dev->pdev->dev, "task error!\n"); -- 2.33.0