From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lorenzo Pieralisi Subject: Re: [PATCH v7 8/8] drivers: cpuidle: initialize Exynos driver through DT Date: Fri, 15 Aug 2014 22:40:34 +0100 Message-ID: <20140815214034.GA10552@e102568-lin.cambridge.arm.com> References: <1407945127-27554-1-git-send-email-lorenzo.pieralisi@arm.com> <1407945127-27554-9-git-send-email-lorenzo.pieralisi@arm.com> <20140815211233.GA46224@ilina-mac.local> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20140815211233.GA46224@ilina-mac.local> Content-Disposition: inline List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Lina Iyer Cc: Mark Rutland , Catalin Marinas , Tomasz Figa , Chander Kashyap , Kukjin Kim , Vincent Guittot , Nicolas Pitre , Daniel Lezcano , "linux-arm-kernel@lists.infradead.org" , "grant.likely@linaro.org" , Charles Garcia-Tobin , "devicetree@vger.kernel.org" , Kevin Hilman , "linux-pm@vger.kernel.org" , Sebastian Capella , Rob Herring , Antti Miettinen , Paul Walmsley , Geoff Levand , Peter De Schrijver , Stephen List-Id: devicetree@vger.kernel.org On Fri, Aug 15, 2014 at 10:12:33PM +0100, Lina Iyer wrote: [...] > > static int exynos_cpuidle_probe(struct platform_device *pdev) > > { > >- int ret; > >+ int ret, i; > >+ struct cpuidle_driver *drv = &exynos_idle_driver; > > > > exynos_enter_aftr = (void *)(pdev->dev.platform_data); > > > >- ret = cpuidle_register(&exynos_idle_driver, NULL); > >+ drv->cpumask = kzalloc(cpumask_size(), GFP_KERNEL); > >+ if (!drv->cpumask) > >+ return -ENOMEM; > drv->cpumask would not have any cpu set. I dont see it being modified > elsewhere. Gah, I should have missed that while refactoring, I can just compile test this patch so it went unnoticed. Fixed (by copying the possible mask to drv->cpumask). Thank you ! Lorenzo > >+ > >+ /* Start at index 1, index 0 standard WFI */ > >+ ret = dt_init_idle_driver(drv, 1); > >+ if (ret < 0) { > >+ dev_err(&pdev->dev, "failed to initialize idle states\n"); > >+ goto free_mem; > >+ } > >+ > >+ for (i = 1; i < drv->state_count; i++) > >+ drv->states[i].enter = exynos_enter_lowpower; > >+ > >+ ret = cpuidle_register(drv, NULL); > > if (ret) { > > dev_err(&pdev->dev, "failed to register cpuidle driver\n"); > >- return ret; > >+ goto free_mem; > > } > > > > return 0; > >+free_mem: > >+ kfree(drv->cpumask); > >+ return ret; > > } > > > > static struct platform_driver exynos_cpuidle_driver = { > >-- > >1.9.1 > > > > > From mboxrd@z Thu Jan 1 00:00:00 1970 From: lorenzo.pieralisi@arm.com (Lorenzo Pieralisi) Date: Fri, 15 Aug 2014 22:40:34 +0100 Subject: [PATCH v7 8/8] drivers: cpuidle: initialize Exynos driver through DT In-Reply-To: <20140815211233.GA46224@ilina-mac.local> References: <1407945127-27554-1-git-send-email-lorenzo.pieralisi@arm.com> <1407945127-27554-9-git-send-email-lorenzo.pieralisi@arm.com> <20140815211233.GA46224@ilina-mac.local> Message-ID: <20140815214034.GA10552@e102568-lin.cambridge.arm.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Fri, Aug 15, 2014 at 10:12:33PM +0100, Lina Iyer wrote: [...] > > static int exynos_cpuidle_probe(struct platform_device *pdev) > > { > >- int ret; > >+ int ret, i; > >+ struct cpuidle_driver *drv = &exynos_idle_driver; > > > > exynos_enter_aftr = (void *)(pdev->dev.platform_data); > > > >- ret = cpuidle_register(&exynos_idle_driver, NULL); > >+ drv->cpumask = kzalloc(cpumask_size(), GFP_KERNEL); > >+ if (!drv->cpumask) > >+ return -ENOMEM; > drv->cpumask would not have any cpu set. I dont see it being modified > elsewhere. Gah, I should have missed that while refactoring, I can just compile test this patch so it went unnoticed. Fixed (by copying the possible mask to drv->cpumask). Thank you ! Lorenzo > >+ > >+ /* Start at index 1, index 0 standard WFI */ > >+ ret = dt_init_idle_driver(drv, 1); > >+ if (ret < 0) { > >+ dev_err(&pdev->dev, "failed to initialize idle states\n"); > >+ goto free_mem; > >+ } > >+ > >+ for (i = 1; i < drv->state_count; i++) > >+ drv->states[i].enter = exynos_enter_lowpower; > >+ > >+ ret = cpuidle_register(drv, NULL); > > if (ret) { > > dev_err(&pdev->dev, "failed to register cpuidle driver\n"); > >- return ret; > >+ goto free_mem; > > } > > > > return 0; > >+free_mem: > >+ kfree(drv->cpumask); > >+ return ret; > > } > > > > static struct platform_driver exynos_cpuidle_driver = { > >-- > >1.9.1 > > > > >