Message ID | 1c2cc13d812e04f231ddd4313e3ba6a54fb4632c.1461228504.git.viresh.kumar@linaro.org |
---|---|
State | New |
Headers | show |
On 23-04-16, 00:42, Arnd Bergmann wrote: > On Thursday 21 April 2016 14:29:02 Viresh Kumar wrote: > > diff --git a/arch/arm/mach-mvebu/pmsu.c b/arch/arm/mach-mvebu/pmsu.c > > index 79d0a5d9da8e..f24f46776fbb 100644 > > --- a/arch/arm/mach-mvebu/pmsu.c > > +++ b/arch/arm/mach-mvebu/pmsu.c > > @@ -685,8 +685,6 @@ static int __init armada_xp_pmsu_cpufreq_init(void) > > dev_err(cpu_dev, "%s: failed to mark OPPs as shared: %d\n", > > __func__, ret); > > } > > - > > - platform_device_register_simple("cpufreq-dt", -1, NULL, 0); > > return 0; > > } > > > > diff --git a/drivers/cpufreq/cpufreq-dt-platdev.c b/drivers/cpufreq/cpufreq-dt-platdev.c > > index 69b2a222c84e..5704a92c52dc 100644 > > --- a/drivers/cpufreq/cpufreq-dt-platdev.c > > +++ b/drivers/cpufreq/cpufreq-dt-platdev.c > > @@ -33,6 +33,8 @@ static const struct of_device_id machines[] = { > > > > { .compatible = "marvell,berlin", }, > > > > + { .compatible = "marvell,armadaxp", }, > > + > > { .compatible = "samsung,exynos3250", }, > > { .compatible = "samsung,exynos4210", }, > > { .compatible = "samsung,exynos4212", }, > > I think to make it clear that the ordering is significant here, I would leave this > platform_device_register_simple() in armada_xp_pmsu_cpufreq_init(). > > However, it might be helpful to move that function into a new file in > drivers/cpufreq/ if that works. We just can't get wrong with the ordering here, as this is done from device_initcall() and so that point is out of question. The other thing that can happen is that armada_xp_pmsu_cpufreq_init() call can fail. In that case, most of the times cpufreq-dt ->init() will fail as well, so even that is fine for me. And, so I think we can keep this patch as is. Do you agree ? -- viresh
On 25-04-16, 14:53, Arnd Bergmann wrote: > On Monday 25 April 2016 08:30:41 Viresh Kumar wrote: > I realize that the ordering is fixed through the way that the kernel > is linked, my worry is more about someone changing the code in some > way because it's not obvious from reading the code that the > dependency exists. If either the armada_xp_pmsu_cpufreq_init() > initcall gets changed so it does not always get called, or the > cpufreq_dt_platdev_init() initcall gets changed so it comes a little > earlier, things will break. cpufreq-dt will just error out in that case, because it wouldn't find any OPPs registered to the OPP-core. It *shouldn't* crash and if it does, then we have a problem to fix. > > The other thing that can happen is that armada_xp_pmsu_cpufreq_init() > > call can fail. In that case, most of the times cpufreq-dt ->init() > > will fail as well, so even that is fine for me. > > > > And, so I think we can keep this patch as is. > > What are the downsides of moving armada_xp_pmsu_cpufreq_init() > into drivers/cpufreq? More special code :) -- viresh
On 25-04-16, 17:26, Arnd Bergmann wrote: > On Monday 25 April 2016 18:26:05 Viresh Kumar wrote: > > On 25-04-16, 14:53, Arnd Bergmann wrote: > > > On Monday 25 April 2016 08:30:41 Viresh Kumar wrote: > > > > > I realize that the ordering is fixed through the way that the kernel > > > is linked, my worry is more about someone changing the code in some > > > way because it's not obvious from reading the code that the > > > dependency exists. If either the armada_xp_pmsu_cpufreq_init() > > > initcall gets changed so it does not always get called, or the > > > cpufreq_dt_platdev_init() initcall gets changed so it comes a little > > > earlier, things will break. > > > > cpufreq-dt will just error out in that case, because it wouldn't find > > any OPPs registered to the OPP-core. It *shouldn't* crash and if it > > does, then we have a problem to fix. > > Ok. > > > > > The other thing that can happen is that armada_xp_pmsu_cpufreq_init() > > > > call can fail. In that case, most of the times cpufreq-dt ->init() > > > > will fail as well, so even that is fine for me. > > > > > > > > And, so I think we can keep this patch as is. > > > > > > What are the downsides of moving armada_xp_pmsu_cpufreq_init() > > > into drivers/cpufreq? > > > > More special code :) > > Of course the special code still exists, it seems more like neither of > us wants to have it in the portion of the kernel that he maintains ;-) Hehe.. But after $subject patch, we don't have any special code for creating the device, isn't it? > Maybe the mvebu maintainers have a preference where they'd like the > code to be, they are the ones that are most impacted if anything > goes wrong. What code are you talking about? Initializing the OPPs or adding the cpufreq-dt device? The first one (or whatever is left now in that function) can stay anywhere, even as a cpufreq driver. I was talking about the fact that we don't have a sequence problem to solve here. -- viresh
diff --git a/arch/arm/mach-mvebu/pmsu.c b/arch/arm/mach-mvebu/pmsu.c index 79d0a5d9da8e..f24f46776fbb 100644 --- a/arch/arm/mach-mvebu/pmsu.c +++ b/arch/arm/mach-mvebu/pmsu.c @@ -685,8 +685,6 @@ static int __init armada_xp_pmsu_cpufreq_init(void) dev_err(cpu_dev, "%s: failed to mark OPPs as shared: %d\n", __func__, ret); } - - platform_device_register_simple("cpufreq-dt", -1, NULL, 0); return 0; } diff --git a/drivers/cpufreq/cpufreq-dt-platdev.c b/drivers/cpufreq/cpufreq-dt-platdev.c index 69b2a222c84e..5704a92c52dc 100644 --- a/drivers/cpufreq/cpufreq-dt-platdev.c +++ b/drivers/cpufreq/cpufreq-dt-platdev.c @@ -33,6 +33,8 @@ static const struct of_device_id machines[] = { { .compatible = "marvell,berlin", }, + { .compatible = "marvell,armadaxp", }, + { .compatible = "samsung,exynos3250", }, { .compatible = "samsung,exynos4210", }, { .compatible = "samsung,exynos4212", },
The cpufreq-dt-platdev driver supports creation of cpufreq-dt platform device now, reuse that and remove similar code from platform code. Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Jason Cooper <jason@lakedaemon.net> Cc: Andrew Lunn <andrew@lunn.ch> Cc: Gregory Clement <gregory.clement@free-electrons.com> Cc: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> --- arch/arm/mach-mvebu/pmsu.c | 2 -- drivers/cpufreq/cpufreq-dt-platdev.c | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) -- 2.7.1.410.g6faf27b