Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp3717628imm; Tue, 11 Sep 2018 00:32:07 -0700 (PDT) X-Google-Smtp-Source: ANB0VdZIKYx6ZL7iak+WGk3PpmWJqMVE20UiOFvt8lZvk5qGDIPHlL3SAgPK/iYpH0WnZJUlQPXa X-Received: by 2002:a63:c544:: with SMTP id g4-v6mr27197495pgd.113.1536651127500; Tue, 11 Sep 2018 00:32:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536651127; cv=none; d=google.com; s=arc-20160816; b=d25scm+TOIlvvBxqBwLHcndUrNGd5FwzleUHS9lk85QhT0a4/bxZ1OAcFKomh0P9gI Qzv+59KYZ+D295+wecH3JiZZ+Kw7hiuRD5xMpk6WQLDdKe8M9dF7U6B5ttY5fd2Fsa3Q AXNHwHUB/4XvUh18AmkEEvU2Inr1eED9C4XrDeRg3dFze7eOiSDfqD4CqthZCuGwm8/w ohBqcGmeSEv25B6JyeiCTtx6g3nxT1miQF5LVdkDK+sZ4vqYmn6HY7HkvUuMWrxG2Fad JNjqtjd/UgtYLCpRBpWabl+wxc/2jvS5kybMnoEslZCONrU2+M8mNhAqteWvN+MsvV4c rSyg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:date:subject:cc :to:from; bh=GVI6rXaALE6yMYfOsIcX80msAGkyhNrThLYmMQ4ETBk=; b=iXxElPwEl0XpHrJAXVla8ylRAWY5CumdbjduKIjnCsJ8jGQShEX6TwAbAGKyWefkJ8 Cwij1QnB3o5bslIsl5FNP4c0ELDE6BqnYeX3b4WMnrQXMwpx8vSO51JcLUIzOcSUKBSW qfhBLfe67Su2TkJvSHs9rAWqP0I3D+tTjQ2CAv3y+o6AzCcmCnMB0tzjBAKSbE5pojEO JYXAgZv/4QAe1pyKLr23TV6xU7Ym6zqiRJ8SAYEfvHqEcLzXNDcO4zlKUTGYLjZI9Ng4 dhR+L9B8SPjKX0ScWJD+n6elGv5gEyPuOWzXAoNQ0csoX+QyTg4djP372PkzZxodS3dR Hy2A== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f62-v6si18338646plf.164.2018.09.11.00.31.51; Tue, 11 Sep 2018 00:32:07 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726860AbeIKM3n (ORCPT + 99 others); Tue, 11 Sep 2018 08:29:43 -0400 Received: from mx07-00178001.pphosted.com ([62.209.51.94]:57411 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726301AbeIKM3n (ORCPT ); Tue, 11 Sep 2018 08:29:43 -0400 Received: from pps.filterd (m0046668.ppops.net [127.0.0.1]) by mx07-.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id w8B7TPNb029826; Tue, 11 Sep 2018 09:31:17 +0200 Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com with ESMTP id 2me62r1020-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Tue, 11 Sep 2018 09:31:17 +0200 Received: from zeta.dmz-eu.st.com (zeta.dmz-eu.st.com [164.129.230.9]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 6274434; Tue, 11 Sep 2018 07:31:17 +0000 (GMT) Received: from Webmail-eu.st.com (sfhdag5node2.st.com [10.75.127.14]) by zeta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 3EBEC241B; Tue, 11 Sep 2018 07:31:17 +0000 (GMT) Received: from localhost (10.75.127.44) by SFHDAG5NODE2.st.com (10.75.127.14) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Tue, 11 Sep 2018 09:31:16 +0200 From: Pierre-Yves MORDRET To: Dan Williams , Vinod Koul , Maxime Coquelin , Alexandre Torgue , , , CC: Pierre-Yves MORDRET Subject: [PATCH v1 1/1] dmaengine: stm32-dma: check whether length is aligned on FIFO threshold Date: Tue, 11 Sep 2018 09:31:16 +0200 Message-ID: <1536651076-17005-1-git-send-email-pierre-yves.mordret@st.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.75.127.44] X-ClientProxiedBy: SFHDAG3NODE3.st.com (10.75.127.9) To SFHDAG5NODE2.st.com (10.75.127.14) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-09-11_03:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When a period length is not multiple of FIFO some data may be stuck within FIFO. Burst/FIFO Threshold/Period or buffer length check has to be hardened In any case DMA will grant any request from client but will degraded any parameters whether awkward. Signed-off-by: Pierre-Yves MORDRET --- Version history: v1: * Initial --- --- drivers/dma/stm32-dma.c | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/drivers/dma/stm32-dma.c b/drivers/dma/stm32-dma.c index 379e8d5..4903a40 100644 --- a/drivers/dma/stm32-dma.c +++ b/drivers/dma/stm32-dma.c @@ -308,20 +308,12 @@ static bool stm32_dma_fifo_threshold_is_allowed(u32 burst, u32 threshold, static bool stm32_dma_is_burst_possible(u32 buf_len, u32 threshold) { - switch (threshold) { - case STM32_DMA_FIFO_THRESHOLD_FULL: - if (buf_len >= STM32_DMA_MAX_BURST) - return true; - else - return false; - case STM32_DMA_FIFO_THRESHOLD_HALFFULL: - if (buf_len >= STM32_DMA_MAX_BURST / 2) - return true; - else - return false; - default: - return false; - } + /* + * Buffer or period length has to be aligned on FIFO depth. + * Otherwise bytes may be stuck within FIFO at buffer or period + * length. + */ + return ((buf_len % ((threshold + 1) * 4)) == 0); } static u32 stm32_dma_get_best_burst(u32 buf_len, u32 max_burst, u32 threshold, -- 2.7.4