[U-Boot] [PATCH] image: fit: Allow booting Aarch64 from arm

Snapdragon bootloader needs to jump from 32bit to 64bit Allow booting in these cases when CONFIG_AARCH32_SUPPORT_ARM64 is defined.
Signed-off-by: Ramon Fried ramon.fried@gmail.com --- common/image-fit.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/common/image-fit.c b/common/image-fit.c index 5b93dceae1..62dbfbdd3d 100644 --- a/common/image-fit.c +++ b/common/image-fit.c @@ -1253,17 +1253,24 @@ int fit_image_check_arch(const void *fit, int noffset, uint8_t arch) { uint8_t image_arch; int aarch32_support = 0; + int aarch64_support = 0;
#ifdef CONFIG_ARM64_SUPPORT_AARCH32 aarch32_support = 1; #endif
+#ifdef CONFIG_AARCH32_SUPPORT_ARM64 + aarch64_support = 1; +#endif + if (fit_image_get_arch(fit, noffset, &image_arch)) return 0; return (arch == image_arch) || (arch == IH_ARCH_I386 && image_arch == IH_ARCH_X86_64) || (arch == IH_ARCH_ARM64 && image_arch == IH_ARCH_ARM && - aarch32_support); + aarch32_support) || + (arch == IH_ARCH_ARM && image_arch == IH_ARCH_ARM64 && + aarch64_support); }
/**

On 14.5.2018 23:33, Ramon Fried wrote:
Snapdragon bootloader needs to jump from 32bit to 64bit Allow booting in these cases when CONFIG_AARCH32_SUPPORT_ARM64 is defined.
Signed-off-by: Ramon Fried ramon.fried@gmail.com
common/image-fit.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/common/image-fit.c b/common/image-fit.c index 5b93dceae1..62dbfbdd3d 100644 --- a/common/image-fit.c +++ b/common/image-fit.c @@ -1253,17 +1253,24 @@ int fit_image_check_arch(const void *fit, int noffset, uint8_t arch) { uint8_t image_arch; int aarch32_support = 0;
int aarch64_support = 0;
#ifdef CONFIG_ARM64_SUPPORT_AARCH32 aarch32_support = 1; #endif
+#ifdef CONFIG_AARCH32_SUPPORT_ARM64
aarch64_support = 1;
+#endif
if (fit_image_get_arch(fit, noffset, &image_arch)) return 0; return (arch == image_arch) || (arch == IH_ARCH_I386 && image_arch == IH_ARCH_X86_64) || (arch == IH_ARCH_ARM64 && image_arch == IH_ARCH_ARM &&
aarch32_support);
aarch32_support) ||
(arch == IH_ARCH_ARM && image_arch == IH_ARCH_ARM64 &&
aarch64_support);
}
/**
2.17.0
Code above is aligned with previous support but I can't see that macro in Kconfig. Also it is kind of weird that on arm you can run i386 image. It could be stopped later but that changes just suggest that this should be changed.
Thanks, Michal

On Tue, May 15, 2018 at 08:15:31AM +0200, Michal Simek wrote:
On 14.5.2018 23:33, Ramon Fried wrote:
Snapdragon bootloader needs to jump from 32bit to 64bit Allow booting in these cases when CONFIG_AARCH32_SUPPORT_ARM64 is defined.
Signed-off-by: Ramon Fried ramon.fried@gmail.com
common/image-fit.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/common/image-fit.c b/common/image-fit.c index 5b93dceae1..62dbfbdd3d 100644 --- a/common/image-fit.c +++ b/common/image-fit.c @@ -1253,17 +1253,24 @@ int fit_image_check_arch(const void *fit, int noffset, uint8_t arch) { uint8_t image_arch; int aarch32_support = 0;
int aarch64_support = 0;
#ifdef CONFIG_ARM64_SUPPORT_AARCH32 aarch32_support = 1; #endif
+#ifdef CONFIG_AARCH32_SUPPORT_ARM64
aarch64_support = 1;
+#endif
if (fit_image_get_arch(fit, noffset, &image_arch)) return 0; return (arch == image_arch) || (arch == IH_ARCH_I386 && image_arch == IH_ARCH_X86_64) || (arch == IH_ARCH_ARM64 && image_arch == IH_ARCH_ARM &&
aarch32_support);
aarch32_support) ||
(arch == IH_ARCH_ARM && image_arch == IH_ARCH_ARM64 &&
aarch64_support);
}
/**
2.17.0
Code above is aligned with previous support but I can't see that macro in Kconfig. Also it is kind of weird that on arm you can run i386 image. It could be stopped later but that changes just suggest that this should be changed.
It's the generic area where we make sure either the image is for what we're running on, or the special cases, ie aarch64 runs arm or x8664 runs i386 :)
participants (3)
-
Michal Simek
-
Ramon Fried
-
Tom Rini