uboot-layerscape: Don't fixup kaslr seed when no node
There seems to be a difference in firmware calling convention between upstream and NXP kernels. On some cpus like ls1028 it will hang on firmware secure get random when using LF uboot with upstream kernel. Instead of commenting it out, don't call get radnom seed when "kaslr-seed" is not present in device tree. Signed-off-by: Wojciech Dubowik <Wojciech.Dubowik@protonmail.ch>
This commit is contained in:
parent
ca81441769
commit
29149a9b35
1 changed files with 33 additions and 0 deletions
|
@ -0,0 +1,33 @@
|
|||
Index: uboot-layerscape-lf-6.1.1-1.0.0/arch/arm/cpu/armv8/sec_firmware.c
|
||||
===================================================================
|
||||
--- uboot-layerscape-lf-6.1.1-1.0.0.orig/arch/arm/cpu/armv8/sec_firmware.c
|
||||
+++ uboot-layerscape-lf-6.1.1-1.0.0/arch/arm/cpu/armv8/sec_firmware.c
|
||||
@@ -473,12 +473,6 @@ int fdt_fixup_kaslr(void *fdt)
|
||||
return 0;
|
||||
}
|
||||
|
||||
- ret = sec_firmware_get_random(rand, 8);
|
||||
- if (ret < 0) {
|
||||
- printf("WARNING: No random number to set kaslr-seed\n");
|
||||
- return 0;
|
||||
- }
|
||||
-
|
||||
err = fdt_check_header(fdt);
|
||||
if (err < 0) {
|
||||
printf("fdt_chosen: %s\n", fdt_strerror(err));
|
||||
@@ -490,6 +484,15 @@ int fdt_fixup_kaslr(void *fdt)
|
||||
if (nodeoffset < 0)
|
||||
return 0;
|
||||
|
||||
+ if (fdt_find_or_add_subnode(fdt, nodeoffset, "kaslr-seed"))
|
||||
+ return 0;
|
||||
+
|
||||
+ ret = sec_firmware_get_random(rand, 8);
|
||||
+ if (ret < 0) {
|
||||
+ printf("WARNING: No random number to set kaslr-seed\n");
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
err = fdt_setprop(fdt, nodeoffset, "kaslr-seed", rand,
|
||||
sizeof(rand));
|
||||
if (err < 0) {
|
Loading…
Reference in a new issue