On Wed, 1 Sep 2010, Amit Kucheria wrote:

> On 10 Sep 01, Loïc Minier wrote:
> > On Wed, Sep 01, 2010, Amit Kucheria wrote:
> > > That patch likely won't go upstream.
> > 
> >  Why not?
> 
> Because it adds a sub-arch, revision-specific override into generic
> architecture code (vfpmodule.c)
> 
> To do this elegantly with a hope to get it to mainline, we'd need a way to
> disable the hwcap through some board-specific fixup code that can check the
> revision of the board at runtime.

Right.  I eventually dismissed that idea on the basis that the silicon 
revision in question was pre production stuff.  But if there are actual 
devices out there using it then we need something for it that is 
mainline acceptable.

> Unfortunately, it seems after talking to Nicolas that mdesc->fixup() is
> called too early.
> 
> Nicolas suggested linking the i.MX5 code _after_ the VFP module :)

Something like this patch:

----- >8
From: Nicolas Pitre <nicolas.pi...@linaro.org>
Date: Wed, 1 Sep 2010 09:37:05 -0400
Subject: [PATCH] ARM: link board specific files after core files

This allows for board specific issues to override decisions made in generic
code that might not be suitable due to some errata or the like.

Signed-off-by: Nicolas Pitre <nicolas.pi...@linaro.org>

diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index df4ab3c..3e8e3d7 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -243,13 +243,14 @@ ifeq ($(FASTFPE),$(wildcard $(FASTFPE)))
 FASTFPE_OBJ    :=$(FASTFPE)/
 endif
 
-# If we have a machine-specific directory, then include it in the build.
-core-y                         += arch/arm/kernel/ arch/arm/mm/ 
arch/arm/common/
-core-y                         += $(machdirs) $(platdirs)
 core-$(CONFIG_FPE_NWFPE)       += arch/arm/nwfpe/
 core-$(CONFIG_FPE_FASTFPE)     += $(FASTFPE_OBJ)
 core-$(CONFIG_VFP)             += arch/arm/vfp/
 
+# If we have a machine-specific directory, then include it in the build.
+core-y                         += arch/arm/kernel/ arch/arm/mm/ 
arch/arm/common/
+core-y                         += $(machdirs) $(platdirs)
+
 drivers-$(CONFIG_OPROFILE)      += arch/arm/oprofile/
 
 libs-y                         := arch/arm/lib/ $(libs-y)
8< -----

Then, just add your fixup in a separate patch.  Beware: the above patch 
is untested.

> Another solution is that we could perhaps add code in the board init function
> to check the cpu revision and if NEON was enabled, then stop booting.

That is a bit blunt for the user though, and that forces a different 
kernel config depending on the silicon revision which is also bad.


Nicolas
_______________________________________________
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev

Reply via email to