Message ID | CAJuA9aiDA6myZgWXvwbtnuvFxxbfN==9L2JBn1tYMHcBONNr5A@mail.gmail.com |
---|---|
State | Not Applicable |
Delegated to: | Minkyu Kang |
Headers | show |
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
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.
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
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
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
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
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 --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 */