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

This patch is to use the the generic lowlevel_init instead of the specific one.
Signed-off-by: Alison Wang alison.wang@nxp.com --- arch/arm/mach-exynos/soc.c | 8 -------- 1 file changed, 8 deletions(-)
diff --git a/arch/arm/mach-exynos/soc.c b/arch/arm/mach-exynos/soc.c index f9c7468..737a8dd 100644 --- a/arch/arm/mach-exynos/soc.c +++ b/arch/arm/mach-exynos/soc.c @@ -23,11 +23,3 @@ void enable_caches(void) dcache_enable(); } #endif - -#ifdef CONFIG_ARM64 -void lowlevel_init(void) -{ - armv8_switch_to_el2(); - armv8_switch_to_el1(); -} -#endif

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.
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
Alex

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.
Thomas.
Alex _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

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.
Alex

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?
Thomas.
Alex

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.
How quickly do you think you could make Exynos7 work with MULTIENTRY?
Alex

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

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
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
> > 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
>> >> 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
participants (5)
-
Alexander Graf
-
Alison Wang
-
Alison Wang
-
Minkyu Kang
-
Thomas Abraham