Received: by 2002:a05:6a10:2785:0:0:0:0 with SMTP id ia5csp338209pxb; Wed, 13 Jan 2021 05:08:43 -0800 (PST) X-Google-Smtp-Source: ABdhPJz14FtBSikhANNFaIg5+l1cntwpws8ENie6WuhwJxZ2HNSKsccy51x+YWcIwBwx9eXA0qoM X-Received: by 2002:a17:907:2d8b:: with SMTP id gt11mr1559538ejc.32.1610543323190; Wed, 13 Jan 2021 05:08:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1610543323; cv=none; d=google.com; s=arc-20160816; b=ZxRLpLULb00WUupwU8Umo3Fc3CszitOU77/G+RhVX+/fU2Okp+YuZRZlOkkcqH8Ob9 wRAAlwHB2bPcNWQm3wzmIP2oOoG+efUCmoEq5ev5+KzDTs6m7zL68OsI2cEtiYQGLzKX a0Z+srwNkHD6ofp+CKldm+ZJ9az58JITuTd8Y51nKiqQBx+qQDwWAXMZUGXYBTIkU/i+ mVUWtPyd2C31mbvATw4kd/YV+EHY6pS8IREwTAM37xcGCTEB1wlaWfej0JGkinrfW1Ma kbpLzmabYQiNbu1O1CedSV5ot7qKbeeH7+DMZO6I88AQizILpU7EvpD2aVMFTNycjlPh U3jg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=IVJs+wfp4qreGTLYzgt4gXDakLeTUHDUIVeds1NEB3w=; b=Yd5+AzYnkJyW3m+XZ8LgBZ8axTd8LzEbFS5fzvXI9LpNygHbecEFjPRY17Dm2AcC8W 8kE92w206OgVzZ6mwUV+aA9w4cQrTzrKFuBuSKXouhhjgBsX+UnKNnCqjAYxTMt5jq3V vTFqDvl8B7O0nWWpKa+MwpzBnNjod3Q8FjJu9xn8RwoiTU/7gGEbVJNdWr+Bu7II15Hk +Mwo3Hrd6AGghB193qKrX0jg1/fFvRKAA9FNcRO3cawDuBBLkMhJ9bqPNMdsETe6KnyM KsvnTPWFXhkJ2Mo235dH7O8UbL7I0gq2NU29RIuh2kWlrHaWsMHsZ1E/v3w3uxDe7twL /GDA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Q603Itwb; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id e8si919630edq.377.2021.01.13.05.08.17; Wed, 13 Jan 2021 05:08:43 -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=@gmail.com header.s=20161025 header.b=Q603Itwb; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726787AbhAMNGV (ORCPT + 99 others); Wed, 13 Jan 2021 08:06:21 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47322 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725857AbhAMNGU (ORCPT ); Wed, 13 Jan 2021 08:06:20 -0500 Received: from mail-pf1-x42b.google.com (mail-pf1-x42b.google.com [IPv6:2607:f8b0:4864:20::42b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E1D2EC061575; Wed, 13 Jan 2021 05:05:39 -0800 (PST) Received: by mail-pf1-x42b.google.com with SMTP id m6so1178269pfm.6; Wed, 13 Jan 2021 05:05:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=IVJs+wfp4qreGTLYzgt4gXDakLeTUHDUIVeds1NEB3w=; b=Q603ItwbofIDv0BZdc0l/fkr0heq3s6JMUNYsCKrXLGNOwpfASDzD0aOEo6EOcqcN/ yApmddQBQh952j8W9gTxwosqY49Ch6DnCSoftFF2uFDMpND0UkAbu0NlXNSdoomGZVMB I/+13VBhsQTHaz6rfN6o5VZUAfV/e/fPkxCnvM2MXqxqwMuVSPUDE4UlP2ADrmd0766n MYRzd2n3ULDqL+H/qCZgjOjEjDI17pMmZH0WDsynKMAEdysHufuBUaEnZ0cG9WdRKrmU gPZgIQb3FqE5gKGLSYLThp9qOlzLRBIZlX+z3rVH6uX7DDWMAVv8sfqZ/tAO8BXTKK6f PjFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=IVJs+wfp4qreGTLYzgt4gXDakLeTUHDUIVeds1NEB3w=; b=pAxusdDDzYMCKyZxrrT08z6xaoDSIBaFbvBa90Sf1OZ7gnr2+ovvX21zr0folPjHjn qDszubeEOH7PUgEehxxsxCPaeGpqmlso36Z2CHhhRZf1FxJE9Y7fNHOFTU62iVU3qof7 +eBtkvNofSlnR+pVNISBgvtEzs+txviM3xDm0+MiB9mO+YTVVw/BX+Kazq6o6bSi064Q gNsm6GthlmkPUafgHFjsNDTFhytqnI5KXPnIoNnRj4VAixpc+RFMby8zpYazbP95gKM3 bHC18JQhT/f4cM8FaJlc61NUYB6OieQyV3K4s9t74wavMDLTjX4sVlVk699NwZCC5UBq aOhg== X-Gm-Message-State: AOAM531Tro4LaZt5unvnHcaM4S6VPaDFwPiM/KfKNlqEnLtODlyGn3eC b6ttOXP6tPt2Yd1OwgVJsqB+FbgoY9Ji0nnousY= X-Received: by 2002:a63:c04b:: with SMTP id z11mr2029372pgi.74.1610543139443; Wed, 13 Jan 2021 05:05:39 -0800 (PST) MIME-Version: 1.0 References: <20210112223749.97036-1-ftoth@exalondelft.nl> In-Reply-To: <20210112223749.97036-1-ftoth@exalondelft.nl> From: Andy Shevchenko Date: Wed, 13 Jan 2021 15:05:23 +0200 Message-ID: Subject: Re: [PATCH v1 1/1] hsu_dma_pci: disable spurious interrupt To: Ferry Toth Cc: dmaengine , Linux Kernel Mailing List , Dan Williams , Vinod Koul , Andy Shevchenko Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jan 13, 2021 at 5:23 AM Ferry Toth wrote: > > 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 hsu_pci_irq() > 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. Title should be "dmaengine: hsu: ..." After addressing above Reviewed-by: Andy Shevchenko > 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 > -- With Best Regards, Andy Shevchenko