Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752000AbdGFImD (ORCPT ); Thu, 6 Jul 2017 04:42:03 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:35094 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750942AbdGFImB (ORCPT ); Thu, 6 Jul 2017 04:42:01 -0400 Subject: Re: [PATCH] bus: arm-cci: constify attribute_group structures. To: Arvind Yadav , nico@linaro.org, mark.rutland@arm.com, mingo@kernel.org, lorenzo.pieralisi@arm.com References: <9b105274-212e-1ec1-8b9e-6dd3d6c16484@arm.com> <44004c2c-b843-1f4c-efc4-2ca759e49182@gmail.com> Cc: linux-kernel@vger.kernel.org From: Suzuki K Poulose Message-ID: Date: Thu, 6 Jul 2017 09:41:58 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <44004c2c-b843-1f4c-efc4-2ca759e49182@gmail.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2697 Lines: 91 On 06/07/17 05:53, Arvind Yadav wrote: > Hi, > > > On Wednesday 05 July 2017 09:33 PM, Suzuki K Poulose wrote: >> On 03/07/17 08:46, Arvind Yadav wrote: >>> attribute_groups are not supposed to change at runtime. All functions >>> working with attribute_groups provided by work with const >>> attribute_group. So mark the non-const structs as const. >>> >>> Signed-off-by: Arvind Yadav >>> --- >>> drivers/bus/arm-cci.c | 6 +++--- >>> 1 file changed, 3 insertions(+), 3 deletions(-) >>> >>> diff --git a/drivers/bus/arm-cci.c b/drivers/bus/arm-cci.c >>> index c49da15..64c75d2 100644 >>> --- a/drivers/bus/arm-cci.c >>> +++ b/drivers/bus/arm-cci.c >>> @@ -1445,16 +1445,16 @@ static ssize_t pmu_cpumask_attr_show(struct device *dev, >>> NULL, >>> }; >>> >>> -static struct attribute_group pmu_attr_group = { >>> +static const struct attribute_group pmu_attr_group = { >>> .attrs = pmu_attrs, /*This can be const*/ >>> }; >>> >>> -static struct attribute_group pmu_format_attr_group = { >>> +static const struct attribute_group pmu_format_attr_group = { >>> .name = "format", >>> .attrs = NULL, /* Filled in cci_pmu_init_attrs */ >>> }; >> >> >> >>> >>> -static struct attribute_group pmu_event_attr_group = { >>> +static const struct attribute_group pmu_event_attr_group = { >>> .name = "events", >>> .attrs = NULL, /* Filled in cci_pmu_init_attrs */ >>> }; >>> >> >> I think we cannot make these const, as the attrs field gets filled in at runtime, indicated >> by the comments next to them. >> > Yes, Your are right. It's filled at run time. > pmu_event_attr_group.attrs = model->event_attrs; > pmu_format_attr_group.attrs = model->format_attrs; > can we make pmu_attr_group as const.? It's already initialized. > If you are ok with this please let me know. I can push updated patch. > Yes, you can do that. Or you could go a step ahead and create per-model pmu_attr_groups[], with shared pmu_attr_group and per-model event/format groups and tie it to the model description and make everything const. i.e, static const struct attribute_group cci5xx_pmu_attr_groups[] = { &pmu_attr_group, &cci5xx_format_attr_group, &cci5xx_event_attr_group, NULL, }; static const struct attribute_group cci400r0_pmu_attr_groups = { &pmu_attr_group, &cci400_pmu_format_attr_group, &cci400_pmu_event_attr_group, NULL, }; static const struct attribute_group cci400r1_pmu_attr_groups = { &pmu_attr_group, &cci400_pmu_format_attr_group, &cci400r1_pmu_event_attr_group, NULL, }; and then do : cci_pmu->pmu = (struct pmu) { .... .attr_groups = model->attr_groups, }; Suzuki