Received: by 2002:ac0:a591:0:0:0:0:0 with SMTP id m17-v6csp584166imm; Sat, 7 Jul 2018 04:03:06 -0700 (PDT) X-Google-Smtp-Source: AAOMgpdiVGxjIxIeUW+QQHBq+jLxWzV/3/6M0utdnigOgDOsFKePLX20l0B4wZyZzAO9YkTrOgsz X-Received: by 2002:a63:8c0b:: with SMTP id m11-v6mr12505365pgd.372.1530961386347; Sat, 07 Jul 2018 04:03:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530961386; cv=none; d=google.com; s=arc-20160816; b=YmIZZoixOBBCDTFlh7H03aobtXwxec++vgrIhY8w47JiXlFRwf9qTQCUm0TmbTBr7L Xcz21+xY7DhcjM69obkNeKqZwfILU+uCKS42ql/lhjUGTVTnyfX0BBcXR8Q6itJzjY52 TbWyDbKZcKRxmHBGvLsmdUyQQ6zRIo33Jky+9bQdUnDx51ctcS+In0KynEHuIZpTvN8l 1Lpta8x4nWmiQSy+D73ATJdWqOtj4plfv5h84u23/vYFrnZ49wMmRT6FBJwVyAn7Am3G IIiKVkxj5Y3Z7hxRbrop8mipKw1ofWCiJnuI4zl46Aak8rm63mn/9CrlRtvdm0npqKDx IR9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:dkim-signature:content-transfer-encoding :mime-version:references:in-reply-to:message-id:cc:to:subject:from :date:arc-authentication-results; bh=N3RHUSyzIjZ/NHghqvU6TdGi4lvE/DneJbb8eajc2mY=; b=TaNwemiPzOpsmUSCsLvLHeHWcOqB+vs1Y/o1oLjCYryxQJazHrkaQBsJizebZTTn2N mOKFmkBJs1hSEfxXYRiADWD+PlSayFRGK2icpZ3m+Qm0fHvWHtcPu9rWZCO5ifH8aXo0 H4YJtWV5TnsPnZUuz6rk7JbcWfUSwfFI5feVIu7cpNJZCy/N3swwN9KuXNIBMbLPZSKi 3GB8tP5HKBoIZAJ5SQMENAcVYtBDX9zc48YqAYugMl6Lk2ss8xm21Tes3VYHg5bY/wfU S4KiVg7VNc6out+1J5lCqr2XSxy/92nxqdGpPyjl06bgqi+W1ShmOk5UX85dYOQJqF7D +e7g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b=YZKwFKSJ; 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=NONE dis=NONE) header.from=crapouillou.net Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c62-v6si8185137pfb.98.2018.07.07.04.02.39; Sat, 07 Jul 2018 04:03:06 -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=@crapouillou.net header.s=mail header.b=YZKwFKSJ; 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=NONE dis=NONE) header.from=crapouillou.net Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752947AbeGGLBg (ORCPT + 99 others); Sat, 7 Jul 2018 07:01:36 -0400 Received: from outils.crapouillou.net ([89.234.176.41]:38622 "EHLO crapouillou.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751964AbeGGLBe (ORCPT ); Sat, 7 Jul 2018 07:01:34 -0400 Date: Sat, 07 Jul 2018 13:01:21 +0200 From: Paul Cercueil Subject: Re: [PATCH 01/14] dmaengine: dma-jz4780: Avoid hardcoding number of channels To: PrasannaKumar Muralidharan Cc: Vinod Koul , Rob Herring , Mark Rutland , Ralf Baechle , Paul Burton , James Hogan , Zubair Lutfullah Kakakhel , Mathieu Malaterre , Daniel Silsby , dmaengine@vger.kernel.org, "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , open list , Linux-MIPS Message-Id: <1530961282.2380.0@smtp.crapouillou.net> In-Reply-To: References: <20180703123214.23090-1-paul@crapouillou.net> <20180703123214.23090-2-paul@crapouillou.net> <1530815198.6642.1@smtp.crapouillou.net> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1; format=flowed Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=crapouillou.net; s=mail; t=1530961291; bh=N3RHUSyzIjZ/NHghqvU6TdGi4lvE/DneJbb8eajc2mY=; h=Date:From:Subject:To:Cc:Message-Id:In-Reply-To:References:MIME-Version:Content-Type:Content-Transfer-Encoding; b=YZKwFKSJb/oneZxgnNtLYModd/JmPjjTcoNn3+EkY+VE5kt3/8ifzfaUQVn3xLn1TlKZxv09Cj/jpq+LDWfEMdCdMKJ+0VDHnSHfO6G8Mh6+mBK3uMRMoMcMI+WEU3Ahkc+Rf9z+u1rG8F2o12whc9KQeesJdUCMPxJiSAb0u+Y= Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Le sam. 7 juil. 2018 =E0 9:34, PrasannaKumar Muralidharan=20 a =E9crit : > On 5 July 2018 at 23:56, Paul Cercueil wrote: >> Hi PrasannaKumar, >>=20 >>=20 >>> Hi Paul, >>>=20 >>> On 3 July 2018 at 18:02, Paul Cercueil =20 >>> wrote: >>>>=20 >>>> As part of the work to support various other Ingenic JZ47xx SoC >>>> versions, >>>> which don't feature the same number of DMA channels per core, we=20 >>>> now >>>> deduce the number of DMA channels available from the devicetree >>>> compatible string. >>>>=20 >>>> Signed-off-by: Paul Cercueil >>>> --- >>>> drivers/dma/dma-jz4780.c | 53=20 >>>> +++++++++++++++++++++++++++++----------- >>>> 1 file changed, 39 insertions(+), 14 deletions(-) >>>>=20 >>>> diff --git a/drivers/dma/dma-jz4780.c b/drivers/dma/dma-jz4780.c >>>> index 85820a2d69d4..b40f491f0367 100644 >>>> --- a/drivers/dma/dma-jz4780.c >>>> +++ b/drivers/dma/dma-jz4780.c >>>> @@ -16,6 +16,7 @@ >>>> #include >>>> #include >>>> #include >>>> +#include >>>> #include >>>> #include >>>> #include >>>> @@ -23,8 +24,6 @@ >>>> #include "dmaengine.h" >>>> #include "virt-dma.h" >>>>=20 >>>> -#define JZ_DMA_NR_CHANNELS 32 >>>> - >>>> /* Global registers. */ >>>> #define JZ_DMA_REG_DMAC 0x1000 >>>> #define JZ_DMA_REG_DIRQP 0x1004 >>>> @@ -135,14 +134,20 @@ struct jz4780_dma_chan { >>>> unsigned int curr_hwdesc; >>>> }; >>>>=20 >>>> +enum jz_version { >>>> + ID_JZ4780, >>>> +}; >>>> + >>>> struct jz4780_dma_dev { >>>> struct dma_device dma_device; >>>> void __iomem *base; >>>> struct clk *clk; >>>> unsigned int irq; >>>> + unsigned int nb_channels; >>>> + enum jz_version version; >>>>=20 >>>> uint32_t chan_reserved; >>>> - struct jz4780_dma_chan chan[JZ_DMA_NR_CHANNELS]; >>>> + struct jz4780_dma_chan chan[]; >>>=20 >>>=20 >>> Looks like a variable length array in struct. I think there is some >>> effort to remove the usage of VLA. Can you revisit this? I may be >>> wrong, please feel free to correct. >>=20 >>=20 >> Are you sure? It's the first time I hear about it. >> Could anybody confirm? >=20 > Please see [1] for info. >=20 > Variable Length Arrays in struct is expressly forbidden in C99, C11. > Clang does not support it. To make kernel compile with Clang few > people are trying to remove/reduce VLAIS usage. >=20 > 1.=20 > https://blog.linuxplumbersconf.org/2013/ocw/system/presentations/1221/ori= ginal/VLAIS.pdf I read it, and my structure is not a VLAIS; my "chan" array is a=20 flexible array, its sizeof() is 0, so the sizeof() of the structure is constant. See page 6 of the PDF, about alternatives to VLAIS: "If possible use a flexible array member and move the array to the end=20 of the struct" Which is what I am doing here. -Paul =