Received: by 2002:ac0:e350:0:0:0:0:0 with SMTP id g16csp2453668imn; Tue, 2 Aug 2022 03:30:48 -0700 (PDT) X-Google-Smtp-Source: AA6agR63l3434TFhAdF35jzIimXiECX/C5lHd66mrbJxo2OZA6u/qQ3j40wqiZRxm52YgpWXxpMJ X-Received: by 2002:a17:903:260b:b0:16e:d654:6c41 with SMTP id jd11-20020a170903260b00b0016ed6546c41mr13324889plb.29.1659436248146; Tue, 02 Aug 2022 03:30:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1659436248; cv=none; d=google.com; s=arc-20160816; b=r+VpI9ZqNcUjqJq560RayqH0U4TWpdrccdFs3hfMkWjcunzrHcb9PCyaEnW1xMvFLd PAtO4V17C1pFMX/uPEagJ7dClPqt1nvGQ9FYwpuh+4nIviSoMZ48Pb52NW+Gujlk6L48 EHTn47X6UsGDcykoOgJ9p+UU8SdqZ96jADu/n7MydpZ15LkMHaP/qItXJZpTepmYepkm ts2Bc8xoeosVvHLpc4RMOvMkuEcM3lmH8CI1lKeZuwfG3IoIDDbXdjpP3mI9Hc4lP2bN Ltn00lM9muVdj4X8gj0BzLhSkgD6NBia6eIrjwuOW//o+2MHFK2DAoZNefMb5ggcyhxI u5ng== 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=RVlRxPwERKCVOpgz82FzGRtkJYrsxl1Xe3jqsuAb00FmuqtMmsBFIW7IrKUFNcaRq9 nwEjZeN5RzDgg29u07cE+HfOyRn17+G4XzFe7Yjc9JaShuAFR5R+ObzTZoH3Oq5WO9XE 825f26sngd/CO5yMB0mn/xUiyO6h/xLOK20lTvOP2unX64NHiqvLSqYSAADvwdTX/Jlh L/mlcQOKQ6Fedt/Y+V8HjbHv2EzhrBY5JH32pc0omgdznlh0j1TDDIL9WfnIJ0sTqLOH IMDe0U/r+He+LWXWHqQQrTI4kQxrS5+fF+8PVk5cJVdzbzAgRFFHykTR30ghUufMl6Hg cZEA== 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 s23-20020a056a00179700b00522c9732f7dsi16222547pfg.322.2022.08.02.03.30.33; Tue, 02 Aug 2022 03:30:48 -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 S236575AbiHBKPg (ORCPT + 99 others); Tue, 2 Aug 2022 06:15:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56552 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233452AbiHBKPb (ORCPT ); Tue, 2 Aug 2022 06:15:31 -0400 Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CBC7A1D316; Tue, 2 Aug 2022 03:15:29 -0700 (PDT) Received: from dggemv704-chm.china.huawei.com (unknown [172.30.72.56]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4LxrRc2WvWzmVWd; Tue, 2 Aug 2022 18:13:32 +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, 2 Aug 2022 18:15:28 +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, 2 Aug 2022 18:15:27 +0800 From: Jie Hai To: , CC: , , , Subject: [PATCH v4 2/7] dmaengine: hisilicon: Fix CQ head update Date: Tue, 2 Aug 2022 18:12:21 +0800 Message-ID: <20220802101226.9005-3-haijie1@huawei.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20220802101226.9005-1-haijie1@huawei.com> References: <20220625074422.3479591-1-haijie1@huawei.com> <20220802101226.9005-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: dggems705-chm.china.huawei.com (10.3.19.182) 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 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