From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752147AbbFZLLE (ORCPT ); Fri, 26 Jun 2015 07:11:04 -0400 Received: from foss.arm.com ([217.140.101.70]:59831 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751782AbbFZLK5 (ORCPT ); Fri, 26 Jun 2015 07:10:57 -0400 Date: Fri, 26 Jun 2015 12:10:47 +0100 From: Will Deacon To: Joerg Roedel Cc: Rob Herring , "grant.likely@linaro.org" , "linux-arm-kernel@lists.infradead.org" , "iommu@lists.linux-foundation.org" , "linux-kernel@vger.kernel.org" , "devicetree@vger.kernel.org" , Andre Przywara , Joerg Roedel Subject: Re: [PATCH 2/2] arm/smmu: Make use of of_parse_phandle_with_var_args Message-ID: <20150626111047.GA9791@arm.com> References: <1435247548-32201-1-git-send-email-joro@8bytes.org> <1435247548-32201-2-git-send-email-joro@8bytes.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1435247548-32201-2-git-send-email-joro@8bytes.org> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Joerg, Thanks for looking at this! I'm fine with the general idea, but obviously the first patch needs an Ack from a devicetree person. One comment on the code below... On Thu, Jun 25, 2015 at 04:52:28PM +0100, Joerg Roedel wrote: > The function of_parse_phandle_with_args() can only handle 16 > args, but there are systems that require more (25 in my > case). So use the newly introduced function > of_parse_phandle_with_var_args() instead. [...] > + masterspec = of_alloc_phandle_args(MAX_MASTER_STREAMIDS); > + if (!masterspec) > + return -ENOMEM; > + > i = 0; > smmu->masters = RB_ROOT; > - while (!of_parse_phandle_with_args(dev->of_node, "mmu-masters", > - "#stream-id-cells", i, > - &masterspec)) { > - err = register_smmu_master(smmu, dev, &masterspec); > + while (!of_parse_phandle_with_var_args(dev->of_node, "mmu-masters", > + "#stream-id-cells", i, masterspec, > + MAX_MASTER_STREAMIDS)) { > + err = register_smmu_master(smmu, dev, masterspec); > if (err) { > dev_err(dev, "failed to add master %s\n", > - masterspec.np->name); > + masterspec->np->name); > goto out_put_masters; > } > > @@ -1811,6 +1815,9 @@ out_free_irqs: > free_irq(smmu->irqs[i], smmu); > > out_put_masters: > + > + of_free_phandle_args(masterspec); Shouldn't we also free the masterspec on success? Will