Re: [PATCH 3/3] ARM: Select CPU_32v6K for CPU_V7 only if ARCH_OMAP2 isnot selected

Catalin Marinas
2010-01-28T18:05:47Z

On Thu, 2010-01-28 at 17:47 +0000, Tony Lindgren wrote:
> * Catalin Marinas <catalin.marinas@arm.com> [100128 02:58]:
> > On Tue, 2010-01-26 at 19:37 +0000, Tony Lindgren wrote:
> > > Otherwise the kernel built with both CPU_V6 and CPU_V7 will not
> > > boot on omap2.
> > >
> > > Signed-off-by: Tony Lindgren <tony@atomide.com>
> > > ---
> > > arch/arm/mm/Kconfig | 4 ++--
> > > 1 files changed, 2 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig
> > > index baf6384..4c2e90d 100644
> > > --- a/arch/arm/mm/Kconfig
> > > +++ b/arch/arm/mm/Kconfig
> > > @@ -399,7 +399,7 @@ config CPU_V6
> > > config CPU_32v6K
> > > bool "Support ARM V6K processor extensions" if !SMP
> > > depends on CPU_V6
> > > - default y if SMP && !ARCH_MX3
> > > + default y if SMP && !(ARCH_MX3 || ARCH_OMAP2)
> > > help
> > > Say Y here if your ARMv6 processor supports the 'K' extension.
> > > This enables the kernel to use some instructions not present
> > > @@ -410,7 +410,7 @@ config CPU_32v6K
> > > # ARMv7
> > > config CPU_V7
> > > bool "Support ARM V7 processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX
> > > - select CPU_32v6K
> > > + select CPU_32v6K if !ARCH_OMAP2
> >
> > I suspect that would be an issue for all ARMv6 platforms without the MP
> > extensions (v6K). Could we do something like:
> >
> > select CPU_32v6K if SMP || !CPU_V6
>
> Hmm, but then we can't compile in SMP for single core systems and
> keep it bootable on single core v6?

Not with the current kernel since it hardcodes the shareability bit in
the page tables and the LDREX/STREX operations don't work as expected on
uniprocessor hardware.

I agree that it would be nice to be able to have an SMP kernel booting
on both UP and MP but there are some #ifdef CONFIG_SMP in the kernel
which would need to be sorted out.

--
Catalin