Hi On 6/5/20 9:24 AM, Patrick Delaunay wrote: > From: Etienne Carriere <etienne.carri...@linaro.org> > > Fix the sequence in stm32mp1 fdt.c that disables OP-TEE resources > defined in FDT when U-boot detects OP-TEE firmware is not present. > > Before this change, helper function stm32_fdt_disable_optee() > set property status to "disabled" for the OP-TEE reserved memory > nodes but this has no impact since Linux kernel does not consider > the status property for reserved-memory subnodes. This change > make U-Boot to attempt to delete the node instead. > > Fixes: 4a1b975dac02 ("board: stm32mp1: reserve memory for OP-TEE in device > tree") > Signed-off-by: Etienne Carriere <etienne.carri...@linaro.org> > Signed-off-by: Patrick Delaunay <patrick.delau...@st.com> > --- > > arch/arm/mach-stm32mp/fdt.c | 14 +++++++++----- > 1 file changed, 9 insertions(+), 5 deletions(-) > > diff --git a/arch/arm/mach-stm32mp/fdt.c b/arch/arm/mach-stm32mp/fdt.c > index c723b223e0..959f12efe1 100644 > --- a/arch/arm/mach-stm32mp/fdt.c > +++ b/arch/arm/mach-stm32mp/fdt.c > @@ -1,6 +1,6 @@ > // SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause > /* > - * Copyright (C) 2019, STMicroelectronics - All Rights Reserved > + * Copyright (C) 2019-2020, STMicroelectronics - All Rights Reserved > */ > > #include <common.h> > @@ -224,19 +224,23 @@ static void stm32_fdt_disable_optee(void *blob) > { > int off, node; > > + /* Delete "optee" firmware node */ > off = fdt_node_offset_by_compatible(blob, -1, "linaro,optee-tz"); > if (off >= 0 && fdtdec_get_is_enabled(blob, off)) > - fdt_status_disabled(blob, off); > + fdt_del_node(blob, off); > > - /* Disabled "optee@..." reserved-memory node */ > + /* Delete "optee@..." reserved-memory node */ > off = fdt_path_offset(blob, "/reserved-memory/"); > if (off < 0) > return; > for (node = fdt_first_subnode(blob, off); > node >= 0; > node = fdt_next_subnode(blob, node)) { > - if (!strncmp(fdt_get_name(blob, node, NULL), "optee@", 6)) > - fdt_status_disabled(blob, node); > + if (strncmp(fdt_get_name(blob, node, NULL), "optee@", 6)) > + continue; > + > + if (fdt_del_node(blob, node)) > + printf("Failed to remove optee reserved-memory node\n"); > } > } >
Reviewed-by: Patrice Chotard <patrice.chot...@st.com> Thanks