[U-Boot] [PATCH] arm: exynos: Use the generic lowlevel_init instead of the specific one

Thomas Abraham ta.omasab at gmail.com
Tue Nov 15 08:51:42 CET 2016


Hi Alison,

On Tue, Nov 15, 2016 at 1:03 PM, Alison Wang <alison.wang at nxp.com> wrote:
> 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?

It is not yet enabled. I will post the ARMV8_MULTIENTRY enable patch
for Exynos7420 later today. Alternatively, you could include the patch
listed in the previous email in your series.

Thanks,
Thomas.

>
> Thanks.
>
> Best Regards,
> Alison Wang
>
>> -----Original Message-----
>> From: Thomas Abraham [mailto:ta.omasab at gmail.com]
>> Sent: Tuesday, September 20, 2016 4:45 PM
>> To: Alexander Graf <agraf at suse.de>
>> Cc: Alison Wang <b18965 at freescale.com>; thomas.ab at samsung.com; Minkyu
>> Kang <mk7.kang at samsung.com>; york sun <york.sun at nxp.com>; U-Boot
>> Mailing List <u-boot at lists.denx.de>; Jason Jin <jason.jin at 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 <agraf at suse.de> wrote:
>> >
>> >
>> > On 20.09.16 08:25, Thomas Abraham wrote:
>> >> On Tue, Sep 20, 2016 at 11:35 AM, Alexander Graf <agraf at suse.de>
>> wrote:
>> >>>
>> >>>
>> >>> Am 20.09.2016 um 07:51 schrieb Thomas Abraham <ta.omasab at gmail.com>:
>> >>>
>> >>> Hi Alison,
>> >>>
>> >>>
>> >>> On Mon, Sep 19, 2016 at 7:38 PM, Alexander Graf <agraf at 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.wang at 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 <agraf at 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


More information about the U-Boot mailing list