Received: by 2002:a05:6a10:2785:0:0:0:0 with SMTP id ia5csp40206pxb; Tue, 12 Jan 2021 19:23:39 -0800 (PST) X-Google-Smtp-Source: ABdhPJyHx55PjL4BzoMC4M9LQXkWnwzOjpgKBG03C2b0qIz3up/yWIt+1w/rDcGUZb/mUpnrUr24 X-Received: by 2002:a17:906:f0d0:: with SMTP id dk16mr71143ejb.144.1610508219663; Tue, 12 Jan 2021 19:23:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1610508219; cv=none; d=google.com; s=arc-20160816; b=o1H7JtGK7vms8h7VizRSn/9DzO0map0uNN8D6mZeQdcPB5UbNFAzPWl3Q2EwA9a7C4 EMtab9gHTFpKoJJprhlZyZzsCcYMCo1sWONNaCnBFpASlHEk4tqfZuLzPdLr5h9eH3Bx tyhs+DtyNIEeHUolfS1djWWB0fEBsMKnJsoIULAhQaYADWNpvIsY/GFdadlp8zZUUpq+ 6nrvHLmfu2mpL1Bg2H2KJEbnTOrScNaD0JkOOkyf+AOd9Tvx+ukDTJ5qZW8mkHGNTRBH 0g+SLsqRRnlfjTUAXiJ/QYd4JSVbUAJ0Dm40f/rs4YpNqTnbFOBHnLIBPE0PMH7IxSuX qdnA== 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 :message-id:date:subject:cc:to:from:dkim-signature; bh=/iLZF5+MWd8vc9Sg3Pst1Rp9cFBVj8ZZ9VL2up/kMKs=; b=cnpr4dH+cW+jbwdXsGE7zbHB8ImmaNg+yx+RLLGN8QxHyrVLKSi+S1fpcT3HfAQ/l4 fUhlGrzf5anz6n2P4JR7INr1QYsHxfb/Q04Se3z7l+HKgngKNTpCwDLJOF+oFX5jVA9F SbNkyhmtFwAnRwOnnBVpVN63G77U9Pvb7HdfxFWkaWpV65pk6Eeoo84KAQZLSSv9rlLs noX415uhCHB/kM0/3nar1kSaoZ/yfCdr6NM+JCz8EDgljzWNkJ7D19sHBdU6ADQSWRLf uHmlMczWvDv006hcMxUvntKhSHUA46nLVMAByGzqqYputkquFT//0+5u9G22Eq3w+Opv FJNg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@exalondelft.nl header.s=whs1 header.b=ZK0eN8yJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=exalondelft.nl Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id jz8si284983ejb.237.2021.01.12.19.23.16; Tue, 12 Jan 2021 19:23:39 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@exalondelft.nl header.s=whs1 header.b=ZK0eN8yJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=exalondelft.nl Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2394910AbhALW4B (ORCPT + 99 others); Tue, 12 Jan 2021 17:56:01 -0500 Received: from mailfilter03-out40.webhostingserver.nl ([195.211.72.99]:55105 "EHLO mailfilter03-out40.webhostingserver.nl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730650AbhALW4A (ORCPT ); Tue, 12 Jan 2021 17:56:00 -0500 X-Greylist: delayed 1042 seconds by postgrey-1.27 at vger.kernel.org; Tue, 12 Jan 2021 17:55:59 EST DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=exalondelft.nl; s=whs1; h=content-transfer-encoding:mime-version:message-id:date:subject:cc:to:from: from; bh=/iLZF5+MWd8vc9Sg3Pst1Rp9cFBVj8ZZ9VL2up/kMKs=; b=ZK0eN8yJwV5QnmjWRSYbhQ6LQ7c22ilEnMsNsHqsJY2FRyRjwC7Ud+WWIdVoUj22o0BDEQdDdD9Cq 3ABIVt+0QlzGtCl4TgQAKHVhy9vwNsIA5bIcTZmgqB5XFlWEy+OWPljkfafUkQPp8quG4+sQKu6SXF cR7Xle6Wx9U/jzRLN7HHVd6vt2SKnSzDJLRPJKEvUQny0QKBaQaXn3nUTc1SjPNFGy6OE6RP8F/zFQ lOe4iXm+/qRTOPZiomiSmiv5rKUrz10yE5rtR4Xe7P3mztFQ0ZQBwPyQ5vck/W2LvkzWXwN1EQpKpc Z4Krh/P/lJgJSASAwq+ZYPF83KMuXXA== X-Halon-ID: cfb8d4a0-5526-11eb-bfeb-001a4a4cb9a5 Received: from s198.webhostingserver.nl (s198.webhostingserver.nl [141.138.168.154]) by mailfilter03.webhostingserver.nl (Halon) with ESMTPSA id cfb8d4a0-5526-11eb-bfeb-001a4a4cb9a5; Tue, 12 Jan 2021 23:37:54 +0100 (CET) Received: from [2001:981:6fec:1:228:9916:35b6:34c4] (helo=delfion.fritz.box) by s198.webhostingserver.nl with esmtpa (Exim 4.93.0.4) (envelope-from ) id 1kzSIU-000WqI-Dy; Tue, 12 Jan 2021 23:37:54 +0100 From: Ferry Toth To: Ferry Toth , dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Dan Williams , Vinod Koul , Andy Shevchenko Subject: [PATCH v1 1/1] hsu_dma_pci: disable spurious interrupt Date: Tue, 12 Jan 2021 23:37:49 +0100 Message-Id: <20210112223749.97036-1-ftoth@exalondelft.nl> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Antivirus-Scanner: Clean mail though you should still use an Antivirus Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Intel Tangier B0 and Anniedale the interrupt line, disregarding to have different numbers, is shared between HSU DMA and UART IPs. Thus on such SoCs we are expecting that IRQ handler is called in UART driver only. hsu_pci_irq was handling the spurious interrupt from HSU DMA by returning immediately. This wastes CPU time and since HSU DMA and HSU UART interrupt occur simultaneously they race to be handled causing delay to the HSU UART interrupt handling. Fix this by disabling the interrupt entirely. Fixes: 4831e0d9054c ("serial: 8250_mid: handle interrupt correctly in DMA case") Signed-off-by: Ferry Toth --- drivers/dma/hsu/pci.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/drivers/dma/hsu/pci.c b/drivers/dma/hsu/pci.c index 07cc7320a614..9045a6f7f589 100644 --- a/drivers/dma/hsu/pci.c +++ b/drivers/dma/hsu/pci.c @@ -26,22 +26,12 @@ static irqreturn_t hsu_pci_irq(int irq, void *dev) { struct hsu_dma_chip *chip = dev; - struct pci_dev *pdev = to_pci_dev(chip->dev); u32 dmaisr; u32 status; unsigned short i; int ret = 0; int err; - /* - * On Intel Tangier B0 and Anniedale the interrupt line, disregarding - * to have different numbers, is shared between HSU DMA and UART IPs. - * Thus on such SoCs we are expecting that IRQ handler is called in - * UART driver only. - */ - if (pdev->device == PCI_DEVICE_ID_INTEL_MRFLD_HSU_DMA) - return IRQ_HANDLED; - dmaisr = readl(chip->regs + HSU_PCI_DMAISR); for (i = 0; i < chip->hsu->nr_channels; i++) { if (dmaisr & 0x1) { @@ -105,6 +95,17 @@ static int hsu_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) if (ret) goto err_register_irq; + /* + * On Intel Tangier B0 and Anniedale the interrupt line, disregarding + * to have different numbers, is shared between HSU DMA and UART IPs. + * Thus on such SoCs we are expecting that IRQ handler is called in + * UART driver only. Instead of handling the spurious interrupt + * from HSU DMA here and waste CPU time and delay HSU UART interrupt + * handling, disable the interrupt entirely. + */ + if (pdev->device == PCI_DEVICE_ID_INTEL_MRFLD_HSU_DMA) + disable_irq_nosync(chip->irq); + pci_set_drvdata(pdev, chip); return 0; -- 2.27.0