diff mbox

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

Message ID CAJuA9aiDA6myZgWXvwbtnuvFxxbfN==9L2JBn1tYMHcBONNr5A@mail.gmail.com
State Not Applicable
Delegated to: Minkyu Kang
Headers show

Commit Message

Thomas Abraham Sept. 20, 2016, 8:45 a.m. UTC
On Tue, Sep 20, 2016 at 12:03 PM, Alexander Graf <agraf@suse.de> wrote:
>
>
> On 20.09.16 08:25, Thomas Abraham wrote:
>> On Tue, Sep 20, 2016 at 11:35 AM, Alexander Graf <agraf@suse.de> wrote:
>>>
>>>
>>> Am 20.09.2016 um 07:51 schrieb Thomas Abraham <ta.omasab@gmail.com>:
>>>
>>> Hi Alison,
>>>
>>>
>>> On Mon, Sep 19, 2016 at 7:38 PM, Alexander Graf <agraf@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@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@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.

 #define CONFIG_CORE_COUNT              0x8

>
> Alex

Comments

Alexander Graf Sept. 20, 2016, 9:01 a.m. UTC | #1
On 20.09.16 10:45, Thomas Abraham wrote:
> On Tue, Sep 20, 2016 at 12:03 PM, Alexander Graf <agraf@suse.de> wrote:
>>
>>
>> On 20.09.16 08:25, Thomas Abraham wrote:
>>> On Tue, Sep 20, 2016 at 11:35 AM, Alexander Graf <agraf@suse.de> wrote:
>>>>
>>>>
>>>> Am 20.09.2016 um 07:51 schrieb Thomas Abraham <ta.omasab@gmail.com>:
>>>>
>>>> Hi Alison,
>>>>
>>>>
>>>> On Mon, Sep 19, 2016 at 7:38 PM, Alexander Graf <agraf@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@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@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.

That certainly works for me. Is there a particular reason why you want
to do the EL1 switch? I would strongly prefer if we could just enter OSs
in EL2 always.


Alex
Thomas Abraham Sept. 20, 2016, 9:08 a.m. UTC | #2
On Tue, Sep 20, 2016 at 2:31 PM, Alexander Graf <agraf@suse.de> wrote:
>
>
> On 20.09.16 10:45, Thomas Abraham wrote:
>> On Tue, Sep 20, 2016 at 12:03 PM, Alexander Graf <agraf@suse.de> wrote:
>>>
>>>
>>> On 20.09.16 08:25, Thomas Abraham wrote:
>>>> On Tue, Sep 20, 2016 at 11:35 AM, Alexander Graf <agraf@suse.de> wrote:
>>>>>
>>>>>
>>>>> Am 20.09.2016 um 07:51 schrieb Thomas Abraham <ta.omasab@gmail.com>:
>>>>>
>>>>> Hi Alison,
>>>>>
>>>>>
>>>>> On Mon, Sep 19, 2016 at 7:38 PM, Alexander Graf <agraf@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@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@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.
>
> That certainly works for me. Is there a particular reason why you want
> to do the EL1 switch? I would strongly prefer if we could just enter OSs
> in EL2 always.

There is no particular reason for EL1 switch for Exynos7420. The
ARMV8_SWITCH_TO_EL1 config option can be removed, that sneaked in
accidentally into the diff.

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

On Tue, Nov 15, 2016 at 1:03 PM, Alison Wang <alison.wang@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@gmail.com]
>> Sent: Tuesday, September 20, 2016 4:45 PM
>> To: Alexander Graf <agraf@suse.de>
>> Cc: Alison Wang <b18965@freescale.com>; thomas.ab@samsung.com; Minkyu
>> Kang <mk7.kang@samsung.com>; york sun <york.sun@nxp.com>; U-Boot
>> Mailing List <u-boot@lists.denx.de>; Jason Jin <jason.jin@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@suse.de> wrote:
>> >
>> >
>> > On 20.09.16 08:25, Thomas Abraham wrote:
>> >> On Tue, Sep 20, 2016 at 11:35 AM, Alexander Graf <agraf@suse.de>
>> wrote:
>> >>>
>> >>>
>> >>> Am 20.09.2016 um 07:51 schrieb Thomas Abraham <ta.omasab@gmail.com>:
>> >>>
>> >>> Hi Alison,
>> >>>
>> >>>
>> >>> On Mon, Sep 19, 2016 at 7:38 PM, Alexander Graf <agraf@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@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@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
Alison Wang Nov. 15, 2016, 8:04 a.m. UTC | #5
Hi, Thomas,

> On Tue, Nov 15, 2016 at 1:03 PM, Alison Wang <alison.wang@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.
> 
[Alison Wang] Thanks for your reply. I think it's better to send the patch
by you (the maintainer). Please send it later today. :)

Best Regards,
Alison Wang

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

I didn't see your patch. Maybe it isn't CC'ing me. Could you send me and york the link?

Minkyu Kang,

Could you add review-by and assign this patch http://patchwork.ozlabs.org/patch/667948/ to York? So he can merge this patch and Thomas's patch together.

Thanks.


Best Regards,
Alison Wang


> > On Tue, Nov 15, 2016 at 1:03 PM, Alison Wang <alison.wang@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.
> >
> [Alison Wang] Thanks for your reply. I think it's better to send the
> patch by you (the maintainer). Please send it later today. :)
>
> > >
> > > Thanks.
> > >
> > > Best Regards,
> > > Alison Wang
> > >
> > >> -----Original Message-----
> > >> From: Thomas Abraham [mailto:ta.omasab@gmail.com]
> > >> Sent: Tuesday, September 20, 2016 4:45 PM
> > >> To: Alexander Graf <agraf@suse.de>
> > >> Cc: Alison Wang <b18965@freescale.com>; thomas.ab@samsung.com;
> > Minkyu
> > >> Kang <mk7.kang@samsung.com>; york sun <york.sun@nxp.com>; U-Boot
> > >> Mailing List <u-boot@lists.denx.de>; Jason Jin <jason.jin@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@suse.de>
> > wrote:
> > >> >
> > >> >
> > >> > On 20.09.16 08:25, Thomas Abraham wrote:
> > >> >> On Tue, Sep 20, 2016 at 11:35 AM, Alexander Graf <agraf@suse.de>
> > >> wrote:
> > >> >>>
> > >> >>>
> > >> >>> Am 20.09.2016 um 07:51 schrieb Thomas Abraham
> > <ta.omasab@gmail.com>:
> > >> >>>
> > >> >>> Hi Alison,
> > >> >>>
> > >> >>>
> > >> >>> On Mon, Sep 19, 2016 at 7:38 PM, Alexander Graf <agraf@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@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@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
Minkyu Kang Nov. 21, 2016, 3:09 p.m. UTC | #7
Hi,

2016년 11월 16일 (수) 19:44, Alison Wang <alison.wang@nxp.com>님이 작성:

> Hi, Thomas,
>
> I didn't see your patch. Maybe it isn't CC'ing me. Could you send me and
> york the link?
>
> Minkyu Kang,
>
> Could you add review-by and assign this patch http://patchwork.ozlabs.org/
> patch/667948/ to York? So he can merge this patch and Thomas's patch
> together.
>
>
It's OK.
York means yorksun?

Reviewed-by: Minkyu Kang <mk7.kang@samsung.com>

Thanks,
Minkyu Kang.


> Thanks.
>
>
> Best Regards,
> Alison Wang
>
>
> > > On Tue, Nov 15, 2016 at 1:03 PM, Alison Wang <alison.wang@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.
> > >
> > [Alison Wang] Thanks for your reply. I think it's better to send the
> > patch by you (the maintainer). Please send it later today. :)
> >
> > > >
> > > > Thanks.
> > > >
> > > > Best Regards,
> > > > Alison Wang
> > > >
> > > >> -----Original Message-----
> > > >> From: Thomas Abraham [mailto:ta.omasab@gmail.com]
> > > >> Sent: Tuesday, September 20, 2016 4:45 PM
> > > >> To: Alexander Graf <agraf@suse.de>
> > > >> Cc: Alison Wang <b18965@freescale.com>; thomas.ab@samsung.com;
> > > Minkyu
> > > >> Kang <mk7.kang@samsung.com>; york sun <york.sun@nxp.com>; U-Boot
> > > >> Mailing List <u-boot@lists.denx.de>; Jason Jin <jason.jin@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@suse.de>
> > > wrote:
> > > >> >
> > > >> >
> > > >> > On 20.09.16 08:25, Thomas Abraham wrote:
> > > >> >> On Tue, Sep 20, 2016 at 11:35 AM, Alexander Graf <agraf@suse.de>
> > > >> wrote:
> > > >> >>>
> > > >> >>>
> > > >> >>> Am 20.09.2016 um 07:51 schrieb Thomas Abraham
> > > <ta.omasab@gmail.com>:
> > > >> >>>
> > > >> >>> Hi Alison,
> > > >> >>>
> > > >> >>>
> > > >> >>> On Mon, Sep 19, 2016 at 7:38 PM, Alexander Graf <agraf@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@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@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
>
diff mbox

Patch

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 */