mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-16 09:34:18 +00:00
fix(allwinner): improve DTB patching error handling
Currently, if any step of the DTB patching process fails, the whole process is aborted. However, this causes some problems: - If any step modifies the DTB (including fdt_open_into), the dcache must still be cleaned, even if some later step fails. - The DTB may need changes in multiple places; if one patch fails (for example due to missing nodes), we should still apply other patches. - Similarly, if some patch fails, we should still run fdt_pack to clean up after ourselves. Change-Id: If1af2e58e5a7edaf542354bb8a261dd1c3da1ad0 Signed-off-by: Samuel Holland <samuel@sholland.org>
This commit is contained in:
parent
3ccccc6580
commit
79808f10c3
1 changed files with 3 additions and 4 deletions
|
@ -31,7 +31,6 @@ void sunxi_prepare_dtb(void *fdt)
|
|||
if (fdt_add_reserved_memory(fdt, "tf-a@40000000", BL31_BASE,
|
||||
BL31_LIMIT - BL31_BASE)) {
|
||||
WARN("Failed to add reserved memory nodes to DT.\n");
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -39,8 +38,8 @@ void sunxi_prepare_dtb(void *fdt)
|
|||
if (ret < 0) {
|
||||
ERROR("Failed to pack devicetree at %p: error %d\n",
|
||||
fdt, ret);
|
||||
} else {
|
||||
clean_dcache_range((uintptr_t)fdt, fdt_blob_size(fdt));
|
||||
INFO("Changed devicetree.\n");
|
||||
}
|
||||
|
||||
clean_dcache_range((uintptr_t)fdt, fdt_blob_size(fdt));
|
||||
INFO("Changed devicetree.\n");
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue