Hi, Thomas, Alex and York, Before there are some discussions about this patch, could we make a solution now? Or else, the patches about [PATCH v8 0/3] armv8: Support loading 32-bit OS in AArch32 execution state can't be merged, as the compiling will fail without this patch.
Thomas, is ARMV8_MULTIENTRY enabled on Exynos7420 now? If not, is there a good way to enable ARMV8_MULTIENTRY on Exynos7420 now? Thanks. Best Regards, Alison Wang > -----Original Message----- > From: Thomas Abraham [mailto:ta.oma...@gmail.com] > Sent: Tuesday, September 20, 2016 4:45 PM > To: Alexander Graf <ag...@suse.de> > Cc: Alison Wang <b18...@freescale.com>; thomas...@samsung.com; Minkyu > Kang <mk7.k...@samsung.com>; york sun <york....@nxp.com>; U-Boot > Mailing List <u-boot@lists.denx.de>; Jason Jin <jason....@nxp.com> > Subject: Re: [U-Boot] [PATCH] arm: exynos: Use the generic > lowlevel_init instead of the specific one > > On Tue, Sep 20, 2016 at 12:03 PM, Alexander Graf <ag...@suse.de> wrote: > > > > > > On 20.09.16 08:25, Thomas Abraham wrote: > >> On Tue, Sep 20, 2016 at 11:35 AM, Alexander Graf <ag...@suse.de> > wrote: > >>> > >>> > >>> Am 20.09.2016 um 07:51 schrieb Thomas Abraham <ta.oma...@gmail.com>: > >>> > >>> Hi Alison, > >>> > >>> > >>> On Mon, Sep 19, 2016 at 7:38 PM, Alexander Graf <ag...@suse.de> > wrote: > >>> > >>> > >>> > >>> On 09.09.16 10:48, Alison Wang wrote: > >>> > >>> This patch is to use the the generic lowlevel_init instead of the > >>> > >>> specific one. > >>> > >>> > >>> Signed-off-by: Alison Wang <alison.w...@nxp.com> > >>> > >>> > >>> If I had to guess, I'd think they only had their own version > because the > >>> > >>> old one required a GIC. > >>> > >>> > >>> I apologize for the delay. > >>> > >>> The reason for using a custom version was to avoid enabling > >>> ARMV8_MULTIENTRY config option since the Exynos7 code was ready for > >>> it. > >>> > >>> > >>> Either way, since Samsung doesn't reply, I'm fine potentially > breaking > >>> > >>> their boards if that means that we can make progress for actively > >>> > >>> maintained ones: > >>> > >>> > >>> Reviewed-by: Alexander Graf <ag...@suse.de> > >>> > >>> > >>> This patch without the ARMV8_MULTIENTRY and ARMV8_SWITCH_TO_EL1 > config > >>> options does not switch the boot CPU from EL3 to EL1. So it would > be > >>> preferable to not merge this patch until ARMV8_MULTIENTRY is > enabled > >>> for Exynos7. > >>> > >>> > >>> Why do you want to switch it to EL1 in the first place? Linux is > very happy > >>> to live in EL2 - which is what we call it in by default. > >> > >> Okay, there is no particular requirement to be in EL1 for Exynos7. > EL2 > >> would also be fine. But Exynos7 support in u-boot is not yet ready > for > >> enabling ARMV8_MULTIENTRY config option. Is there anything be > blocked > >> due to Exynos7 using a custom lowlevel_init function? > > > > Yes, we're changing the semantics of armv8_switch_to_el2 and > > armv8_switch_to_el1: > > > > http://lists.denx.de/pipermail/u-boot/2016-September/266217.html > > > > which is a prerequisite for AArch32 kernel boot on AArch64 systems. > > Okay. > > > > > How quickly do you think you could make Exynos7 work with MULTIENTRY? > > > > Exynos7420 uses CPU 0 of Cluster 1 as boot CPU (master CPU). The macro > 'branch_if_master' requires all affinity values to be zero for a CPU > to be identified as a master CPU. And so the boot CPU is incorrectly > detected as a slave CPU. I have tested with the following temporary > workaround to enable ARMV8_MULTIENTRY on Exynos7420. If it looks fine, > this can be merged along with Alison's patch. > > Thomas. > > diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach- > exynos/Kconfig > index ce2a16f..45c5eeb 100644 > --- a/arch/arm/mach-exynos/Kconfig > +++ b/arch/arm/mach-exynos/Kconfig > @@ -126,6 +126,8 @@ choice > config TARGET_ESPRESSO7420 > bool "ESPRESSO7420 board" > select ARM64 > + select ARMV8_MULTIENTRY > + select ARMV8_SWITCH_TO_EL1 > select SUPPORT_SPL > select OF_CONTROL > select SPL_DISABLE_OF_CONTROL > diff --git a/arch/arm/mach-exynos/soc.c b/arch/arm/mach-exynos/soc.c > index f9c7468..6c3ebb0 100644 > --- a/arch/arm/mach-exynos/soc.c > +++ b/arch/arm/mach-exynos/soc.c > @@ -9,6 +9,16 @@ > #include <asm/io.h> > #include <asm/system.h> > > +#ifdef CONFIG_TARGET_ESPRESSO7420 > +/* > + * Exynos7420 uses CPU0 of Cluster-1 as boot CPU. Due to this > branch_if_master > + * fails to identify as the master CPU. As temporary workaround, setup > the > + * slave CPU boot address as "_main". > + */ > +extern void _main(void); > +void *secondary_boot_addr = (void *)_main; > +#endif /* CONFIG_TARGET_ESPRESSO7420 */ > + > void reset_cpu(ulong addr) > { > #ifdef CONFIG_CPU_V7 > diff --git a/include/configs/exynos7420-common.h > b/include/configs/exynos7420-common.h > index 9e03962..6f58aef 100644 > --- a/include/configs/exynos7420-common.h > +++ b/include/configs/exynos7420-common.h > @@ -48,6 +48,7 @@ > #define CONFIG_IRAM_BASE 0x02100000 > #define CONFIG_IRAM_SIZE 0x58000 > #define CONFIG_IRAM_END (CONFIG_IRAM_BASE + > CONFIG_IRAM_SIZE) > +#define CPU_RELEASE_ADDR secondary_boot_addr > > /* Number of CPUs available */ > #define CONFIG_CORE_COUNT 0x8 > > > > > Alex _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot