Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp6870484ybi; Wed, 29 May 2019 14:47:28 -0700 (PDT) X-Google-Smtp-Source: APXvYqwc/8mi54u4EpRMr26gKKam0UuYKN2TtQ297yUuiRpXHIfrn/OycpN21xZIB904DFK9W8s0 X-Received: by 2002:a17:902:a582:: with SMTP id az2mr114407plb.110.1559166448559; Wed, 29 May 2019 14:47:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559166448; cv=none; d=google.com; s=arc-20160816; b=uoiSzAaZ54TXm2nz85GVlDIaQrq8GL/U+iaKgT5lDaPO7z6YAu3VsDqTIZl+PD7U7l 7YpHixo2ZzcUbHyXfjwTU3nZ11YBwlKrihT5Z3KyDoWmnu7yS5V09N1E/LZZYTYWkGup eVUQkhX+7zLvBtVaVvURRUZoq7BuSqvG/sRPO0ewa5No7C4YCdYQ08QBGPl7F79UzwQX nPboFdnyLux9JeDRGewVWtL4IEyjfw66/hewGX6ZIjIJU2aKE4rlqyU5Ogu1fif4J5Hf /UYvUKnY+1gGg/xQMsx+DThh/vWB0nH+7LdnoqnICSmIqOsoYJ+iSUe4PZDO8cu4F6wK L8hA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=Xore5EbM1RPfaLGDfwvhBCS+nazjtQv0oHu+w4QdH3A=; b=uqhx/VeGHZUNqac00jKBjwBwPE4cJ+dzX/mbKtdr2MHZHF9Fq8eyIs61oeF2WHDLJI jkkH/Argc7y8ZQ4tEsfLuPl3kK9FCeB1LylQQhZmxNk2mg3uOgrIZXv5s8m+dhSKjdJe lhwylYZRaE741gQEvhQKpepZ1j+AGKoFY4HdFlUJxqsP2aNyFYxVPE7gyAsZmqOjs5Zg aDHeHauAVfpviv3f51fNhfioNWrrtLMVj+9xal05rHtYzbPJmqSO2WDHZLlhBro3dI0n /WbIL6b5jYLYvJNSZM4z5picK5G4a88a4ZZphIRFLpxiloHFDaiiHKYQaRRho1opZNpG 2rJg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=PNLKJhpe; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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. [209.132.180.67]) by mx.google.com with ESMTP id b40si1024520pla.49.2019.05.29.14.47.01; Wed, 29 May 2019 14:47:28 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=PNLKJhpe; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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 S1726636AbfE2VpU (ORCPT + 99 others); Wed, 29 May 2019 17:45:20 -0400 Received: from mail-io1-f68.google.com ([209.85.166.68]:44687 "EHLO mail-io1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726311AbfE2VpT (ORCPT ); Wed, 29 May 2019 17:45:19 -0400 Received: by mail-io1-f68.google.com with SMTP id f22so3201959iol.11; Wed, 29 May 2019 14:45:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=Xore5EbM1RPfaLGDfwvhBCS+nazjtQv0oHu+w4QdH3A=; b=PNLKJhpev592jajRJweAd6ImF/wZIJ9YUIGUSqTBtUSiUhlTIrxrN9PmdrAhG1UvWU 2mYWvkBW+ZyalqKAWpjwq+jqOB2ozxHzr6Wqj9g4HvRwPNTApf19g+/t/19uu+gPHLpg 4D9Y2L7KYq0bI1IqIM6tZ0wbfPdXx8E4CE1Uk4lmADOuhgLg8fRHSakyWCPfq46H/CgF M4MMxqZ7hgvadjj6JV+7mnaAenPGpQcwNi1Tux65omB4Ds1BCwcKWLalcwfz0Bc0wjjw CqRmxnWABROB1QQRALB3mRl5Mkqr7MJZmzKhEIdJe5Xxuxnh9I9PaVv2wWsVSYpVVI0r GiWQ== 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:mime-version :content-transfer-encoding; bh=Xore5EbM1RPfaLGDfwvhBCS+nazjtQv0oHu+w4QdH3A=; b=s9Pi6bVX/rudiajGcM0Vjv9uleZnniQkNrchCYeJPzcSdCNvryO2x+F9qi+pQRnJYi MhqZSgarKQSJRPjaY0F+rGybk/FS+Ez7c8lEbPGuKUYjTv3JKKRfiazJOOuV7JPiF2E5 0sLDbYXXvBriCm+PkBL1+2syADVb9Z4offkQ/IbX6gdLv4SbmxbsPUxG2cUJljQhM6Nj 8Aca3fijLyReUymrgxg5QhCiYbQKyYoogYMP067zPdRV/ToQC49T9Quqse773fkGdl+s lz5FUUTkBAEEKrHFqPRtHKL7BtL1KJ8JBgZ9aUwupi7vWYhlEHr1dJPguy6oYhKegYbO 5fvg== X-Gm-Message-State: APjAAAVz/AN8Au0s89jnawaBkUoX/WdXtPL6grFn2RAuNEHX/Ooex3tx V6KWUFvNrW2kF8zxgAnf4dI= X-Received: by 2002:a6b:b7d5:: with SMTP id h204mr214015iof.188.1559166318332; Wed, 29 May 2019 14:45:18 -0700 (PDT) Received: from localhost.localdomain ([94.29.35.141]) by smtp.gmail.com with ESMTPSA id n193sm259992itn.27.2019.05.29.14.45.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 29 May 2019 14:45:17 -0700 (PDT) From: Dmitry Osipenko To: Laxman Dewangan , Vinod Koul , Thierry Reding , Jonathan Hunter , Ben Dooks Cc: dmaengine@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v1] dmaengine: tegra-apb: Error out if DMA_PREP_INTERRUPT flag is unset Date: Thu, 30 May 2019 00:43:55 +0300 Message-Id: <20190529214355.15339-1-digetx@gmail.com> X-Mailer: git-send-email 2.21.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Apparently driver was never tested with DMA_PREP_INTERRUPT flag being unset since it completely disables interrupt handling instead of skipping the callbacks invocations, hence putting channel into unusable state. The flag is always set by all of kernel drivers that use APB DMA, so let's error out in otherwise case for consistency. It won't be difficult to support that case properly if ever will be needed. Signed-off-by: Dmitry Osipenko --- drivers/dma/tegra20-apb-dma.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/dma/tegra20-apb-dma.c b/drivers/dma/tegra20-apb-dma.c index cf462b1abc0b..2c84a660ba36 100644 --- a/drivers/dma/tegra20-apb-dma.c +++ b/drivers/dma/tegra20-apb-dma.c @@ -988,8 +988,12 @@ static struct dma_async_tx_descriptor *tegra_dma_prep_slave_sg( csr |= tdc->slave_id << TEGRA_APBDMA_CSR_REQ_SEL_SHIFT; } - if (flags & DMA_PREP_INTERRUPT) + if (flags & DMA_PREP_INTERRUPT) { csr |= TEGRA_APBDMA_CSR_IE_EOC; + } else { + WARN_ON_ONCE(1); + return NULL; + } apb_seq |= TEGRA_APBDMA_APBSEQ_WRAP_WORD_1; @@ -1131,8 +1135,12 @@ static struct dma_async_tx_descriptor *tegra_dma_prep_dma_cyclic( csr |= tdc->slave_id << TEGRA_APBDMA_CSR_REQ_SEL_SHIFT; } - if (flags & DMA_PREP_INTERRUPT) + if (flags & DMA_PREP_INTERRUPT) { csr |= TEGRA_APBDMA_CSR_IE_EOC; + } else { + WARN_ON_ONCE(1); + return NULL; + } apb_seq |= TEGRA_APBDMA_APBSEQ_WRAP_WORD_1; -- 2.21.0