If we are parsing entries from the /reserved-memory device tree path we don't want to add them again as resmem blocks at the beginning of the device tree. Therefore add another flag to indicate this. Signed-off-by: Rouven Czerwinski <r.czerwinski@xxxxxxxxxxxxxx> --- drivers/of/fdt.c | 10 +++++++--- include/of.h | 2 ++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c index 9356a92c5c..030f1233d5 100644 --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c @@ -559,6 +559,9 @@ int of_add_reserve_entry(resource_size_t start, resource_size_t end, if (flags & OF_RESERVE_ENTRY_FLAG_XN) of_reserve_map.xn |= BIT(e); + if (flags & OF_RESERVE_ENTRY_FLAG_NO_RESERVE) + of_reserve_map.noentry |= BIT(e); + return 0; } @@ -601,9 +604,10 @@ void fdt_add_reserve_map(void *__fdt) fdt_res += n; for (i = 0; i < res->num_entries; i++) { - of_write_number(&fdt_res->address, res->start[i], 2); - of_write_number(&fdt_res->size, res->end[i] - res->start[i] + 1, - 2); + if (!(res->noentry & BIT(i))) { + of_write_number(&fdt_res->address, res->start[i], 2); + of_write_number(&fdt_res->size, res->end[i] - res->start[i] + 1, 2); + } fdt_res++; } diff --git a/include/of.h b/include/of.h index 36936ecd6e..209d2898ae 100644 --- a/include/of.h +++ b/include/of.h @@ -56,9 +56,11 @@ struct of_reserve_map { uint64_t end[OF_MAX_RESERVE_MAP]; int num_entries; u16 xn; + u16 reserved_entry; }; #define OF_RESERVE_ENTRY_FLAG_XN BIT(0) +#define OF_RESERVE_ENTRY_FLAG_NO_RESERVE BIT(1) int of_add_reserve_entry(resource_size_t start, resource_size_t end, int flags); -- 2.32.0 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox