[PATCH v3 4/6] arm/imx6q: add smp and cpu hotplug support
Shawn Guo
shawn.guo at freescale.com
Tue Sep 27 09:44:02 EDT 2011
On Mon, Sep 26, 2011 at 01:06:34PM +0200, Sascha Hauer wrote:
> On Mon, Sep 26, 2011 at 03:20:49PM +0800, Shawn Guo wrote:
> > It adds smp and cpu hotplug support for imx6q.
> >
> > Signed-off-by: Shawn Guo <shawn.guo at linaro.org>
> > ---
> > arch/arm/mach-imx/Kconfig | 1 +
> > arch/arm/mach-imx/Makefile | 4 ++
> > arch/arm/mach-imx/head-v7.S | 71 ++++++++++++++++++++++++++
> > arch/arm/mach-imx/hotplug.c | 44 ++++++++++++++++
> > arch/arm/mach-imx/localtimer.c | 35 +++++++++++++
> > arch/arm/mach-imx/platsmp.c | 85 +++++++++++++++++++++++++++++++
> > arch/arm/plat-mxc/include/mach/common.h | 5 ++
> > 7 files changed, 245 insertions(+), 0 deletions(-)
> > create mode 100644 arch/arm/mach-imx/head-v7.S
> > create mode 100644 arch/arm/mach-imx/hotplug.c
> > create mode 100644 arch/arm/mach-imx/localtimer.c
> > create mode 100644 arch/arm/mach-imx/platsmp.c
> >
> > diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
> > index af73b3e..6ec758d 100644
> > --- a/arch/arm/mach-imx/Kconfig
> > +++ b/arch/arm/mach-imx/Kconfig
> > @@ -623,6 +623,7 @@ config SOC_IMX6Q
> > bool "i.MX6 Quad support"
> > select ARM_GIC
> > select CPU_V7
> > + select HAVE_ARM_SCU
> > select HAVE_IMX_GPC
> > select HAVE_IMX_MMDC
> > select HAVE_IMX_SRC
> > diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile
> > index 8c21fda..d46b2e7 100644
> > --- a/arch/arm/mach-imx/Makefile
> > +++ b/arch/arm/mach-imx/Makefile
> > @@ -66,4 +66,8 @@ obj-$(CONFIG_DEBUG_LL) += lluart.o
> > obj-$(CONFIG_HAVE_IMX_GPC) += gpc.o
> > obj-$(CONFIG_HAVE_IMX_MMDC) += mmdc.o
> > obj-$(CONFIG_HAVE_IMX_SRC) += src.o
> > +obj-$(CONFIG_CPU_V7) += head-v7.o
>
> Can we have a
>
> AFLAGS_head-v7.o :=-Wa,-march=armv7-a
>
> here?
>
> Then you only have to adjust some Kconfig variables and can compile
> i.MX3 and i.MX6 together. I just gave it a test and it works on i.MX3, I
> don't have a i.MX6 platform to test on though.
>
I tested it on imx6q, and it does not work. I tracked it to the point
at mxc_init_l2x0() which is an early_initcall. Because we do not have
mxc_cpu_type and cpu_is_mx6q() defined, the execution goes through the
(!cpu_is_mx31() && !cpu_is_mx35()) check and ends up with Oops on
imx6q.
I do not want to add mxc_cpu_type and cpu_is_mx6q() stuff, so I intend
to remove early_initcall there, and let imx31/35_soc_init() explicitly
calls mxc_init_l2x0().
Let me know if you get a different position.
--
Regards,
Shawn
More information about the linux-arm-kernel
mailing list