[PATCH] ARM: EXYNOS: Add support for secondary CPU bring-up on Exynos4412
Tomasz Figa
tomasz.figa at gmail.com
Tue Aug 28 13:43:30 EDT 2012
Hi,
Thanks for reviewing the patch.
On Tuesday 28 of August 2012 09:21:40 Stephen Boyd wrote:
> On 8/28/2012 4:13 AM, Tomasz Figa wrote:
> > diff --git a/arch/arm/mach-exynos/platsmp.c
> > b/arch/arm/mach-exynos/platsmp.c index 36c3984..1114ced 100644
> > --- a/arch/arm/mach-exynos/platsmp.c
> > +++ b/arch/arm/mach-exynos/platsmp.c
> > @@ -34,8 +34,19 @@
> >
> > extern void exynos4_secondary_startup(void);
> >
> > -#define CPU1_BOOT_REG (samsung_rev() == EXYNOS4210_REV_1_1 ? \
> > - S5P_INFORM5 : S5P_VA_SYSRAM)
> > +static inline volatile void *cpu_boot_reg_base(void)
>
> __iomem?
Sorry, bad habit. I will fix it.
> > +{
> > + if (soc_is_exynos4210() && samsung_rev() == EXYNOS4210_REV_1_1)
> > + return S5P_INFORM5;
> > + return S5P_VA_SYSRAM;
> > +}
> > +
> > +static inline volatile void *cpu_boot_reg(int cpu)
>
> __iomem? And why volatile?
Ditto.
> > +{
> > + if (soc_is_exynos4412())
> > + return cpu_boot_reg_base() + 4*cpu;
> > + return cpu_boot_reg_base();
> > +}
> >
> > /*
> >
> > * control for which core is the next to come out of the secondary
> >
> > @@ -195,6 +208,8 @@ void __init platform_smp_prepare_cpus(unsigned int
> > max_cpus)>
> > * until it receives a soft interrupt, and then the
> > * secondary CPU branches to this address.
> > */
> >
> > - __raw_writel(virt_to_phys(exynos4_secondary_startup),
> > - CPU1_BOOT_REG);
> > + for (i = 1; i < max_cpus; ++i) {
> > + __raw_writel(virt_to_phys(exynos4_secondary_startup),
> > + cpu_boot_reg(i));
>
> Do you need to use cpu_logical_map()?
Correct me if I am wrong, but physical to logical CPU mapping will not be
1:1 only if booted on physical CPU other than 0. I have not seen yet an
Exynos-based board which does it.
However it might be wiser to use cpu_logical_map() just to be safe indeed.
I will add it in next version of the patch.
--
Best regards,
Tomasz Figa
More information about the linux-arm-kernel
mailing list